From 8cd64057bd9d7e067be0269aa85544a0f7e37c39 Mon Sep 17 00:00:00 2001 From: Cadu Date: Thu, 16 Apr 2026 09:19:23 -0300 Subject: [PATCH 1/9] feat!: emit MaybeUndefined for nullable input fields MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GraphQL distinguishes "omitted" from "explicit null" on input fields, but generated `*Input` structs flattened both into `Option` + `skip_serializing_if`. CLI handlers had to bypass the typed mutation, hand-roll the GraphQL string, and inject `serde_json::Value::Null` to clear a field. Three sites had this workaround already (`issues update --clear-parent`, `projects update --clear-{lead,start-date,target-date}`), and every new clear flag would add another. Codegen now emits nullable fields as `MaybeUndefined` (Undefined / Null / Value) and required fields as plain `T`. The `--clear-*` paths collapse to `MaybeUndefined::Null`, and all hand-rolled mutation strings are gone. Breaking change for SDK consumers — pre-1.0, `From` and `From>` make migration mechanical (`Some(x)` → `x.into()`, required fields drop the `Some`). Closes #139 --- crates/lineark-codegen/src/emit_inputs.rs | 214 +- crates/lineark-sdk/README.md | 34 +- crates/lineark-sdk/src/field_update.rs | 175 + crates/lineark-sdk/src/generated/inputs.rs | 10199 +++++++++---------- crates/lineark-sdk/src/lib.rs | 2 + crates/lineark-sdk/tests/offline.rs | 24 +- crates/lineark-sdk/tests/online.rs | 138 +- crates/lineark-test-utils/src/team.rs | 4 +- crates/lineark/src/commands/comments.rs | 6 +- crates/lineark/src/commands/documents.rs | 12 +- crates/lineark/src/commands/issues.rs | 99 +- crates/lineark/src/commands/labels.rs | 68 +- crates/lineark/src/commands/milestones.rs | 14 +- crates/lineark/src/commands/projects.rs | 97 +- crates/lineark/src/commands/relations.rs | 10 +- crates/lineark/src/commands/teams.rs | 40 +- crates/lineark/tests/online.rs | 67 +- 17 files changed, 5644 insertions(+), 5559 deletions(-) create mode 100644 crates/lineark-sdk/src/field_update.rs diff --git a/crates/lineark-codegen/src/emit_inputs.rs b/crates/lineark-codegen/src/emit_inputs.rs index 7b4cdbc..cfa805b 100644 --- a/crates/lineark-codegen/src/emit_inputs.rs +++ b/crates/lineark-codegen/src/emit_inputs.rs @@ -1,15 +1,17 @@ use crate::emit_scalars::graphql_type_to_rust; -use crate::parser::{self, GqlType, InputDef, TypeKind}; +use crate::parser::{self, FieldDef, GqlType, InputDef, TypeKind}; use heck::ToSnakeCase; use proc_macro2::TokenStream; use quote::quote; -use std::collections::HashMap; +use std::collections::{HashMap, HashSet}; pub fn emit(inputs: &[InputDef], type_kind_map: &HashMap) -> TokenStream { + let defaultable = compute_defaultable_inputs(inputs, type_kind_map); + let structs: Vec = inputs .iter() .filter(|i| !i.name.is_empty()) - .map(|i| emit_input_struct(i, type_kind_map)) + .map(|i| emit_input_struct(i, type_kind_map, &defaultable)) .collect(); quote! { @@ -19,12 +21,65 @@ pub fn emit(inputs: &[InputDef], type_kind_map: &HashMap) -> T use serde::{Deserialize, Serialize}; use super::enums::*; + use crate::field_update::MaybeUndefined; #(#structs)* } } -fn emit_input_struct(input: &InputDef, type_kind_map: &HashMap) -> TokenStream { +/// Compute which input structs can still derive `Default`. +/// +/// Required (non-null) fields now emit as plain `T` instead of `Option`, so +/// the struct only derives `Default` if every required field's Rust type also +/// has `Default`. Generated enums don't derive `Default`, and mutually recursive +/// input objects need a fixed-point pass to converge. +fn compute_defaultable_inputs( + inputs: &[InputDef], + type_kind_map: &HashMap, +) -> HashSet { + let mut defaultable: HashSet = inputs.iter().map(|i| i.name.clone()).collect(); + loop { + let snapshot = defaultable.clone(); + defaultable.retain(|name| { + let Some(input) = inputs.iter().find(|i| i.name == *name) else { + return true; + }; + input.fields.iter().all(|f| { + // Nullable fields always have Default (MaybeUndefined::Undefined). + if !matches!(f.ty, GqlType::NonNull(_)) { + return true; + } + type_has_default(&f.ty, type_kind_map, &snapshot) + }) + }); + if defaultable.len() == snapshot.len() { + break; + } + } + defaultable +} + +fn type_has_default( + ty: &GqlType, + type_kind_map: &HashMap, + defaultable_inputs: &HashSet, +) -> bool { + match ty { + GqlType::NonNull(inner) => type_has_default(inner, type_kind_map, defaultable_inputs), + GqlType::List(_) => true, + GqlType::Named(name) => match type_kind_map.get(name.as_str()) { + Some(TypeKind::Enum) => false, + Some(TypeKind::InputObject) => defaultable_inputs.contains(name), + _ => true, + }, + } +} + +fn emit_input_struct( + input: &InputDef, + type_kind_map: &HashMap, + defaultable: &HashSet, +) -> TokenStream { let name = quote::format_ident!("{}", input.name); let doc = parser::doc_comment_tokens(&input.description); @@ -39,50 +94,27 @@ fn emit_input_struct(input: &InputDef, type_kind_map: &HashMap let base = f.ty.base_name(); matches!( type_kind_map.get(base), - Some(TypeKind::Scalar) | Some(TypeKind::Enum) | Some(TypeKind::InputObject) - | Some(TypeKind::Union) | Some(TypeKind::Interface) | Some(TypeKind::Object) + Some(TypeKind::Scalar) + | Some(TypeKind::Enum) + | Some(TypeKind::InputObject) + | Some(TypeKind::Union) + | Some(TypeKind::Interface) + | Some(TypeKind::Object) | None ) }) - .map(|f| { - let field_name_str = f.name.to_snake_case(); - let original_name = &f.name; - let safe_name = parser::safe_ident(&field_name_str); - let field_ident = if safe_name.starts_with("r#") { - let raw: TokenStream = safe_name.parse().unwrap(); - raw - } else { - let ident = quote::format_ident!("{}", safe_name); - quote! { #ident } - }; - let rust_type = resolve_input_type(&f.ty, type_kind_map); - let fdoc = parser::doc_comment_tokens(&f.description); - // If the snake_case name differs from the original camelCase, add serde rename. - // We use rename_all on the struct level, so individual renames are only needed - // if to_snake_case -> to_camelCase roundtrip doesn't match. - let needs_rename = { - let roundtrip = heck::AsLowerCamelCase(&field_name_str).to_string(); - roundtrip != *original_name - }; - if needs_rename { - quote! { - #fdoc - #[serde(rename = #original_name, default, skip_serializing_if = "Option::is_none")] - pub #field_ident: #rust_type, - } - } else { - quote! { - #fdoc - #[serde(default, skip_serializing_if = "Option::is_none")] - pub #field_ident: #rust_type, - } - } - }) + .map(|f| emit_field(f, type_kind_map, &input.name)) .collect(); + let derives = if defaultable.contains(&input.name) { + quote! { #[derive(Debug, Clone, Default, Serialize, Deserialize)] } + } else { + quote! { #[derive(Debug, Clone, Serialize, Deserialize)] } + }; + quote! { #doc - #[derive(Debug, Clone, Default, Serialize, Deserialize)] + #derives #[serde(rename_all = "camelCase")] pub struct #name { #(#fields)* @@ -90,33 +122,115 @@ fn emit_input_struct(input: &InputDef, type_kind_map: &HashMap } } -/// All input fields are `Option` for easy Default derivation and the `..Default::default()` pattern. -fn resolve_input_type(ty: &GqlType, type_kind_map: &HashMap) -> TokenStream { - let inner = resolve_inner(ty, type_kind_map); - quote! { Option<#inner> } +fn emit_field( + f: &FieldDef, + type_kind_map: &HashMap, + input_name: &str, +) -> TokenStream { + let field_name_str = f.name.to_snake_case(); + let original_name = &f.name; + let safe_name = parser::safe_ident(&field_name_str); + let field_ident = if safe_name.starts_with("r#") { + let raw: TokenStream = safe_name.parse().unwrap(); + raw + } else { + let ident = quote::format_ident!("{}", safe_name); + quote! { #ident } + }; + + let is_required = matches!(f.ty, GqlType::NonNull(_)); + let rust_type = resolve_input_type(&f.ty, type_kind_map, input_name, &f.name); + let fdoc = parser::doc_comment_tokens(&f.description); + // If the snake_case name differs from the original camelCase, add serde rename. + // We use rename_all on the struct level, so individual renames are only needed + // if to_snake_case -> to_camelCase roundtrip doesn't match. + let needs_rename = { + let roundtrip = heck::AsLowerCamelCase(&field_name_str).to_string(); + roundtrip != *original_name + }; + + // Required fields are always serialized; nullable fields use MaybeUndefined's + // skip predicate so `Undefined` omits the field from the JSON payload. + let serde_attr = match (needs_rename, is_required) { + (true, true) => quote! { #[serde(rename = #original_name)] }, + (false, true) => quote! {}, + (true, false) => quote! { + #[serde(rename = #original_name, default, skip_serializing_if = "MaybeUndefined::is_undefined")] + }, + (false, false) => quote! { + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + }, + }; + + quote! { + #fdoc + #serde_attr + pub #field_ident: #rust_type, + } } -fn resolve_inner(ty: &GqlType, type_kind_map: &HashMap) -> TokenStream { +/// Resolve a GraphQL input field type into its emitted Rust tokens. +/// +/// - Nullable outer (`T`) → `MaybeUndefined` so the consumer can distinguish +/// omitted from explicit null. +/// - Required outer (`T!`) → plain `T` / `Vec` / `Box`. +fn resolve_input_type( + ty: &GqlType, + type_kind_map: &HashMap, + input_name: &str, + field_name: &str, +) -> TokenStream { + match ty { + GqlType::NonNull(inner) => resolve_payload(inner, type_kind_map, input_name, field_name), + other => { + let inner = resolve_payload(other, type_kind_map, input_name, field_name); + quote! { MaybeUndefined<#inner> } + } + } +} + +/// Resolve the "payload" type — the value that either sits inside +/// `MaybeUndefined<_>` for a nullable field or is used directly for a required +/// field. +/// +/// Also enforces Linear's schema invariant that list types have non-null +/// element types (`[T!]` / `[T!]!`, never `[T]` / `[T]!`). If Linear ever adds +/// a nullable-inner list, the maintainer should extend this function +/// deliberately rather than have codegen silently emit a mismatched type. +fn resolve_payload( + ty: &GqlType, + type_kind_map: &HashMap, + input_name: &str, + field_name: &str, +) -> TokenStream { match ty { GqlType::Named(name) => { let kind = type_kind_map.get(name.as_str()); if matches!(kind, Some(TypeKind::InputObject)) { let ident = quote::format_ident!("{}", name); - // Self-reference: input types reference other input types in the same module. + // Self- and mutual-reference: input types reference other input + // types in the same module. quote! { Box<#ident> } } else if matches!( kind, Some(TypeKind::Union) | Some(TypeKind::Interface) | Some(TypeKind::Object) ) { - // Union/interface/object types in inputs are serialized as raw JSON. quote! { serde_json::Value } } else { graphql_type_to_rust(name) } } - GqlType::NonNull(inner) => resolve_inner(inner, type_kind_map), + GqlType::NonNull(inner) => resolve_payload(inner, type_kind_map, input_name, field_name), GqlType::List(inner) => { - let elem = resolve_inner(inner, type_kind_map); + if !matches!(**inner, GqlType::NonNull(_)) { + panic!( + "codegen: input `{input_name}.{field_name}` uses a list with a nullable inner \ + type (`[T]` or `[T]!`), which is not currently supported. Linear's schema had \ + zero such occurrences when this codegen was written. Extend \ + `resolve_payload` in emit_inputs.rs to decide the Rust representation." + ); + } + let elem = resolve_payload(inner, type_kind_map, input_name, field_name); quote! { Vec<#elem> } } } diff --git a/crates/lineark-sdk/README.md b/crates/lineark-sdk/README.md index 5ae96b6..df9fde4 100644 --- a/crates/lineark-sdk/README.md +++ b/crates/lineark-sdk/README.md @@ -152,13 +152,41 @@ use lineark_sdk::generated::inputs::IssueCreateInput; use lineark_sdk::generated::types::Issue; let payload = client.issue_create::(IssueCreateInput { - title: Some("Fix the bug".to_string()), - team_id: Some("team-uuid".to_string()), - priority: Some(2), + team_id: "team-uuid".to_string(), // required + title: "Fix the bug".to_string().into(), // nullable → MaybeUndefined + priority: 2.into(), // nullable → MaybeUndefined ..Default::default() }).await?; ``` +### Three-state fields on update/create inputs + +Nullable input fields use [`MaybeUndefined`](crate::MaybeUndefined) so you +can distinguish "leave unchanged" from "explicit null" — GraphQL's nullable +inputs carry both meanings, and `Option` + `skip_serializing_if` can only +express the first. + +| Intent | Value | Wire form | +|---|---|---| +| Leave unchanged | `MaybeUndefined::Undefined` (the default) | field omitted | +| Clear on the server | `MaybeUndefined::Null` | `"field": null` | +| Set to a value | `MaybeUndefined::Value(v)` or `v.into()` | `"field": v` | + +```rust +use lineark_sdk::generated::inputs::ProjectUpdateInput; +use lineark_sdk::MaybeUndefined; + +// Rename a project AND clear its lead in a single mutation. +let input = ProjectUpdateInput { + name: "New name".to_string().into(), + lead_id: MaybeUndefined::Null, + ..Default::default() +}; +client.project_update::(input, project_id).await?; +``` + +Required fields (schema type ends with `!`) stay as plain `T` — no wrapper. + | Method | Description | |--------|-------------| | `issue_create(input)` | Create an issue | diff --git a/crates/lineark-sdk/src/field_update.rs b/crates/lineark-sdk/src/field_update.rs new file mode 100644 index 0000000..30b5d53 --- /dev/null +++ b/crates/lineark-sdk/src/field_update.rs @@ -0,0 +1,175 @@ +//! Three-state wrapper for nullable input fields. +//! +//! GraphQL distinguishes between an omitted field ("don't change this") and an +//! explicit `null` ("clear this field"). `Option` + `skip_serializing_if` +//! can only express the first. [`MaybeUndefined`] carries both, so +//! generated input types can drive the Linear API faithfully without hand-rolled +//! JSON patches on the consumer side. +//! +//! Codegen emits nullable input fields as: +//! +//! ```rust,ignore +//! #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] +//! pub lead_id: MaybeUndefined, +//! ``` +//! +//! Consumers choose one of: +//! +//! | Intent | Value | Wire form | +//! |---------------------------|--------------------------------|-----------------| +//! | Leave unchanged | `MaybeUndefined::Undefined` | field omitted | +//! | Clear on the server | `MaybeUndefined::Null` | `"field": null` | +//! | Set to a value | `MaybeUndefined::Value(v)` | `"field": v` | + +use serde::{Deserialize, Deserializer, Serialize, Serializer}; + +/// A three-state field value: undefined (omitted), null (explicit clear), or a concrete value. +/// +/// See the [module documentation](self) for the rationale and wire-format mapping. +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum MaybeUndefined { + /// Field is absent from the serialized output. + Undefined, + /// Field is serialized as JSON `null` (clears the value on the server). + Null, + /// Field is serialized as the wrapped value. + Value(T), +} + +impl MaybeUndefined { + /// Returns `true` if the value is [`MaybeUndefined::Undefined`]. + /// + /// Codegen uses this as the `skip_serializing_if` predicate so `Undefined` + /// fields are omitted from the serialized output entirely. + pub fn is_undefined(&self) -> bool { + matches!(self, Self::Undefined) + } +} + +// Manual impl (not `#[derive(Default)]`) so the `Default` bound on `T` is +// avoided — consumers need `MaybeUndefined::::default()` to work for any T, +// not just those that themselves implement `Default`. +#[allow(clippy::derivable_impls)] +impl Default for MaybeUndefined { + fn default() -> Self { + Self::Undefined + } +} + +impl From for MaybeUndefined { + fn from(v: T) -> Self { + Self::Value(v) + } +} + +impl From> for MaybeUndefined { + fn from(o: Option) -> Self { + match o { + Some(v) => Self::Value(v), + None => Self::Undefined, + } + } +} + +impl Serialize for MaybeUndefined { + fn serialize(&self, s: S) -> Result { + match self { + // Unreachable in normal use: codegen emits + // `skip_serializing_if = "MaybeUndefined::is_undefined"`, so serde + // never asks us to serialize the Undefined variant on struct fields. + Self::Undefined => s.serialize_none(), + Self::Null => s.serialize_none(), + Self::Value(v) => v.serialize(s), + } + } +} + +impl<'de, T: Deserialize<'de>> Deserialize<'de> for MaybeUndefined { + fn deserialize>(d: D) -> Result { + // Serde delivers a present field (whether JSON `null` or a value) here. + // Missing-field handling is driven by `#[serde(default)]` on the field: + // absent → Undefined via Default. + Option::::deserialize(d).map(|o| match o { + Some(v) => Self::Value(v), + None => Self::Null, + }) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use serde::{Deserialize, Serialize}; + + #[derive(Debug, Default, Serialize, Deserialize, PartialEq, Eq)] + struct Host { + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + field: MaybeUndefined, + } + + #[test] + fn default_is_undefined() { + let m: MaybeUndefined = MaybeUndefined::default(); + assert!(matches!(m, MaybeUndefined::Undefined)); + assert!(m.is_undefined()); + } + + #[test] + fn from_value_is_value() { + let m: MaybeUndefined = MaybeUndefined::from("hi".to_string()); + assert_eq!(m, MaybeUndefined::Value("hi".to_string())); + } + + #[test] + fn from_option_maps_correctly() { + let some: MaybeUndefined = MaybeUndefined::from(Some(5)); + let none: MaybeUndefined = MaybeUndefined::from(Option::::None); + assert_eq!(some, MaybeUndefined::Value(5)); + assert_eq!(none, MaybeUndefined::Undefined); + } + + #[test] + fn serialize_value_emits_value() { + let host = Host { + field: MaybeUndefined::Value("hello".to_string()), + }; + assert_eq!( + serde_json::to_string(&host).unwrap(), + r#"{"field":"hello"}"# + ); + } + + #[test] + fn serialize_null_emits_null() { + let host = Host { + field: MaybeUndefined::Null, + }; + assert_eq!(serde_json::to_string(&host).unwrap(), r#"{"field":null}"#); + } + + #[test] + fn serialize_undefined_is_skipped() { + let host = Host { + field: MaybeUndefined::Undefined, + }; + assert_eq!(serde_json::to_string(&host).unwrap(), r#"{}"#); + } + + #[test] + fn deserialize_value_is_value() { + let host: Host = serde_json::from_str(r#"{"field":"hello"}"#).unwrap(); + assert_eq!(host.field, MaybeUndefined::Value("hello".to_string())); + } + + #[test] + fn deserialize_null_is_null() { + let host: Host = serde_json::from_str(r#"{"field":null}"#).unwrap(); + assert_eq!(host.field, MaybeUndefined::Null); + } + + #[test] + fn deserialize_absent_is_undefined() { + let host: Host = serde_json::from_str(r#"{}"#).unwrap(); + assert_eq!(host.field, MaybeUndefined::Undefined); + } +} diff --git a/crates/lineark-sdk/src/generated/inputs.rs b/crates/lineark-sdk/src/generated/inputs.rs index 2e9113e..2738478 100644 --- a/crates/lineark-sdk/src/generated/inputs.rs +++ b/crates/lineark-sdk/src/generated/inputs.rs @@ -2,9300 +2,9097 @@ //! //! Generated by lineark-codegen — do not edit. use super::enums::*; +use crate::field_update::MaybeUndefined; use serde::{Deserialize, Serialize}; /// Activity collection filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ActivityCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Filters that the activity's user must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub user: MaybeUndefined>, /// Compound filters, all of which need to be matched by the activity. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the activity. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some activities. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all activities. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, } /// Activity filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ActivityFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Filters that the activity's user must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub user: MaybeUndefined>, /// Compound filters, all of which need to be matched by the activity. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the activity. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AgentActivityCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The agent session this activity belongs to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub agent_session_id: Option, + pub agent_session_id: String, /// An optional modifier that provides additional instructions on how the activity should be interpreted. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub signal: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub signal: MaybeUndefined, /// Metadata about this agent activity's signal. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub signal_metadata: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub signal_metadata: MaybeUndefined, /// `Internal` Metadata about user-provided contextual information for this agent activity. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub contextual_metadata: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub contextual_metadata: MaybeUndefined, /// The content payload of the agent activity. This object is not strictly typed. /// See for typing details. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub content: Option, + pub content: serde_json::Value, /// Whether the activity is ephemeral, and should disappear after the next activity. Defaults to false. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ephemeral: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ephemeral: MaybeUndefined, } /// `Internal` Input for creating prompt-type agent activities (created by users). -#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AgentActivityCreatePromptInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The agent session this activity belongs to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub agent_session_id: Option, + pub agent_session_id: String, /// An optional modifier that provides additional instructions on how the activity should be interpreted. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub signal: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub signal: MaybeUndefined, /// Metadata about this agent activity's signal. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub signal_metadata: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub signal_metadata: MaybeUndefined, /// `Internal` Metadata about user-provided contextual information for this agent activity. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub contextual_metadata: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub contextual_metadata: MaybeUndefined, /// The content payload of the prompt agent activity. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub content: Option>, + pub content: Box, /// The comment that contains the content of this activity. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub source_comment_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub source_comment_id: MaybeUndefined, } /// Agent activity filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AgentActivityFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the agent session ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub agent_session_id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub agent_session_id: MaybeUndefined>, /// Comparator for the agent activity's content type. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined>, /// Filters that the source comment must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub source_comment: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub source_comment: MaybeUndefined>, /// Compound filters, all of which need to be matched by the agent activity. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the agent activity. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// `Internal` Input for creating prompt-type agent activities (created by users). -#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AgentActivityPromptCreateInputContent { /// The type of activity. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + pub r#type: AgentActivityType, /// A message requesting additional information or action from user in markdown format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body: MaybeUndefined, /// `Internal` The prompt content as a ProseMirror document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body_data: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body_data: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AgentSessionCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The issue that this session will be associated with. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_id: MaybeUndefined, /// The app user (agent) to create a session for. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub app_user_id: Option, + pub app_user_id: String, /// `Internal` Serialized JSON representing the page contexts this session is related to. Used for direct chat sessions to provide context about the current page (e.g., Issue, Project). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub context: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub context: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AgentSessionCreateOnComment { /// The root comment that this session will be associated with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub comment_id: Option, + pub comment_id: String, /// The URL of an external agent-hosted page associated with this session. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_link: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_link: MaybeUndefined, /// URLs of external resources associated with this session. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_urls: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_urls: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AgentSessionCreateOnIssue { /// The issue that this session will be associated with. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_id: Option, + pub issue_id: String, /// The URL of an external agent-hosted page associated with this session. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_link: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_link: MaybeUndefined, /// URLs of external resources associated with this session. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_urls: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_urls: MaybeUndefined>>, } /// Input for an external URL associated with an agent session. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AgentSessionExternalUrlInput { /// The URL of the external resource. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub url: Option, + pub url: String, /// Label for the URL. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label: Option, + pub label: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AgentSessionUpdateExternalUrlInput { /// The URL of an external agent-hosted page associated with this session. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_link: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_link: MaybeUndefined, /// URLs of external resources associated with this session. Replaces existing URLs. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_urls: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_urls: MaybeUndefined>>, /// URLs of external resources to be added to this session. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub added_external_urls: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub added_external_urls: MaybeUndefined>>, /// URLs to be removed from this session. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub removed_external_urls: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub removed_external_urls: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AgentSessionUpdateInput { /// The URL of an external agent-hosted page associated with this session. Only updatable by the OAuth application that owns the session. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_link: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_link: MaybeUndefined, /// URLs of external resources associated with this session. Replaces existing URLs. Only updatable by the OAuth application that owns the session. If supplied, addedExternalUrls and removedExternalUrls are ignored. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_urls: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_urls: MaybeUndefined>>, /// URLs of external resources to be added to this session. Only updatable by the OAuth application that owns the session. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub added_external_urls: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub added_external_urls: MaybeUndefined>>, /// URLs to be removed from this session. Only updatable by the OAuth application that owns the session. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub removed_external_urls: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub removed_external_urls: MaybeUndefined>, /// A dynamically updated list of the agent's execution strategy. Only updatable by the OAuth application that owns the session. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub plan: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub plan: MaybeUndefined, /// `Internal` The time the agent session was dismissed. Only updatable by internal clients. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub dismissed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub dismissed_at: MaybeUndefined>, /// `Internal` User-specific state for the agent session. Only updatable by internal clients. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user_state: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub user_state: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AgentSessionUserStateInput { /// The ID of the user this state belongs to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user_id: Option, + pub user_id: String, /// The time at which the user most recently viewed the session. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub last_read_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub last_read_at: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AirbyteConfigurationInput { /// Linear export API key. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub api_key: Option, + pub api_key: String, } /// Customer approximate need count sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ApproximateNeedCountSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AsksWebPageCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The identifier of the Asks web settings this page belongs to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub asks_web_settings_id: Option, + pub asks_web_settings_id: String, /// The title of the page. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub title: Option, + pub title: String, /// The description of the page. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The auto-reply message for issue created. If not set, the default reply will be used. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_created_auto_reply: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_created_auto_reply: MaybeUndefined, /// Whether the auto-reply for issue created is enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_created_auto_reply_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_created_auto_reply_enabled: MaybeUndefined, /// The auto-reply message for issue completed. If not set, the default reply will be used. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_completed_auto_reply: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_completed_auto_reply: MaybeUndefined, /// Whether the auto-reply for issue completed is enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_completed_auto_reply_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_completed_auto_reply_enabled: MaybeUndefined, /// The auto-reply message for issue canceled. If not set, the default reply will be used. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_canceled_auto_reply: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_canceled_auto_reply: MaybeUndefined, /// Whether the auto-reply for issue canceled is enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_canceled_auto_reply_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_canceled_auto_reply_enabled: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AsksWebPageUpdateInput { /// The title of the page. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub title: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub title: MaybeUndefined, /// The description of the page. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The auto-reply message for issue created. If not set, the default reply will be used. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_created_auto_reply: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_created_auto_reply: MaybeUndefined, /// Whether the auto-reply for issue created is enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_created_auto_reply_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_created_auto_reply_enabled: MaybeUndefined, /// The auto-reply message for issue completed. If not set, the default reply will be used. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_completed_auto_reply: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_completed_auto_reply: MaybeUndefined, /// Whether the auto-reply for issue completed is enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_completed_auto_reply_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_completed_auto_reply_enabled: MaybeUndefined, /// The auto-reply message for issue canceled. If not set, the default reply will be used. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_canceled_auto_reply: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_canceled_auto_reply: MaybeUndefined, /// Whether the auto-reply for issue canceled is enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_canceled_auto_reply_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_canceled_auto_reply_enabled: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AsksWebSettingsCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The custom domain for the Asks web form. If null, the default Linear-hosted domain will be used. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub domain: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub domain: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AsksWebSettingsEmailIntakeAddressInput { /// The sender name for outgoing emails. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sender_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sender_name: MaybeUndefined, /// The email address for forwarding. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub forwarding_email_address: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub forwarding_email_address: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AsksWebSettingsUpdateInput { /// The custom domain for the Asks web form. If null, the default Linear-hosted domain will be used. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub domain: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub domain: MaybeUndefined, } /// Issue assignee sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AssigneeSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Attachment collection filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AttachmentCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the title. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub title: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub title: MaybeUndefined>, /// Comparator for the subtitle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subtitle: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subtitle: MaybeUndefined>, /// Comparator for the url. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub url: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub url: MaybeUndefined>, /// Filters that the attachments creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Comparator for the source type. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub source_type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub source_type: MaybeUndefined>, /// Compound filters, all of which need to be matched by the attachment. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the attachment. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some attachments. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all attachments. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AttachmentCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The attachment title. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub title: Option, + pub title: String, /// The attachment subtitle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subtitle: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subtitle: MaybeUndefined, /// Attachment location which is also used as an unique identifier for the attachment. If another attachment is created with the same `url` value, existing record is updated instead. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub url: Option, + pub url: String, /// The issue to associate the attachment with. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_id: Option, + pub issue_id: String, /// An icon url to display with the attachment. Should be of jpg or png format. Maximum of 1MB in size. Dimensions should be 20x20px for optimal display quality. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub icon_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub icon_url: MaybeUndefined, /// Attachment metadata object with string and number values. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub metadata: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub metadata: MaybeUndefined, /// Indicates if attachments for the same source application should be grouped in the Linear UI. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub group_by_source: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub group_by_source: MaybeUndefined, /// Create a linked comment with markdown body. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub comment_body: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub comment_body: MaybeUndefined, /// `Internal` Create a linked comment with Prosemirror body. Please use `commentBody` instead. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub comment_body_data: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub comment_body_data: MaybeUndefined, /// Create attachment as a user with the provided name. This option is only available to OAuth applications creating attachments in `actor=application` mode. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub create_as_user: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub create_as_user: MaybeUndefined, } /// Attachment filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AttachmentFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the title. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub title: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub title: MaybeUndefined>, /// Comparator for the subtitle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subtitle: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subtitle: MaybeUndefined>, /// Comparator for the url. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub url: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub url: MaybeUndefined>, /// Filters that the attachments creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Comparator for the source type. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub source_type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub source_type: MaybeUndefined>, /// Compound filters, all of which need to be matched by the attachment. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the attachment. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AttachmentUpdateInput { /// The attachment title. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub title: Option, + pub title: String, /// The attachment subtitle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subtitle: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subtitle: MaybeUndefined, /// Attachment metadata object with string and number values. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub metadata: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub metadata: MaybeUndefined, /// An icon url to display with the attachment. Should be of jpg or png format. Maximum of 1MB in size. Dimensions should be 20x20px for optimal display quality. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub icon_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub icon_url: MaybeUndefined, } /// Audit entry filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AuditEntryFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the type. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined>, /// Comparator for the IP address. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ip: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ip: MaybeUndefined>, /// Comparator for the country code. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub country_code: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub country_code: MaybeUndefined>, /// Filters that the audit entry actor must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub actor: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub actor: MaybeUndefined>, /// Compound filters, all of which need to be matched by the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Comparator for booleans. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct BooleanComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CandidateRepository { /// The full name of the repository in owner/name format (e.g., 'acme/backend'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub repository_full_name: Option, + pub repository_full_name: String, /// Hostname of the Git service (e.g., 'github.com', 'github.company.com'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub hostname: Option, + pub hostname: String, } /// Comment filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CommentCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the comment's body. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body: MaybeUndefined>, /// Filters that the comment's creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub user: MaybeUndefined>, /// Filters that the comment's issue must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue: MaybeUndefined>, /// Filters that the comment's project update must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_update: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_update: MaybeUndefined>, /// Filters that the comment parent must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent: MaybeUndefined>, /// Filters that the comment's document content must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub document_content: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub document_content: MaybeUndefined>, /// Filters that the comment's reactions must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub reactions: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub reactions: MaybeUndefined>, /// Filters that the comment's customer needs must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub needs: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub needs: MaybeUndefined>, /// Compound filters, all of which need to be matched by the comment. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the comment. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some comments. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all comments. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CommentCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The comment content in markdown format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body: MaybeUndefined, /// `Internal` The comment content as a Prosemirror document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body_data: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body_data: MaybeUndefined, /// The issue to associate the comment with. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_id: MaybeUndefined, /// The project update to associate the comment with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_update_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_update_id: MaybeUndefined, /// The initiative update to associate the comment with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_update_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_update_id: MaybeUndefined, /// The post to associate the comment with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub post_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub post_id: MaybeUndefined, /// The document content to associate the comment with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub document_content_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub document_content_id: MaybeUndefined, /// The parent comment under which to nest a current comment. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent_id: MaybeUndefined, /// Create comment as a user with the provided name. This option is only available to OAuth applications creating comments in `actor=app` mode. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub create_as_user: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub create_as_user: MaybeUndefined, /// Provide an external user avatar URL. Can only be used in conjunction with the `createAsUser` options. This option is only available to OAuth applications creating comments in `actor=app` mode. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub display_icon_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub display_icon_url: MaybeUndefined, /// The date when the comment was created (e.g. if importing from another system). Must be a date in the past. If none is provided, the backend will generate the time as now. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Flag to prevent auto subscription to the issue the comment is created on. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub do_not_subscribe_to_issue: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub do_not_subscribe_to_issue: MaybeUndefined, /// Flag to indicate this comment should be created on the issue's synced Slack comment thread. If no synced Slack comment thread exists, the mutation will fail. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub create_on_synced_slack_thread: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub create_on_synced_slack_thread: MaybeUndefined, /// The text that this comment references. Only defined for inline comments. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub quoted_text: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub quoted_text: MaybeUndefined, /// `INTERNAL` The identifiers of the users subscribing to this comment thread. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subscriber_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subscriber_ids: MaybeUndefined>, } /// Comment filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CommentFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the comment's body. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body: MaybeUndefined>, /// Filters that the comment's creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub user: MaybeUndefined>, /// Filters that the comment's issue must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue: MaybeUndefined>, /// Filters that the comment's project update must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_update: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_update: MaybeUndefined>, /// Filters that the comment parent must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent: MaybeUndefined>, /// Filters that the comment's document content must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub document_content: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub document_content: MaybeUndefined>, /// Filters that the comment's reactions must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub reactions: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub reactions: MaybeUndefined>, /// Filters that the comment's customer needs must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub needs: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub needs: MaybeUndefined>, /// Compound filters, all of which need to be matched by the comment. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the comment. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CommentUpdateInput { /// The comment content. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body: MaybeUndefined, /// `Internal` The comment content as a Prosemirror document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body_data: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body_data: MaybeUndefined, /// `INTERNAL` The user who resolved this thread. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub resolving_user_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub resolving_user_id: MaybeUndefined, /// `INTERNAL` The child comment that resolves this thread. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub resolving_comment_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub resolving_comment_id: MaybeUndefined, /// The text that this comment references. Only defined for inline comments. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub quoted_text: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub quoted_text: MaybeUndefined, /// `INTERNAL` The identifiers of the users subscribing to this comment. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subscriber_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subscriber_ids: MaybeUndefined>, /// `INTERNAL` Flag to prevent auto subscription to the issue the comment is updated on. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub do_not_subscribe_to_issue: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub do_not_subscribe_to_issue: MaybeUndefined, } /// Issue completion date sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CompletedAtSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ContactCreateInput { /// The type of support contact. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + pub r#type: String, /// The message the user sent. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub message: Option, + pub message: String, /// User's operating system. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub operating_system: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub operating_system: MaybeUndefined, /// User's browser information. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub browser: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub browser: MaybeUndefined, /// User's device information. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub device: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub device: MaybeUndefined, /// User's Linear client information. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub client_version: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub client_version: MaybeUndefined, /// How disappointed the user would be if they could no longer use Linear. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub disappointment_rating: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub disappointment_rating: MaybeUndefined, } /// `INTERNAL` Input for sending a message to the Linear Sales team. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ContactSalesCreateInput { /// Name of the person requesting information. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// Work email of the person requesting information. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub email: Option, + pub email: String, /// Size of the company. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub company_size: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub company_size: MaybeUndefined, /// The message the user sent. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub message: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub message: MaybeUndefined, /// The URL this request was sent from. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub url: MaybeUndefined, /// PostHog distinct ID for analytics correlation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub distinct_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub distinct_id: MaybeUndefined, /// Session ID for analytics correlation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub session_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub session_id: MaybeUndefined, } /// `Internal` Comparator for content. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ContentComparator { /// `Internal` Contains constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub contains: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub contains: MaybeUndefined, /// `Internal` Not-contains constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_contains: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_contains: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CreateOrganizationInput { /// The name of the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The URL key of the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub url_key: Option, + pub url_key: String, /// Whether the organization should allow email domain access. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub domain_access: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub domain_access: MaybeUndefined, /// The timezone of the organization, passed in by client. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub timezone: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub timezone: MaybeUndefined, /// JSON serialized UTM parameters associated with the creation of the workspace. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub utm: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub utm: MaybeUndefined, } /// Issue creation date sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CreatedAtSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomViewCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The description of the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The icon of the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub icon: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub icon: MaybeUndefined, /// The color of the icon of the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// The id of the team associated with the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// The id of the project associated with the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_id: MaybeUndefined, /// The id of the initiative associated with the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_id: MaybeUndefined, /// The owner of the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner_id: MaybeUndefined, /// The filter applied to issues in the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub filter_data: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub filter_data: MaybeUndefined>, /// The project filter applied to issues in the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_filter_data: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_filter_data: MaybeUndefined>, /// `ALPHA` The initiative filter applied to issues in the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_filter_data: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_filter_data: MaybeUndefined>, /// The feed item filter applied to issues in the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub feed_item_filter_data: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub feed_item_filter_data: MaybeUndefined>, /// Whether the custom view is shared with everyone in the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub shared: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub shared: MaybeUndefined, } /// Custom view creation date sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomViewCreatedAtSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Custom view filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomViewFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the custom view name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the custom view model name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub model_name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub model_name: MaybeUndefined>, /// Filters that the custom view's team must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team: MaybeUndefined>, /// Filters that the custom view creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Comparator for whether the custom view is shared. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub shared: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub shared: MaybeUndefined>, /// `INTERNAL` Filter based on whether the custom view has a facet. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_facet: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_facet: MaybeUndefined, /// Compound filters, all of which need to be matched by the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Custom view name sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomViewNameSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Custom view shared status sorting options. Ascending order puts shared views last. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomViewSharedSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomViewSortInput { /// Sort by custom view name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Sort by custom view creation date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Sort by custom view shared status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub shared: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub shared: MaybeUndefined>, /// Sort by custom view update date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomViewUpdateInput { /// The name of the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The description of the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The icon of the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub icon: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub icon: MaybeUndefined, /// The color of the icon of the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// The id of the team associated with the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// `Internal` The id of the project associated with the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_id: MaybeUndefined, /// `Internal` The id of the initiative associated with the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_id: MaybeUndefined, /// The owner of the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner_id: MaybeUndefined, /// The filter applied to issues in the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub filter_data: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub filter_data: MaybeUndefined>, /// The project filter applied to issues in the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_filter_data: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_filter_data: MaybeUndefined>, /// `ALPHA` The initiative filter applied to issues in the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_filter_data: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_filter_data: MaybeUndefined>, /// The feed item filter applied to issues in the custom view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub feed_item_filter_data: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub feed_item_filter_data: MaybeUndefined>, /// Whether the custom view is shared with everyone in the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub shared: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub shared: MaybeUndefined, } /// Custom view update date sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomViewUpdatedAtSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Issue customer count sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerCountSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The domains associated with this customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub domains: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub domains: MaybeUndefined>, /// The ids of the customers in external systems. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_ids: MaybeUndefined>, /// The ID of the Slack channel used to interact with the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_channel_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_channel_id: MaybeUndefined, /// The user who owns the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner_id: MaybeUndefined, /// The status of the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status_id: MaybeUndefined, /// The annual revenue generated by the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub revenue: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub revenue: MaybeUndefined, /// The size of the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub size: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub size: MaybeUndefined, /// The tier of the customer customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub tier_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub tier_id: MaybeUndefined, /// The URL of the customer's logo. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub logo_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub logo_url: MaybeUndefined, /// The main source of the customer, for customers with multiple sources. Must be one of externalIds. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub main_source_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub main_source_id: MaybeUndefined, } /// Customer creation date sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerCreatedAtSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Customer filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the customer name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the customer slack channel ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_channel_id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_channel_id: MaybeUndefined>, /// Comparator for the customer's domains. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub domains: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub domains: MaybeUndefined>, /// Comparator for the customer's external IDs. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_ids: MaybeUndefined>, /// Filters that the customer owner must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner: MaybeUndefined>, /// Filters that the customer's needs must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub needs: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub needs: MaybeUndefined>, /// Comparator for the customer generated revenue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub revenue: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub revenue: MaybeUndefined>, /// Comparator for the customer size. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub size: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub size: MaybeUndefined>, /// Filters that the customer's status must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status: MaybeUndefined>, /// Filters that the customer's tier must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub tier: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub tier: MaybeUndefined>, /// Compound filters, all of which need to be matched by the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Issue customer important count sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerImportantCountSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Customer needs filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerNeedCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the customer need priority. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority: MaybeUndefined>, /// Filters that the need's project must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project: MaybeUndefined>, /// Filters that the need's issue must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue: MaybeUndefined>, /// Filters that the need's comment must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub comment: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub comment: MaybeUndefined>, /// Filters that the need's customer must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer: MaybeUndefined>, /// Compound filters, all of which need to be matched by the customer needs. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the customer needs. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some customer needs. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all customer needs. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerNeedCreateFromAttachmentInput { /// The attachment this need is created from. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub attachment_id: Option, + pub attachment_id: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerNeedCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The uuid of the customer the need belongs to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_id: MaybeUndefined, /// The external ID of the customer the need belongs to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_external_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_external_id: MaybeUndefined, /// The issue this need is referencing. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_id: MaybeUndefined, /// `INTERNAL` The project this need is referencing. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_id: MaybeUndefined, /// The comment this need is referencing. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub comment_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub comment_id: MaybeUndefined, /// The attachment this need is referencing. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub attachment_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub attachment_id: MaybeUndefined, /// Whether the customer need is important or not. 0 = Not important, 1 = Important. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority: MaybeUndefined, /// The content of the need in markdown format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body: MaybeUndefined, /// `Internal` The content of the need as a Prosemirror document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body_data: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body_data: MaybeUndefined, /// Optional URL for the attachment associated with the customer need. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub attachment_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub attachment_url: MaybeUndefined, /// Create need as a user with the provided name. This option is only available to OAuth applications creating needs in `actor=app` mode. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub create_as_user: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub create_as_user: MaybeUndefined, /// Provide an external user avatar URL. Can only be used in conjunction with the `createAsUser` options. This option is only available to OAuth applications creating needs in `actor=app` mode. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub display_icon_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub display_icon_url: MaybeUndefined, } /// Customer filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerNeedFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the customer need priority. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority: MaybeUndefined>, /// Filters that the need's project must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project: MaybeUndefined>, /// Filters that the need's issue must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue: MaybeUndefined>, /// Filters that the need's comment must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub comment: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub comment: MaybeUndefined>, /// Filters that the need's customer must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer: MaybeUndefined>, /// Compound filters, all of which need to be matched by the customer need. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the customer need. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerNeedUpdateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The uuid of the customer the need belongs to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_id: MaybeUndefined, /// The external ID of the customer the need belongs to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_external_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_external_id: MaybeUndefined, /// The issue this need is referencing. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_id: MaybeUndefined, /// `INTERNAL` The project this need is referencing. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_id: MaybeUndefined, /// Whether the customer need is important or not. 0 = Not important, 1 = Important. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority: MaybeUndefined, /// Whether to also update the priority of needs from the same customer on the same issue/project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub apply_priority_to_related_needs: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub apply_priority_to_related_needs: MaybeUndefined, /// The content of the need in markdown format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body: MaybeUndefined, /// `Internal` The content of the need as a Prosemirror document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body_data: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body_data: MaybeUndefined, /// Optional URL for the attachment associated with the customer need. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub attachment_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub attachment_url: MaybeUndefined, } /// Issue customer revenue sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerRevenueSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Issue customer sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Customer sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerSortInput { /// Sort by name - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Sort by customer creation date - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Sort by owner name - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner: MaybeUndefined>, /// Sort by customer status - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status: MaybeUndefined>, /// Sort by customer generated revenue - #[serde(default, skip_serializing_if = "Option::is_none")] - pub revenue: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub revenue: MaybeUndefined>, /// Sort by customer size - #[serde(default, skip_serializing_if = "Option::is_none")] - pub size: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub size: MaybeUndefined>, /// Sort by customer tier - #[serde(default, skip_serializing_if = "Option::is_none")] - pub tier: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub tier: MaybeUndefined>, /// Sort by approximate customer need count - #[serde(default, skip_serializing_if = "Option::is_none")] - pub approximate_need_count: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub approximate_need_count: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerStatusCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The UI color of the status as a HEX string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + pub color: String, /// Description of the status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The position of the status in the workspace's customer flow. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub position: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub position: MaybeUndefined, /// The display name of the status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub display_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub display_name: MaybeUndefined, } /// Customer status filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerStatusFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the customer status name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the customer status description. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined>, /// Comparator for the customer status position. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub position: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub position: MaybeUndefined>, /// Comparator for the customer status type. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined>, /// Comparator for the customer status color. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined>, /// Compound filters, all of which need to be matched by the customer status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which needs to be matched by the customer status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Customer status sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerStatusSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerStatusUpdateInput { /// The name of the status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The UI color of the status as a HEX string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// Description of the status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The position of the status in the workspace's customer flow. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub position: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub position: MaybeUndefined, /// The display name of the status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub display_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub display_name: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerTierCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the tier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The UI color of the tier as a HEX string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + pub color: String, /// Description of the tier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The position of the tier in the workspace's customer flow. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub position: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub position: MaybeUndefined, /// The display name of the tier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub display_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub display_name: MaybeUndefined, } /// Customer tier filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerTierFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the customer tier display name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub display_name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub display_name: MaybeUndefined>, /// Comparator for the customer tier description. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined>, /// Comparator for the customer tier position. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub position: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub position: MaybeUndefined>, /// Comparator for the customer tier color. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined>, /// Compound filters, all of which need to be matched by the customer tier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which needs to be matched by the customer tier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerTierUpdateInput { /// The name of the tier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The UI color of the tier as a HEX string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// Description of the tier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The position of the tier in the workspace's customer flow. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub position: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub position: MaybeUndefined, /// The display name of the tier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub display_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub display_name: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerUpdateInput { /// The name of the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The domains associated with this customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub domains: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub domains: MaybeUndefined>, /// The ids of the customers in external systems. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_ids: MaybeUndefined>, /// The ID of the Slack channel used to interact with the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_channel_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_channel_id: MaybeUndefined, /// The user who owns the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner_id: MaybeUndefined, /// The status of the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status_id: MaybeUndefined, /// The annual revenue generated by the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub revenue: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub revenue: MaybeUndefined, /// The size of the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub size: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub size: MaybeUndefined, /// The tier of the customer customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub tier_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub tier_id: MaybeUndefined, /// The URL of the customer's logo. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub logo_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub logo_url: MaybeUndefined, /// The main source of the customer, for customers with multiple sources. Must be one of externalIds. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub main_source_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub main_source_id: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CustomerUpsertInput { /// The identifier in UUID v4 format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The domains associated with this customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub domains: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub domains: MaybeUndefined>, /// The id of the customers in external systems. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_id: MaybeUndefined, /// The ID of the Slack channel used to interact with the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_channel_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_channel_id: MaybeUndefined, /// The user who owns the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner_id: MaybeUndefined, /// The status of the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status_id: MaybeUndefined, /// The annual revenue generated by the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub revenue: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub revenue: MaybeUndefined, /// The size of the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub size: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub size: MaybeUndefined, /// The tier of the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub tier_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub tier_id: MaybeUndefined, /// The URL of the customer's logo. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub logo_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub logo_url: MaybeUndefined, /// The name tier of the customer. Will be created if doesn't exist - #[serde(default, skip_serializing_if = "Option::is_none")] - pub tier_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub tier_name: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CycleCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The custom name of the cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The description of the cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The team to associate the cycle with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + pub team_id: String, /// The start date of the cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub starts_at: Option>, + pub starts_at: chrono::DateTime, /// The end date of the cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ends_at: Option>, + pub ends_at: chrono::DateTime, /// The completion time of the cycle. If null, the cycle hasn't been completed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub completed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub completed_at: MaybeUndefined>, } /// Cycle filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CycleFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the cycle number. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub number: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub number: MaybeUndefined>, /// Comparator for the cycle name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the cycle start date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub starts_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub starts_at: MaybeUndefined>, /// Comparator for the cycle ends at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ends_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ends_at: MaybeUndefined>, /// Comparator for the cycle completed at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub completed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub completed_at: MaybeUndefined>, /// Comparator for the filtering active cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_active: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_active: MaybeUndefined>, /// Comparator for filtering for whether the cycle is currently in cooldown. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_in_cooldown: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_in_cooldown: MaybeUndefined>, /// Comparator for the filtering next cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_next: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_next: MaybeUndefined>, /// Comparator for the filtering previous cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_previous: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_previous: MaybeUndefined>, /// Comparator for the filtering future cycles. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_future: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_future: MaybeUndefined>, /// Comparator for the filtering past cycles. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_past: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_past: MaybeUndefined>, /// Filters that the cycles team must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team: MaybeUndefined>, /// Filters that the cycles issues must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issues: MaybeUndefined>, /// Comparator for the inherited cycle ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub inherited_from_id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub inherited_from_id: MaybeUndefined>, /// Compound filters, all of which need to be matched by the cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Comparator for period when issue was added to a cycle. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CyclePeriodComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, /// Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, } /// Input for shifting all cycles from a certain cycle onwards by a certain number of days #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CycleShiftAllInput { /// The cycle ID at which to start the shift. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + pub id: String, /// The number of days to shift the cycles by. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub days_to_shift: Option, + pub days_to_shift: f64, } /// Issue cycle sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CycleSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, /// When set to true, cycles will be ordered with a custom order. Current cycle comes first, followed by upcoming cycles in ASC order, followed by previous cycles in DESC order. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub current_cycle_first: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub current_cycle_first: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CycleUpdateInput { /// The custom name of the cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The description of the cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The start date of the cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub starts_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub starts_at: MaybeUndefined>, /// The end date of the cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ends_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ends_at: MaybeUndefined>, /// The end date of the cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub completed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub completed_at: MaybeUndefined>, } /// Comparator for dates. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct DateComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, /// Less-than constraint. Matches any values that are less than the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lt: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lt: MaybeUndefined, /// Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lte: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lte: MaybeUndefined, /// Greater-than constraint. Matches any values that are greater than the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub gt: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub gt: MaybeUndefined, /// Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub gte: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub gte: MaybeUndefined, } /// Issue delegate sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct DelegateSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct DeleteOrganizationInput { /// The deletion code to confirm operation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub deletion_code: Option, + pub deletion_code: String, } /// Document content history filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct DocumentContentHistoryFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct DocumentCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The title of the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub title: Option, + pub title: String, /// The icon of the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub icon: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub icon: MaybeUndefined, /// The color of the icon. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// The document content as markdown. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub content: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub content: MaybeUndefined, /// Related project for the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_id: MaybeUndefined, /// `Internal` Related initiative for the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_id: MaybeUndefined, /// `Internal` Related team for the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// Related issue for the document. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_id: MaybeUndefined, /// `Internal` Related release for the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub release_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub release_id: MaybeUndefined, /// `Internal` Related cycle for the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_id: MaybeUndefined, /// `Internal` The resource folder containing the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub resource_folder_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub resource_folder_id: MaybeUndefined, /// The ID of the last template applied to the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub last_applied_template_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub last_applied_template_id: MaybeUndefined, /// The order of the item in the resources list. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, /// `INTERNAL` The identifiers of the users subscribing to this document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subscriber_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subscriber_ids: MaybeUndefined>, } /// Document filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct DocumentFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the document title. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub title: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub title: MaybeUndefined>, /// Comparator for the document slug ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slug_id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slug_id: MaybeUndefined>, /// Filters that the document's creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Filters that the document's project must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project: MaybeUndefined>, /// Filters that the document's issue must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue: MaybeUndefined>, /// Filters that the document's initiative must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative: MaybeUndefined>, /// Compound filters, all of which need to be matched by the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct DocumentUpdateInput { /// The title of the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub title: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub title: MaybeUndefined, /// The icon of the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub icon: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub icon: MaybeUndefined, /// The color of the icon. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// The document content as markdown. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub content: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub content: MaybeUndefined, /// Related project for the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_id: MaybeUndefined, /// `Internal` Related initiative for the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_id: MaybeUndefined, /// `Internal` Related team for the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// Related issue for the document. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_id: MaybeUndefined, /// `Internal` Related release for the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub release_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub release_id: MaybeUndefined, /// `Internal` Related cycle for the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_id: MaybeUndefined, /// `Internal` The resource folder containing the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub resource_folder_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub resource_folder_id: MaybeUndefined, /// The ID of the last template applied to the document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub last_applied_template_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub last_applied_template_id: MaybeUndefined, /// The time at which the document was hidden. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub hidden_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub hidden_at: MaybeUndefined>, /// The order of the item in the resources list. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, /// Whether the document has been trashed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub trashed: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub trashed: MaybeUndefined, /// `INTERNAL` The identifiers of the users subscribing to this document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subscriber_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subscriber_ids: MaybeUndefined>, } /// Issue due date sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct DueDateSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct EmailIntakeAddressCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The type of the email address. If not provided, the backend will default to team or template. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined, /// The email address used to forward emails to the intake address. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub forwarding_email_address: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub forwarding_email_address: MaybeUndefined, /// The name to be used for outgoing emails. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sender_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sender_name: MaybeUndefined, /// The identifier or key of the team this email address will intake issues for. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// The identifier of the template this email address will intake issues for. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub template_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub template_id: MaybeUndefined, /// Whether email replies are enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub replies_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub replies_enabled: MaybeUndefined, /// Whether the commenter's name is included in the email replies. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub use_user_names_in_replies: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub use_user_names_in_replies: MaybeUndefined, /// Whether the issue created auto-reply is enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_created_auto_reply_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_created_auto_reply_enabled: MaybeUndefined, /// The auto-reply message for issue created. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_created_auto_reply: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_created_auto_reply: MaybeUndefined, /// Whether the issue completed auto-reply is enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_completed_auto_reply_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_completed_auto_reply_enabled: MaybeUndefined, /// The auto-reply message for issue completed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_completed_auto_reply: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_completed_auto_reply: MaybeUndefined, /// Whether the issue canceled auto-reply is enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_canceled_auto_reply_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_canceled_auto_reply_enabled: MaybeUndefined, /// The auto-reply message for issue canceled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_canceled_auto_reply: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_canceled_auto_reply: MaybeUndefined, /// Whether customer requests are enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_requests_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_requests_enabled: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct EmailIntakeAddressUpdateInput { /// Whether the email address is currently enabled. If set to false, the email address will be disabled and no longer accept incoming emails. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub enabled: MaybeUndefined, /// The email address used to forward emails to the intake address. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub forwarding_email_address: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub forwarding_email_address: MaybeUndefined, /// The name to be used for outgoing emails. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sender_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sender_name: MaybeUndefined, /// The identifier or key of the team this email address will intake issues for. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// The identifier of the template this email address will intake issues for. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub template_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub template_id: MaybeUndefined, /// Whether email replies are enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub replies_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub replies_enabled: MaybeUndefined, /// Whether the commenter's name is included in the email replies. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub use_user_names_in_replies: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub use_user_names_in_replies: MaybeUndefined, /// Whether the issue created auto-reply is enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_created_auto_reply_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_created_auto_reply_enabled: MaybeUndefined, /// The auto-reply message for issue created. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_created_auto_reply: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_created_auto_reply: MaybeUndefined, /// Whether the issue completed auto-reply is enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_completed_auto_reply_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_completed_auto_reply_enabled: MaybeUndefined, /// Custom auto-reply message for issue completed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_completed_auto_reply: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_completed_auto_reply: MaybeUndefined, /// Whether the issue canceled auto-reply is enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_canceled_auto_reply_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_canceled_auto_reply_enabled: MaybeUndefined, /// Custom auto-reply message for issue canceled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_canceled_auto_reply: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_canceled_auto_reply: MaybeUndefined, /// Whether customer requests are enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_requests_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_requests_enabled: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct EmailUnsubscribeInput { /// Email type to unsubscribe from. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + pub r#type: String, /// The user's email validation token. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub token: Option, + pub token: String, /// The identifier of the user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user_id: Option, + pub user_id: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct EmailUserAccountAuthChallengeInput { /// The email for which to generate the magic login code. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub email: Option, + pub email: String, /// Whether the login was requested from the desktop app. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_desktop: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_desktop: MaybeUndefined, /// Auth code for the client initiating the sequence. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub client_auth_code: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub client_auth_code: MaybeUndefined, /// The organization invite link to associate with this authentication. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub invite_link: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub invite_link: MaybeUndefined, /// Whether to only return the login code. This is used by mobile apps to skip showing the login link. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub login_code_only: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub login_code_only: MaybeUndefined, /// Response from the login challenge. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub challenge_response: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub challenge_response: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct EmojiCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the custom emoji. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The URL for the emoji. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub url: Option, + pub url: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct EntityExternalLinkCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The URL of the link. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub url: Option, + pub url: String, /// The label for the link. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label: Option, + pub label: String, /// The initiative associated with the link. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_id: MaybeUndefined, /// The project associated with the link. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_id: MaybeUndefined, /// `Internal` The team associated with the link. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// `Internal` The release associated with the link. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub release_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub release_id: MaybeUndefined, /// `Internal` The cycle associated with the link. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_id: MaybeUndefined, /// `Internal` The resource folder containing the link. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub resource_folder_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub resource_folder_id: MaybeUndefined, /// The order of the item in the entities resources list. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct EntityExternalLinkUpdateInput { /// The URL of the link. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub url: MaybeUndefined, /// The label for the link. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub label: MaybeUndefined, /// The order of the item in the entities resources list. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, /// `Internal` The resource folder containing the link. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub resource_folder_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub resource_folder_id: MaybeUndefined, } /// Comparator for estimates. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct EstimateComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, /// Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Less-than constraint. Matches any values that are less than the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lt: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lt: MaybeUndefined, /// Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lte: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lte: MaybeUndefined, /// Greater-than constraint. Matches any values that are greater than the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub gt: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub gt: MaybeUndefined, /// Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub gte: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub gte: MaybeUndefined, /// Compound filters, all of which need to be matched by the estimate. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the estimate. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, } /// Issue estimate sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct EstimateSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct FavoriteCreateInput { /// The identifier. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the favorite folder. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub folder_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub folder_name: MaybeUndefined, /// The parent folder of the favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent_id: MaybeUndefined, /// The identifier of the issue to favorite. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_id: MaybeUndefined, /// The identifier of the facet to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub facet_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub facet_id: MaybeUndefined, /// The identifier of the project to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_id: MaybeUndefined, /// The tab of the project to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_tab: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_tab: MaybeUndefined, /// The type of the predefined view to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub predefined_view_type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub predefined_view_type: MaybeUndefined, /// The identifier of team for the predefined view to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub predefined_view_team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub predefined_view_team_id: MaybeUndefined, /// The identifier of the cycle to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_id: MaybeUndefined, /// The identifier of the custom view to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub custom_view_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub custom_view_id: MaybeUndefined, /// The identifier of the document to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub document_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub document_id: MaybeUndefined, /// `INTERNAL` The identifier of the initiative to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_id: MaybeUndefined, /// The tab of the initiative to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_tab: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_tab: MaybeUndefined, /// The identifier of the label to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub label_id: MaybeUndefined, /// The identifier of the label to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_label_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_label_id: MaybeUndefined, /// The identifier of the user to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub user_id: MaybeUndefined, /// The position of the item in the favorites list. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, /// The identifier of the customer to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_id: MaybeUndefined, /// The identifier of the dashboard to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub dashboard_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub dashboard_id: MaybeUndefined, /// The identifier of the pull request to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pull_request_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub pull_request_id: MaybeUndefined, /// `ALPHA` The identifier of the release to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub release_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub release_id: MaybeUndefined, /// `ALPHA` The identifier of the release pipeline to favorite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub release_pipeline_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub release_pipeline_id: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct FavoriteUpdateInput { /// The position of the item in the favorites list. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, /// The identifier (in UUID v4 format) of the folder to move the favorite under. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent_id: MaybeUndefined, /// The name of the favorite folder. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub folder_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub folder_name: MaybeUndefined, } /// Feed item filtering options #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct FeedItemFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Filters that the feed item author must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub author: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub author: MaybeUndefined>, /// Comparator for the update type: initiative, project, team - #[serde(default, skip_serializing_if = "Option::is_none")] - pub update_type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub update_type: MaybeUndefined>, /// Comparator for the project or initiative update health: onTrack, atRisk, offTrack - #[serde(default, skip_serializing_if = "Option::is_none")] - pub update_health: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub update_health: MaybeUndefined>, /// Filters that the feed item's project update must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_update: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_update: MaybeUndefined>, /// Filters that the related feed item initiatives must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub related_initiatives: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub related_initiatives: MaybeUndefined>, /// Filters that the related feed item team must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub related_teams: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub related_teams: MaybeUndefined>, /// Compound filters, all of which need to be matched by the feed item. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the feed item. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct FrontSettingsInput { /// Whether an internal message should be added when a Linear issue changes status (for status types except completed or canceled). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub send_note_on_status_change: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub send_note_on_status_change: MaybeUndefined, /// Whether an internal message should be added when someone comments on an issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub send_note_on_comment: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub send_note_on_comment: MaybeUndefined, /// Whether a ticket should be automatically reopened when its linked Linear issue is completed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_completion: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_completion: MaybeUndefined, /// Whether a ticket should be automatically reopened when its linked Linear issue is cancelled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_cancellation: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_cancellation: MaybeUndefined, /// Whether a ticket should be automatically reopened when a comment is posted on its linked Linear issue - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_comment: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_comment: MaybeUndefined, /// `ALPHA` Whether customer and customer requests should not be automatically created when conversations are linked to a Linear issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub disable_customer_requests_auto_creation: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub disable_customer_requests_auto_creation: MaybeUndefined, /// Whether a ticket should be automatically reopened when its linked Linear project is completed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_project_completion: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_project_completion: MaybeUndefined, /// Whether a ticket should be automatically reopened when its linked Linear project is cancelled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_project_cancellation: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_project_cancellation: MaybeUndefined, /// Whether Linear Agent should be enabled for this integration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enable_ai_intake: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub enable_ai_intake: MaybeUndefined, } -#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct GitAutomationStateCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The team associated with the automation state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + pub team_id: String, /// The associated workflow state. If null, will override default behaviour and take no action. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub state_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub state_id: MaybeUndefined, /// The associated target branch. If null, all branches are targeted. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_branch_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_branch_id: MaybeUndefined, /// The event that triggers the automation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub event: Option, + pub event: GitAutomationStates, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct GitAutomationStateUpdateInput { /// The associated workflow state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub state_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub state_id: MaybeUndefined, /// The associated target branch. If null, all branches are targeted. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_branch_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_branch_id: MaybeUndefined, /// The event that triggers the automation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub event: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub event: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct GitAutomationTargetBranchCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The team associated with the Git target branch automation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + pub team_id: String, /// The target branch pattern. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub branch_pattern: Option, + pub branch_pattern: String, /// Whether the branch pattern is a regular expression. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_regex: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_regex: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct GitAutomationTargetBranchUpdateInput { /// The target branch pattern. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub branch_pattern: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub branch_pattern: MaybeUndefined, /// Whether the branch pattern is a regular expression. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_regex: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_regex: MaybeUndefined, } -#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct GitHubImportSettingsInput { /// The GitHub organization's name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub org_login: Option, + pub org_login: String, /// The avatar URL for the GitHub organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub org_avatar_url: Option, + pub org_avatar_url: String, /// The names of the repositories connected for the GitHub integration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub repositories: Option>>, + pub repositories: Vec>, /// A map storing all available issue labels per repository - #[serde(default, skip_serializing_if = "Option::is_none")] - pub labels: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub labels: MaybeUndefined, /// The type of Github org - #[serde(default, skip_serializing_if = "Option::is_none")] - pub org_type: Option, + pub org_type: GithubOrgType, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct GitHubPersonalSettingsInput { /// The GitHub user's name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub login: Option, + pub login: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct GitHubRepoInput { /// The GitHub repo id. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + pub id: f64, /// The full name of the repository. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub full_name: Option, + pub full_name: String, /// Whether the repository is archived. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub archived: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub archived: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct GitHubRepoMappingInput { /// The unique identifier for this mapping. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + pub id: String, /// The Linear team id to map to the given project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub linear_team_id: Option, + pub linear_team_id: String, /// The GitHub repo id. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub git_hub_repo_id: Option, + pub git_hub_repo_id: f64, /// Labels to filter incoming GitHub issue creation by. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub git_hub_labels: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub git_hub_labels: MaybeUndefined>, /// Whether the sync for this mapping is bidirectional. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub bidirectional: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub bidirectional: MaybeUndefined, /// Whether this mapping is the default one for issue creation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub default: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub default: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct GitHubSettingsInput { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pull_request_review_tool: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub pull_request_review_tool: MaybeUndefined, /// The avatar URL for the GitHub organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub org_avatar_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub org_avatar_url: MaybeUndefined, /// The GitHub organization's name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub org_login: Option, + pub org_login: String, /// The names of the repositories connected for the GitHub integration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub repositories: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub repositories: MaybeUndefined>>, /// Mapping of team to repository for syncing. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub repositories_mapping: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub repositories_mapping: MaybeUndefined>>, /// The type of Github org - #[serde(default, skip_serializing_if = "Option::is_none")] - pub org_type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub org_type: MaybeUndefined, /// Whether the integration has code access - #[serde(default, skip_serializing_if = "Option::is_none")] - pub code_access: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub code_access: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct GitLabSettingsInput { /// The self-hosted URL of the GitLab instance. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub url: MaybeUndefined, /// Whether the token is limited to a read-only scope. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub readonly: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub readonly: MaybeUndefined, /// The ISO timestamp the GitLab access token expires. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub expires_at: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub expires_at: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct GongRecordingImportConfigInput { /// The team ID to create issues in for imported recordings. Set to null to disable import. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct GongSettingsInput { /// Configuration for recording import. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub import_config: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub import_config: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct GoogleSheetsExportSettings { /// Whether the export is enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub enabled: MaybeUndefined, /// The ID of the exported Google Sheet. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub spreadsheet_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub spreadsheet_id: MaybeUndefined, /// The URL of the exported Google Sheet. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub spreadsheet_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub spreadsheet_url: MaybeUndefined, /// The ID of the target sheet (tab) within the Google Sheet. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sheet_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sheet_id: MaybeUndefined, /// The date of the most recent export. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct GoogleSheetsSettingsInput { /// `Deprecated` The ID of the exported Google Sheet. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub spreadsheet_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub spreadsheet_id: MaybeUndefined, /// `Deprecated` The URL of the exported Google Sheet. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub spreadsheet_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub spreadsheet_url: MaybeUndefined, /// `Deprecated` The ID of the target sheet (tab) within the Google Sheet. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sheet_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sheet_id: MaybeUndefined, /// `Deprecated` The date of the most recent export. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_issues_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_issues_at: MaybeUndefined>, /// The export settings for issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue: MaybeUndefined>, /// The export settings for projects. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project: MaybeUndefined>, /// The export settings for initiatives. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct GoogleUserAccountAuthInput { /// Code returned from Google's OAuth flow. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub code: Option, + pub code: String, /// The URI to redirect the user to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub redirect_uri: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub redirect_uri: MaybeUndefined, /// The timezone of the user's browser. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub timezone: Option, + pub timezone: String, /// An optional invite link for an organization used to populate available organizations. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub invite_link: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub invite_link: MaybeUndefined, /// An optional parameter to disable new user signup and force login. Default: false. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub disallow_signup: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub disallow_signup: MaybeUndefined, } /// Comparator for identifiers. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IDComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InheritanceEntityMapping { /// Mapping of the WorkflowState ID to the new WorkflowState ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub workflow_states: Option, + pub workflow_states: serde_json::Value, /// Mapping of the IssueLabel ID to the new IssueLabel name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_labels: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_labels: MaybeUndefined, } /// Initiative collection filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the initiative name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the initiative slug ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slug_id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slug_id: MaybeUndefined>, /// Filters that the initiative creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Comparator for the initiative status: Planned, Active, Completed - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status: MaybeUndefined>, /// Filters that the initiative teams must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub teams: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub teams: MaybeUndefined>, /// Filters that the initiative owner must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner: MaybeUndefined>, /// Comparator for the initiative target date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined>, /// Comparator for the initiative health: onTrack, atRisk, offTrack - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health: MaybeUndefined>, /// Comparator for the initiative health (with age): onTrack, atRisk, offTrack, outdated, noUpdate - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health_with_age: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health_with_age: MaybeUndefined>, /// Comparator for the initiative activity type. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub activity_type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub activity_type: MaybeUndefined>, /// Filters that the initiative must be an ancestor of. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ancestors: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ancestors: MaybeUndefined>, /// Compound filters, all of which need to be matched by the initiative. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the initiative. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some initiatives. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all initiatives. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, } /// The properties of the initiative to create. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the initiative. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The description of the initiative. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The owner of the initiative. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner_id: MaybeUndefined, /// The sort order of the initiative within the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, /// The initiative's color. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// The initiative's icon. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub icon: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub icon: MaybeUndefined, /// The initiative's status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status: MaybeUndefined, /// The estimated completion date of the initiative. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined, /// The resolution of the initiative's estimated completion date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date_resolution: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date_resolution: MaybeUndefined, /// The initiative's content in markdown format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub content: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub content: MaybeUndefined, } /// Initiative creation date sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeCreatedAtSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Initiative filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the initiative name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the initiative slug ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slug_id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slug_id: MaybeUndefined>, /// Filters that the initiative creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Comparator for the initiative status: Planned, Active, Completed - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status: MaybeUndefined>, /// Filters that the initiative teams must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub teams: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub teams: MaybeUndefined>, /// Filters that the initiative owner must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner: MaybeUndefined>, /// Comparator for the initiative target date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined>, /// Comparator for the initiative health: onTrack, atRisk, offTrack - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health: MaybeUndefined>, /// Comparator for the initiative health (with age): onTrack, atRisk, offTrack, outdated, noUpdate - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health_with_age: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health_with_age: MaybeUndefined>, /// Comparator for the initiative activity type. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub activity_type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub activity_type: MaybeUndefined>, /// Filters that the initiative must be an ancestor of. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ancestors: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ancestors: MaybeUndefined>, /// Compound filters, all of which need to be matched by the initiative. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the initiative. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Initiative health sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeHealthSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Initiative health update date sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeHealthUpdatedAtSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Initiative manual sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeManualSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Initiative name sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeNameSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Initiative owner sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeOwnerSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeRelationCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The identifier of the parent initiative. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_id: Option, + pub initiative_id: String, /// The identifier of the child initiative. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub related_initiative_id: Option, + pub related_initiative_id: String, /// The sort order of the initiative relation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, } /// The properties of the initiativeRelation to update. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeRelationUpdateInput { /// The sort order of the initiative relation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, } /// Initiative sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeSortInput { /// Sort by initiative name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Sort by manual order. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub manual: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub manual: MaybeUndefined>, /// Sort by initiative update date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Sort by initiative creation date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Sort by initiative target date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined>, /// Sort by initiative health status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health: MaybeUndefined>, /// Sort by initiative health update date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health_updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health_updated_at: MaybeUndefined>, /// Sort by initiative owner name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner: MaybeUndefined>, } /// Initiative target date sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeTargetDateSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// The properties of the initiativeToProject to create. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeToProjectCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The identifier of the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + pub project_id: String, /// The identifier of the initiative. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_id: Option, + pub initiative_id: String, /// The sort order for the project within its organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, } /// The properties of the initiativeToProject to update. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeToProjectUpdateInput { /// The sort order for the project within its organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeUpdateCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The content of the update in markdown format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body: MaybeUndefined, /// `Internal` The content of the update as a Prosemirror document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body_data: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body_data: MaybeUndefined, /// The health of the initiative at the time of the update. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health: MaybeUndefined, /// The initiative to associate the update with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_id: Option, + pub initiative_id: String, /// Whether the diff between the current update and the previous one should be hidden. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_diff_hidden: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_diff_hidden: MaybeUndefined, } /// Options for filtering initiative updates. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeUpdateFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Filters that the initiative update creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub user: MaybeUndefined>, /// Filters that the initiative update initiative must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative: MaybeUndefined>, /// Filters that the initiative updates reactions must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub reactions: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub reactions: MaybeUndefined>, /// Compound filters, all of which need to be matched by the InitiativeUpdate. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the InitiativeUpdate. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// The properties of the initiative to update. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeUpdateInput { /// The name of the initiative. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The description of the initiative. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The owner of the initiative. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner_id: MaybeUndefined, /// The sort order of the initiative within the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, /// The initiative's color. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// The initiative's icon. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub icon: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub icon: MaybeUndefined, /// The estimated completion date of the initiative. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined, /// The initiative's status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status: MaybeUndefined, /// The resolution of the initiative's estimated completion date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date_resolution: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date_resolution: MaybeUndefined, /// Whether the initiative has been trashed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub trashed: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub trashed: MaybeUndefined, /// The initiative's content in markdown format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub content: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub content: MaybeUndefined, /// The n-weekly frequency at which to prompt for updates. When not set, reminders are inherited from workspace. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub update_reminder_frequency_in_weeks: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub update_reminder_frequency_in_weeks: MaybeUndefined, /// The frequency at which to prompt for updates. When not set, reminders are inherited from workspace. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub update_reminder_frequency: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub update_reminder_frequency: MaybeUndefined, /// The frequency resolution. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub frequency_resolution: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub frequency_resolution: MaybeUndefined, /// The day at which to prompt for updates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub update_reminders_day: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub update_reminders_day: MaybeUndefined, /// The hour at which to prompt for updates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub update_reminders_hour: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub update_reminders_hour: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeUpdateUpdateInput { /// The content of the update in markdown format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body: MaybeUndefined, /// The content of the update as a Prosemirror document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body_data: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body_data: MaybeUndefined, /// The health of the initiative at the time of the update. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health: MaybeUndefined, /// Whether the diff between the current update and the previous one should be hidden. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_diff_hidden: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_diff_hidden: MaybeUndefined, } /// Initiative update date sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct InitiativeUpdatedAtSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IntegrationCustomerDataAttributesRefreshInput { /// The integration service to refresh customer data attributes from. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub service: Option, + pub service: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IntegrationRequestInput { /// Email associated with the request. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub email: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub email: MaybeUndefined, /// Name of the requested integration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IntegrationSettingsInput { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_asks: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_post: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_project_post: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_initiative_post: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_custom_view_notifications: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_org_project_updates_post: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_org_initiative_updates_post: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub google_sheets: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub git_hub: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub git_hub_import: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub git_hub_personal: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub git_lab: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sentry: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub zendesk: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub intercom: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub front: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub gong: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub microsoft_teams: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub jira: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub notion: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub opsgenie: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pager_duty: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub launch_darkly: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub jira_personal: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub salesforce: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_asks: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_post: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_project_post: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_initiative_post: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_custom_view_notifications: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_org_project_updates_post: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_org_initiative_updates_post: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub google_sheets: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub git_hub: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub git_hub_import: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub git_hub_personal: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub git_lab: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sentry: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub zendesk: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub intercom: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub front: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub gong: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub microsoft_teams: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub jira: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub notion: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub opsgenie: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub pager_duty: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub launch_darkly: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub jira_personal: MaybeUndefined>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub salesforce: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IntegrationTemplateCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The identifier of the integration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub integration_id: Option, + pub integration_id: String, /// The identifier of the template. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub template_id: Option, + pub template_id: String, /// The foreign identifier in the other service. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub foreign_entity_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub foreign_entity_id: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IntegrationUpdateInput { /// The settings to update. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub settings: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub settings: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IntegrationsSettingsCreateInput { /// Whether to send a Slack message when a new issue is created for the project or the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_created: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_created: MaybeUndefined, /// Whether to send a Slack message when an issue is added to a view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_added_to_view: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_added_to_view: MaybeUndefined, /// Whether to send a Slack message when a comment is created on any of the project or team's issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_new_comment: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_new_comment: MaybeUndefined, /// Whether to send a Slack message when any of the project or team's issues change to completed or cancelled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_status_changed_done: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_status_changed_done: MaybeUndefined, /// Whether to send a Slack message when any of the project or team's issues has a change in status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_status_changed_all: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_status_changed_all: MaybeUndefined, /// Whether to send a Slack message when a project update is created. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_project_update_created: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_project_update_created: MaybeUndefined, /// Whether to send a Slack message when a project update is created to team channels. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_project_update_created_to_team: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_project_update_created_to_team: MaybeUndefined, /// Whether to send a Slack message when a project update is created to workspace channel. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_project_update_created_to_workspace: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_project_update_created_to_workspace: MaybeUndefined, /// Whether to send a Slack message when an initiative update is created. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_initiative_update_created: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_initiative_update_created: MaybeUndefined, /// Whether to send a Slack message when a new issue is added to triage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_added_to_triage: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_added_to_triage: MaybeUndefined, /// Whether to send a Slack message when an SLA is at high risk. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_sla_high_risk: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_sla_high_risk: MaybeUndefined, /// Whether to receive notification when an SLA has breached on Slack. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_sla_breached: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_sla_breached: MaybeUndefined, /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The identifier of the team to create settings for. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// The identifier of the project to create settings for. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_id: MaybeUndefined, /// The identifier of the initiative to create settings for. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_id: MaybeUndefined, /// The identifier of the custom view to create settings for. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub custom_view_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub custom_view_id: MaybeUndefined, /// The type of view to which the integration settings context is associated with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub context_view_type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub context_view_type: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IntegrationsSettingsUpdateInput { /// Whether to send a Slack message when a new issue is created for the project or the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_created: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_created: MaybeUndefined, /// Whether to send a Slack message when an issue is added to a view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_added_to_view: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_added_to_view: MaybeUndefined, /// Whether to send a Slack message when a comment is created on any of the project or team's issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_new_comment: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_new_comment: MaybeUndefined, /// Whether to send a Slack message when any of the project or team's issues change to completed or cancelled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_status_changed_done: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_status_changed_done: MaybeUndefined, /// Whether to send a Slack message when any of the project or team's issues has a change in status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_status_changed_all: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_status_changed_all: MaybeUndefined, /// Whether to send a Slack message when a project update is created. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_project_update_created: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_project_update_created: MaybeUndefined, /// Whether to send a Slack message when a project update is created to team channels. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_project_update_created_to_team: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_project_update_created_to_team: MaybeUndefined, /// Whether to send a Slack message when a project update is created to workspace channel. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_project_update_created_to_workspace: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_project_update_created_to_workspace: MaybeUndefined, /// Whether to send a Slack message when an initiative update is created. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_initiative_update_created: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_initiative_update_created: MaybeUndefined, /// Whether to send a Slack message when a new issue is added to triage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_added_to_triage: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_added_to_triage: MaybeUndefined, /// Whether to send a Slack message when an SLA is at high risk. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_sla_high_risk: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_sla_high_risk: MaybeUndefined, /// Whether to receive notification when an SLA has breached on Slack. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_sla_breached: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_sla_breached: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IntercomSettingsInput { /// Whether an internal message should be added when a Linear issue changes status (for status types except completed or canceled). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub send_note_on_status_change: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub send_note_on_status_change: MaybeUndefined, /// Whether an internal message should be added when someone comments on an issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub send_note_on_comment: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub send_note_on_comment: MaybeUndefined, /// Whether a ticket should be automatically reopened when its linked Linear issue is completed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_completion: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_completion: MaybeUndefined, /// Whether a ticket should be automatically reopened when its linked Linear issue is cancelled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_cancellation: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_cancellation: MaybeUndefined, /// Whether a ticket should be automatically reopened when a comment is posted on its linked Linear issue - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_comment: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_comment: MaybeUndefined, /// `ALPHA` Whether customer and customer requests should not be automatically created when conversations are linked to a Linear issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub disable_customer_requests_auto_creation: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub disable_customer_requests_auto_creation: MaybeUndefined, /// Whether a ticket should be automatically reopened when its linked Linear project is completed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_project_completion: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_project_completion: MaybeUndefined, /// Whether a ticket should be automatically reopened when its linked Linear project is cancelled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_project_cancellation: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_project_cancellation: MaybeUndefined, /// Whether Linear Agent should be enabled for this integration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enable_ai_intake: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub enable_ai_intake: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueBatchCreateInput { /// The issues to create. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issues: Option>>, + pub issues: Vec>, } /// Issue filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the issues number. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub number: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub number: MaybeUndefined>, /// Comparator for the issues title. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub title: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub title: MaybeUndefined>, /// Comparator for the issues description. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined>, /// Comparator for the issues priority. 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority: MaybeUndefined>, /// Comparator for the issues estimate. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub estimate: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub estimate: MaybeUndefined>, /// Comparator for the issues started at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub started_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub started_at: MaybeUndefined>, /// Comparator for the issues triaged at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub triaged_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub triaged_at: MaybeUndefined>, /// Comparator for the issues completed at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub completed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub completed_at: MaybeUndefined>, /// Comparator for the issues canceled at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub canceled_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub canceled_at: MaybeUndefined>, /// Comparator for the issues archived at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub archived_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub archived_at: MaybeUndefined>, /// Comparator for the issues auto closed at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_closed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_closed_at: MaybeUndefined>, /// Comparator for the issues auto archived at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_archived_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_archived_at: MaybeUndefined>, /// Comparator for the issues added to cycle at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub added_to_cycle_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub added_to_cycle_at: MaybeUndefined>, /// Comparator for the period when issue was added to a cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub added_to_cycle_period: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub added_to_cycle_period: MaybeUndefined>, /// Comparator for the issues due date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub due_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub due_date: MaybeUndefined>, /// `Internal` Comparator for the issue's accumulatedStateUpdatedAt date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub accumulated_state_updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub accumulated_state_updated_at: MaybeUndefined>, /// Comparator for the issues snoozed until date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub snoozed_until_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub snoozed_until_at: MaybeUndefined>, /// Filters that the issues assignee must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub assignee: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub assignee: MaybeUndefined>, /// Filters that the issue's delegated agent must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub delegate: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub delegate: MaybeUndefined>, /// Filters that the last applied template must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub last_applied_template: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub last_applied_template: MaybeUndefined>, /// `ALPHA` Filters that the recurring issue template must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub recurring_issue_template: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub recurring_issue_template: MaybeUndefined>, /// Filters that the source must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub source_metadata: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub source_metadata: MaybeUndefined>, /// Filters that the issues creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Filters that the issue parent must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent: MaybeUndefined>, /// Filters that the issues snoozer must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub snoozed_by: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub snoozed_by: MaybeUndefined>, /// Filters that issue labels must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub labels: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub labels: MaybeUndefined>, /// Filters that issue subscribers must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subscribers: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subscribers: MaybeUndefined>, /// Comparator for filtering issues which have been shared with users outside of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_shared_users: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_shared_users: MaybeUndefined>, /// Filters that users the issue has been shared with must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub shared_with: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub shared_with: MaybeUndefined>, /// Filters that the issues team must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team: MaybeUndefined>, /// Filters that the issues project milestone must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_milestone: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_milestone: MaybeUndefined>, /// Filters that the issues comments must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub comments: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub comments: MaybeUndefined>, /// Filters that the issue's activities must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub activity: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub activity: MaybeUndefined>, /// `Internal` Filters that the issue's suggestions must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub suggestions: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub suggestions: MaybeUndefined>, /// Filters that the issues cycle must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle: MaybeUndefined>, /// Filters that the issues project must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project: MaybeUndefined>, /// Filters that the issues state must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub state: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub state: MaybeUndefined>, /// Filters that the child issues must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub children: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub children: MaybeUndefined>, /// Filters that the issues attachments must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub attachments: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub attachments: MaybeUndefined>, /// `Internal` Comparator for the issues content. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub searchable_content: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub searchable_content: MaybeUndefined>, /// Comparator for filtering issues with relations. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_related_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_related_relations: MaybeUndefined>, /// Comparator for filtering issues which are duplicates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_duplicate_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_duplicate_relations: MaybeUndefined>, /// Comparator for filtering issues which are blocked. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_blocked_by_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_blocked_by_relations: MaybeUndefined>, /// Comparator for filtering issues which are blocking. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_blocking_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_blocking_relations: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested related issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_related_issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_related_issues: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested similar issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_similar_issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_similar_issues: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested assignees. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_assignees: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_assignees: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested projects. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_projects: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_projects: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested labels. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_labels: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_labels: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_teams: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_teams: MaybeUndefined>, /// Comparator for the issues sla status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sla_status: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sla_status: MaybeUndefined>, /// Filters that the issues reactions must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub reactions: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub reactions: MaybeUndefined>, /// Filters that the issue's customer needs must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub needs: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub needs: MaybeUndefined>, /// `ALPHA` Filters that the issue's releases must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub releases: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub releases: MaybeUndefined>, /// Count of customers - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_count: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_count: MaybeUndefined>, /// Count of important customers - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_important_count: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_important_count: MaybeUndefined>, /// `Internal` Lead time (created -> completed) comparator. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lead_time: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lead_time: MaybeUndefined>, /// `Internal` Cycle time (started -> completed) comparator. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_time: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_time: MaybeUndefined>, /// `Internal` Age (created -> now) comparator, defined if the issue is still open. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub age_time: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub age_time: MaybeUndefined>, /// `Internal` Triage time (entered triaged -> triaged) comparator. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub triage_time: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub triage_time: MaybeUndefined>, /// Compound filters, all of which need to be matched by the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The title of the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub title: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub title: MaybeUndefined, /// The issue description in markdown format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// `Internal` The issue description as a Prosemirror document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description_data: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description_data: MaybeUndefined, /// The identifier of the user to assign the issue to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub assignee_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub assignee_id: MaybeUndefined, /// The identifier of the agent user to delegate the issue to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub delegate_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub delegate_id: MaybeUndefined, /// The identifier of the parent issue. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent_id: MaybeUndefined, /// The priority of the issue. 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority: MaybeUndefined, /// The estimated complexity of the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub estimate: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub estimate: MaybeUndefined, /// The identifiers of the users subscribing to this ticket. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subscriber_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subscriber_ids: MaybeUndefined>, /// The identifiers of the issue labels associated with this ticket. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub label_ids: MaybeUndefined>, /// The identifier of the team associated with the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + pub team_id: String, /// The cycle associated with the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_id: MaybeUndefined, /// The project associated with the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_id: MaybeUndefined, /// The project milestone associated with the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_milestone_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_milestone_id: MaybeUndefined, /// The ID of the last template applied to the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub last_applied_template_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub last_applied_template_id: MaybeUndefined, /// The team state of the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub state_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub state_id: MaybeUndefined, /// The comment the issue is referencing. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub reference_comment_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub reference_comment_id: MaybeUndefined, /// The comment the issue is created from. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub source_comment_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub source_comment_id: MaybeUndefined, /// `Internal` The pull request comment the issue is created from. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub source_pull_request_comment_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub source_pull_request_comment_id: MaybeUndefined, /// The position of the issue related to other issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, /// The position of the issue related to other issues, when ordered by priority. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority_sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority_sort_order: MaybeUndefined, /// The position of the issue in parent's sub-issue list. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sub_issue_sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sub_issue_sort_order: MaybeUndefined, /// The date at which the issue is due. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub due_date: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub due_date: MaybeUndefined, /// Create issue as a user with the provided name. This option is only available to OAuth applications creating issues in `actor=app` mode. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub create_as_user: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub create_as_user: MaybeUndefined, /// Provide an external user avatar URL. Can only be used in conjunction with the `createAsUser` options. This option is only available to OAuth applications creating comments in `actor=app` mode. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub display_icon_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub display_icon_url: MaybeUndefined, /// Whether the passed sort order should be preserved. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub preserve_sort_order_on_create: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub preserve_sort_order_on_create: MaybeUndefined, /// The date when the issue was created (e.g. if importing from another system). Must be a date in the past. If none is provided, the backend will generate the time as now. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// `Internal` The timestamp at which an issue will be considered in breach of SLA. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sla_breaches_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sla_breaches_at: MaybeUndefined>, /// `Internal` The timestamp at which the issue's SLA was started. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sla_started_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sla_started_at: MaybeUndefined>, /// The identifier of a template the issue should be created from. If other values are provided in the input, they will override template values. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub template_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub template_id: MaybeUndefined, /// The date when the issue was completed (e.g. if importing from another system). Must be a date in the past and after createdAt date. Cannot be provided with an incompatible workflow state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub completed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub completed_at: MaybeUndefined>, /// The SLA day count type for the issue. Whether SLA should be business days only or calendar days (default). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sla_type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sla_type: MaybeUndefined, /// Whether to use the default template for the team. When set to true, the default template of this team based on user's membership will be applied. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub use_default_template: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub use_default_template: MaybeUndefined, } /// Issue filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the issues number. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub number: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub number: MaybeUndefined>, /// Comparator for the issues title. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub title: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub title: MaybeUndefined>, /// Comparator for the issues description. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined>, /// Comparator for the issues priority. 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority: MaybeUndefined>, /// Comparator for the issues estimate. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub estimate: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub estimate: MaybeUndefined>, /// Comparator for the issues started at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub started_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub started_at: MaybeUndefined>, /// Comparator for the issues triaged at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub triaged_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub triaged_at: MaybeUndefined>, /// Comparator for the issues completed at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub completed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub completed_at: MaybeUndefined>, /// Comparator for the issues canceled at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub canceled_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub canceled_at: MaybeUndefined>, /// Comparator for the issues archived at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub archived_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub archived_at: MaybeUndefined>, /// Comparator for the issues auto closed at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_closed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_closed_at: MaybeUndefined>, /// Comparator for the issues auto archived at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_archived_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_archived_at: MaybeUndefined>, /// Comparator for the issues added to cycle at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub added_to_cycle_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub added_to_cycle_at: MaybeUndefined>, /// Comparator for the period when issue was added to a cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub added_to_cycle_period: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub added_to_cycle_period: MaybeUndefined>, /// Comparator for the issues due date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub due_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub due_date: MaybeUndefined>, /// `Internal` Comparator for the issue's accumulatedStateUpdatedAt date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub accumulated_state_updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub accumulated_state_updated_at: MaybeUndefined>, /// Comparator for the issues snoozed until date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub snoozed_until_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub snoozed_until_at: MaybeUndefined>, /// Filters that the issues assignee must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub assignee: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub assignee: MaybeUndefined>, /// Filters that the issue's delegated agent must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub delegate: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub delegate: MaybeUndefined>, /// Filters that the last applied template must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub last_applied_template: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub last_applied_template: MaybeUndefined>, /// `ALPHA` Filters that the recurring issue template must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub recurring_issue_template: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub recurring_issue_template: MaybeUndefined>, /// Filters that the source must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub source_metadata: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub source_metadata: MaybeUndefined>, /// Filters that the issues creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Filters that the issue parent must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent: MaybeUndefined>, /// Filters that the issues snoozer must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub snoozed_by: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub snoozed_by: MaybeUndefined>, /// Filters that issue labels must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub labels: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub labels: MaybeUndefined>, /// Filters that issue subscribers must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subscribers: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subscribers: MaybeUndefined>, /// Comparator for filtering issues which have been shared with users outside of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_shared_users: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_shared_users: MaybeUndefined>, /// Filters that users the issue has been shared with must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub shared_with: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub shared_with: MaybeUndefined>, /// Filters that the issues team must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team: MaybeUndefined>, /// Filters that the issues project milestone must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_milestone: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_milestone: MaybeUndefined>, /// Filters that the issues comments must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub comments: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub comments: MaybeUndefined>, /// Filters that the issue's activities must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub activity: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub activity: MaybeUndefined>, /// `Internal` Filters that the issue's suggestions must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub suggestions: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub suggestions: MaybeUndefined>, /// Filters that the issues cycle must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle: MaybeUndefined>, /// Filters that the issues project must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project: MaybeUndefined>, /// Filters that the issues state must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub state: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub state: MaybeUndefined>, /// Filters that the child issues must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub children: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub children: MaybeUndefined>, /// Filters that the issues attachments must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub attachments: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub attachments: MaybeUndefined>, /// `Internal` Comparator for the issues content. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub searchable_content: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub searchable_content: MaybeUndefined>, /// Comparator for filtering issues with relations. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_related_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_related_relations: MaybeUndefined>, /// Comparator for filtering issues which are duplicates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_duplicate_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_duplicate_relations: MaybeUndefined>, /// Comparator for filtering issues which are blocked. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_blocked_by_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_blocked_by_relations: MaybeUndefined>, /// Comparator for filtering issues which are blocking. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_blocking_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_blocking_relations: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested related issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_related_issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_related_issues: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested similar issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_similar_issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_similar_issues: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested assignees. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_assignees: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_assignees: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested projects. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_projects: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_projects: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested labels. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_labels: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_labels: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_teams: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_teams: MaybeUndefined>, /// Comparator for the issues sla status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sla_status: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sla_status: MaybeUndefined>, /// Filters that the issues reactions must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub reactions: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub reactions: MaybeUndefined>, /// Filters that the issue's customer needs must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub needs: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub needs: MaybeUndefined>, /// `ALPHA` Filters that the issue's releases must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub releases: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub releases: MaybeUndefined>, /// Count of customers - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_count: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_count: MaybeUndefined>, /// Count of important customers - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_important_count: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_important_count: MaybeUndefined>, /// `Internal` Lead time (created -> completed) comparator. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lead_time: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lead_time: MaybeUndefined>, /// `Internal` Cycle time (started -> completed) comparator. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_time: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_time: MaybeUndefined>, /// `Internal` Age (created -> now) comparator, defined if the issue is still open. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub age_time: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub age_time: MaybeUndefined>, /// `Internal` Triage time (entered triaged -> triaged) comparator. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub triage_time: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub triage_time: MaybeUndefined>, /// Compound filters, all of which need to be matched by the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Comparator for issue identifiers. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueIDComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueImportUpdateInput { /// The mapping configuration for the import. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub mapping: Option, + pub mapping: serde_json::Value, } /// Issue label filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueLabelCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for whether the label is a group label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_group: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_group: MaybeUndefined>, /// Filters that the issue labels creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Filters that the issue labels team must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team: MaybeUndefined>, /// Filters that the issue label's parent label must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent: MaybeUndefined>, /// Filter based on the existence of the relation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some issue labels. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all issue labels. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueLabelCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The description of the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The color of the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// The identifier of the parent label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent_id: MaybeUndefined, /// The team associated with the label. If not given, the label will be associated with the entire workspace. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// Whether the label is a group. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_group: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_group: MaybeUndefined, /// When the label was retired. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub retired_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub retired_at: MaybeUndefined>, } /// Issue label filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueLabelFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for whether the label is a group label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_group: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_group: MaybeUndefined>, /// Filters that the issue labels creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Filters that the issue labels team must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team: MaybeUndefined>, /// Filters that the issue label's parent label must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent: MaybeUndefined>, /// Compound filters, all of which need to be matched by the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueLabelUpdateInput { /// The name of the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The description of the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The identifier of the parent label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent_id: MaybeUndefined, /// The color of the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// Whether the label is a group. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_group: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_group: MaybeUndefined, /// When the label was retired. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub retired_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub retired_at: MaybeUndefined>, } /// A reference to an issue found during release creation. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueReferenceInput { /// The issue identifier (e.g. ENG-123). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub identifier: Option, + pub identifier: String, /// The commit SHA where this issue reference was found. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub commit_sha: Option, + pub commit_sha: String, } -#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueRelationCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The type of relation of the issue to the related issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + pub r#type: IssueRelationType, /// The identifier of the issue that is related to another issue. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_id: Option, + pub issue_id: String, /// The identifier of the related issue. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub related_issue_id: Option, + pub related_issue_id: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueRelationUpdateInput { /// The type of relation of the issue to the related issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined, /// The identifier of the issue that is related to another issue. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_id: MaybeUndefined, /// The identifier of the related issue. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub related_issue_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub related_issue_id: MaybeUndefined, } /// Issue sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueSortInput { /// Sort by priority - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority: MaybeUndefined>, /// Sort by estimate - #[serde(default, skip_serializing_if = "Option::is_none")] - pub estimate: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub estimate: MaybeUndefined>, /// Sort by issue title - #[serde(default, skip_serializing_if = "Option::is_none")] - pub title: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub title: MaybeUndefined>, /// Sort by label - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub label: MaybeUndefined>, /// Sort by label group - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label_group: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub label_group: MaybeUndefined>, /// Sort by SLA status - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sla_status: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sla_status: MaybeUndefined>, /// Sort by issue creation date - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Sort by issue update date - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Sort by issue completion date - #[serde(default, skip_serializing_if = "Option::is_none")] - pub completed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub completed_at: MaybeUndefined>, /// Sort by issue due date - #[serde(default, skip_serializing_if = "Option::is_none")] - pub due_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub due_date: MaybeUndefined>, /// `Internal` Sort by the accumulated time in the current workflow state - #[serde(default, skip_serializing_if = "Option::is_none")] - pub accumulated_state_updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub accumulated_state_updated_at: MaybeUndefined>, /// Sort by Cycle start date - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle: MaybeUndefined>, /// Sort by Project Milestone target date - #[serde(default, skip_serializing_if = "Option::is_none")] - pub milestone: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub milestone: MaybeUndefined>, /// Sort by assignee name - #[serde(default, skip_serializing_if = "Option::is_none")] - pub assignee: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub assignee: MaybeUndefined>, /// Sort by delegate name - #[serde(default, skip_serializing_if = "Option::is_none")] - pub delegate: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub delegate: MaybeUndefined>, /// Sort by Project name - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project: MaybeUndefined>, /// Sort by Team name - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team: MaybeUndefined>, /// Sort by manual order - #[serde(default, skip_serializing_if = "Option::is_none")] - pub manual: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub manual: MaybeUndefined>, /// Sort by workflow state type - #[serde(default, skip_serializing_if = "Option::is_none")] - pub workflow_state: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub workflow_state: MaybeUndefined>, /// Sort by customer name - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer: MaybeUndefined>, /// Sort by customer revenue - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_revenue: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_revenue: MaybeUndefined>, /// Sort by number of customers associated with the issue - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_count: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_count: MaybeUndefined>, /// Sort by number of important customers associated with the issue - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_important_count: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_important_count: MaybeUndefined>, /// Sort by the root issue - #[serde(default, skip_serializing_if = "Option::is_none")] - pub root_issue: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub root_issue: MaybeUndefined>, /// `ALPHA` Sort by number of links associated with the issue - #[serde(default, skip_serializing_if = "Option::is_none")] - pub link_count: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub link_count: MaybeUndefined>, } /// IssueSuggestion collection filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueSuggestionCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the suggestion type. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined>, /// Comparator for the suggestion state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub state: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub state: MaybeUndefined>, /// Filters that the suggested user must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub suggested_user: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub suggested_user: MaybeUndefined>, /// Filters that the suggested project must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub suggested_project: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub suggested_project: MaybeUndefined>, /// Filters that the suggested team must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub suggested_team: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub suggested_team: MaybeUndefined>, /// Filters that the suggested label must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub suggested_label: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub suggested_label: MaybeUndefined>, /// Compound filters, all of which need to be matched by the suggestion. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the suggestion. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some suggestions. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all suggestions. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, } /// IssueSuggestion filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueSuggestionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the suggestion type. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined>, /// Comparator for the suggestion state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub state: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub state: MaybeUndefined>, /// Filters that the suggested user must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub suggested_user: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub suggested_user: MaybeUndefined>, /// Filters that the suggested project must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub suggested_project: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub suggested_project: MaybeUndefined>, /// Filters that the suggested team must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub suggested_team: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub suggested_team: MaybeUndefined>, /// Filters that the suggested label must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub suggested_label: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub suggested_label: MaybeUndefined>, /// Compound filters, all of which need to be matched by the suggestion. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the suggestion. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// `ALPHA` The properties of the issueToRelease to create. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueToReleaseCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The identifier of the issue. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_id: Option, + pub issue_id: String, /// The identifier of the release - #[serde(default, skip_serializing_if = "Option::is_none")] - pub release_id: Option, + pub release_id: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IssueUpdateInput { /// The issue title. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub title: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub title: MaybeUndefined, /// The issue description in markdown format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// `Internal` The issue description as a Prosemirror document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description_data: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description_data: MaybeUndefined, /// The identifier of the user to assign the issue to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub assignee_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub assignee_id: MaybeUndefined, /// The identifier of the agent user to delegate the issue to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub delegate_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub delegate_id: MaybeUndefined, /// The identifier of the parent issue. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent_id: MaybeUndefined, /// The priority of the issue. 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority: MaybeUndefined, /// The estimated complexity of the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub estimate: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub estimate: MaybeUndefined, /// The identifiers of the users subscribing to this ticket. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subscriber_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subscriber_ids: MaybeUndefined>, /// The identifiers of the issue labels associated with this ticket. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub label_ids: MaybeUndefined>, /// The identifiers of the issue labels to be added to this issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub added_label_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub added_label_ids: MaybeUndefined>, /// The identifiers of the issue labels to be removed from this issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub removed_label_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub removed_label_ids: MaybeUndefined>, /// The identifier of the team associated with the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// The cycle associated with the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_id: MaybeUndefined, /// The project associated with the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_id: MaybeUndefined, /// The project milestone associated with the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_milestone_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_milestone_id: MaybeUndefined, /// The ID of the last template applied to the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub last_applied_template_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub last_applied_template_id: MaybeUndefined, /// The team state of the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub state_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub state_id: MaybeUndefined, /// The position of the issue related to other issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, /// The position of the issue related to other issues, when ordered by priority. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority_sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority_sort_order: MaybeUndefined, /// The position of the issue in parent's sub-issue list. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sub_issue_sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sub_issue_sort_order: MaybeUndefined, /// The date at which the issue is due. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub due_date: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub due_date: MaybeUndefined, /// Whether the issue has been trashed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub trashed: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub trashed: MaybeUndefined, /// `Internal` The timestamp at which an issue will be considered in breach of SLA. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sla_breaches_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sla_breaches_at: MaybeUndefined>, /// `Internal` The timestamp at which the issue's SLA was started. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sla_started_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sla_started_at: MaybeUndefined>, /// The time until an issue will be snoozed in Triage view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub snoozed_until_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub snoozed_until_at: MaybeUndefined>, /// The identifier of the user who snoozed the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub snoozed_by_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub snoozed_by_id: MaybeUndefined, /// The SLA day count type for the issue. Whether SLA should be business days only or calendar days (default). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sla_type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sla_type: MaybeUndefined, /// Whether the issue was automatically closed because its parent issue was closed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_closed_by_parent_closing: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_closed_by_parent_closing: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct JiraConfigurationInput { /// The Jira personal access token. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub access_token: Option, + pub access_token: String, /// The Jira user's email address. A username is also accepted on Jira Server / DC. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub email: Option, + pub email: String, /// The Jira installation hostname. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub hostname: Option, + pub hostname: String, /// Whether this integration will be setup using the manual webhook flow. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub manual_setup: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub manual_setup: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct JiraLinearMappingInput { /// The Jira id for this project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub jira_project_id: Option, + pub jira_project_id: String, /// The Linear team id to map to the given project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub linear_team_id: Option, + pub linear_team_id: String, /// Whether the sync for this mapping is bidirectional. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub bidirectional: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub bidirectional: MaybeUndefined, /// Whether this mapping is the default one for issue creation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub default: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub default: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct JiraPersonalSettingsInput { /// The name of the Jira site currently authorized through the integration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub site_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub site_name: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct JiraProjectDataInput { /// The Jira id for this project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + pub id: String, /// The Jira key for this project, such as ENG. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub key: Option, + pub key: String, /// The Jira name for this project, such as Engineering. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct JiraSettingsInput { /// The mapping of Jira project id => Linear team id. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_mapping: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_mapping: MaybeUndefined>>, /// The Jira projects for the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub projects: Option>>, + pub projects: Vec>, /// Whether this integration is for Jira Server or not. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_jira_server: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_jira_server: MaybeUndefined, /// Whether the user needs to provide setup information about the webhook to complete the integration setup. Only relevant for integrations that use a manual setup flow - #[serde(default, skip_serializing_if = "Option::is_none")] - pub setup_pending: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub setup_pending: MaybeUndefined, /// Whether this integration is using a manual setup flow. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub manual_setup: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub manual_setup: MaybeUndefined, /// The label of the Jira instance, for visual identification purposes only - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub label: MaybeUndefined, /// The status names per issue type, per project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status_names_per_issue_type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status_names_per_issue_type: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct JiraUpdateInput { /// The id of the integration to update. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + pub id: String, /// Whether to refresh Jira Projects for the integration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub update_projects: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub update_projects: MaybeUndefined, /// Whether to refresh Jira metadata for the integration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub update_metadata: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub update_metadata: MaybeUndefined, /// Whether to delete the current manual webhook configuration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub delete_webhook: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub delete_webhook: MaybeUndefined, /// Webhook secret for a new manual configuration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub webhook_secret: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub webhook_secret: MaybeUndefined, /// Whether the Jira instance does not support webhook secrets. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub no_secret: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub no_secret: MaybeUndefined, /// The Jira personal access token. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub access_token: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub access_token: MaybeUndefined, /// The Jira user email address associated with the personal access token. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub email: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub email: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct JoinOrganizationInput { /// The identifier of the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub organization_id: Option, + pub organization_id: String, /// An optional invite link for an organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub invite_link: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub invite_link: MaybeUndefined, } /// Issue label-group sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct LabelGroupSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, /// The label-group id to sort by - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label_group_id: Option, + pub label_group_id: String, } /// Issue label sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct LabelSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct LaunchDarklySettingsInput { /// The project key of the LaunchDarkly integration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_key: Option, + pub project_key: String, /// The environment of the LaunchDarkly integration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub environment: Option, + pub environment: String, } /// `ALPHA` Issue link count sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct LinkCountSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Issue manual sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ManualSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct MicrosoftTeamsSettingsInput { /// The display name of the Azure AD tenant. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub tenant_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub tenant_name: MaybeUndefined, } /// Issue project milestone options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct MilestoneSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Customer name sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NameSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NotificationCategoryPreferencesInput { /// The preferences for notifications about assignments. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub assignments: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub assignments: MaybeUndefined>, /// The preferences for notifications about status changes. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status_changes: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status_changes: MaybeUndefined>, /// The preferences for notifications about comments and replies. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub comments_and_replies: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub comments_and_replies: MaybeUndefined>, /// The preferences for notifications about mentions. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub mentions: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub mentions: MaybeUndefined>, /// The preferences for notifications about reactions. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub reactions: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub reactions: MaybeUndefined>, /// The preferences for notifications about subscriptions. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subscriptions: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subscriptions: MaybeUndefined>, /// The preferences for notifications about document changes. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub document_changes: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub document_changes: MaybeUndefined>, /// The preferences for notifications about posts and updates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub posts_and_updates: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub posts_and_updates: MaybeUndefined>, /// The preferences for notifications about reminders. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub reminders: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub reminders: MaybeUndefined>, /// The preferences for notifications about reviews. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub reviews: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub reviews: MaybeUndefined>, /// The preferences for notifications about apps and integrations. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub apps_and_integrations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub apps_and_integrations: MaybeUndefined>, /// The preferences for notifications about triage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub triage: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub triage: MaybeUndefined>, /// The preferences for notifications about customers. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customers: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customers: MaybeUndefined>, /// The preferences for notifications about feed summaries. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub feed: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub feed: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NotificationDeliveryPreferencesChannelInput { /// The schedule for notifications on this channel. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub schedule: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub schedule: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NotificationDeliveryPreferencesDayInput { /// The time notifications start. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub start: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub start: MaybeUndefined, /// The time notifications end. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub end: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub end: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NotificationDeliveryPreferencesInput { /// The delivery preferences for the mobile channel. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub mobile: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub mobile: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NotificationDeliveryPreferencesScheduleInput { /// Whether the schedule is disabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub disabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub disabled: MaybeUndefined, /// Delivery preferences for Sunday. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sunday: Option>, + pub sunday: Box, /// Delivery preferences for Monday. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub monday: Option>, + pub monday: Box, /// Delivery preferences for Tuesday. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub tuesday: Option>, + pub tuesday: Box, /// Delivery preferences for Wednesday. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub wednesday: Option>, + pub wednesday: Box, /// Delivery preferences for Thursday. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub thursday: Option>, + pub thursday: Box, /// Delivery preferences for Friday. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub friday: Option>, + pub friday: Box, /// Delivery preferences for Saturday. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub saturday: Option>, + pub saturday: Box, } /// Describes the type and id of the entity to target for notifications. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NotificationEntityInput { /// The id of the issue related to the notification. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_id: MaybeUndefined, /// `DEPRECATED` The id of the project related to the notification. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_id: MaybeUndefined, /// The id of the initiative related to the notification. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_id: MaybeUndefined, /// The id of the project update related to the notification. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_update_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_update_id: MaybeUndefined, /// The id of the initiative update related to the notification. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_update_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_update_id: MaybeUndefined, /// The id of the OAuth client approval related to the notification. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub oauth_client_approval_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub oauth_client_approval_id: MaybeUndefined, /// The id of the notification. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, } /// Notification filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NotificationFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the notification type. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined>, /// Comparator for the archived at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub archived_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub archived_at: MaybeUndefined>, /// Compound filters, all of which need to be matched by the notification. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the notification. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NotificationSubscriptionCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The identifier of the customer to subscribe to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_id: MaybeUndefined, /// The identifier of the custom view to subscribe to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub custom_view_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub custom_view_id: MaybeUndefined, /// The identifier of the cycle to subscribe to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_id: MaybeUndefined, /// The identifier of the initiative to subscribe to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_id: MaybeUndefined, /// The identifier of the label to subscribe to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub label_id: MaybeUndefined, /// The identifier of the project to subscribe to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_id: MaybeUndefined, /// The identifier of the team to subscribe to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// The identifier of the user to subscribe to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub user_id: MaybeUndefined, /// The type of view to which the notification subscription context is associated with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub context_view_type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub context_view_type: MaybeUndefined, /// The type of user view to which the notification subscription context is associated with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user_context_view_type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub user_context_view_type: MaybeUndefined, /// The types of notifications of the subscription. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub notification_subscription_types: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub notification_subscription_types: MaybeUndefined>, /// Whether the subscription is active. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub active: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub active: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NotificationSubscriptionUpdateInput { /// The types of notifications of the subscription. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub notification_subscription_types: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub notification_subscription_types: MaybeUndefined>, /// Whether the subscription is active. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub active: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub active: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NotificationUpdateInput { /// The time when notification was marked as read. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub read_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub read_at: MaybeUndefined>, /// The time until a notification will be snoozed. After that it will appear in the inbox again. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub snoozed_until_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub snoozed_until_at: MaybeUndefined>, /// The id of the project update related to the notification. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_update_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_update_id: MaybeUndefined, /// The id of the project update related to the notification. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_update_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_update_id: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NotionSettingsInput { /// The ID of the Notion workspace being connected. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub workspace_id: Option, + pub workspace_id: String, /// The name of the Notion workspace being connected. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub workspace_name: Option, + pub workspace_name: String, } /// Comment filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NullableCommentFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the comment's body. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body: MaybeUndefined>, /// Filters that the comment's creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub user: MaybeUndefined>, /// Filters that the comment's issue must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue: MaybeUndefined>, /// Filters that the comment's project update must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_update: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_update: MaybeUndefined>, /// Filters that the comment parent must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent: MaybeUndefined>, /// Filters that the comment's document content must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub document_content: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub document_content: MaybeUndefined>, /// Filters that the comment's reactions must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub reactions: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub reactions: MaybeUndefined>, /// Filters that the comment's customer needs must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub needs: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub needs: MaybeUndefined>, /// Filter based on the existence of the relation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the comment. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the comment. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Customer filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NullableCustomerFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the customer name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the customer slack channel ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_channel_id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_channel_id: MaybeUndefined>, /// Comparator for the customer's domains. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub domains: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub domains: MaybeUndefined>, /// Comparator for the customer's external IDs. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_ids: MaybeUndefined>, /// Filters that the customer owner must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner: MaybeUndefined>, /// Filters that the customer's needs must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub needs: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub needs: MaybeUndefined>, /// Comparator for the customer generated revenue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub revenue: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub revenue: MaybeUndefined>, /// Comparator for the customer size. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub size: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub size: MaybeUndefined>, /// Filters that the customer's status must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status: MaybeUndefined>, /// Filters that the customer's tier must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub tier: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub tier: MaybeUndefined>, /// Filter based on the existence of the relation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the customer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Cycle filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NullableCycleFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the cycle number. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub number: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub number: MaybeUndefined>, /// Comparator for the cycle name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the cycle start date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub starts_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub starts_at: MaybeUndefined>, /// Comparator for the cycle ends at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ends_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ends_at: MaybeUndefined>, /// Comparator for the cycle completed at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub completed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub completed_at: MaybeUndefined>, /// Comparator for the filtering active cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_active: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_active: MaybeUndefined>, /// Comparator for filtering for whether the cycle is currently in cooldown. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_in_cooldown: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_in_cooldown: MaybeUndefined>, /// Comparator for the filtering next cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_next: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_next: MaybeUndefined>, /// Comparator for the filtering previous cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_previous: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_previous: MaybeUndefined>, /// Comparator for the filtering future cycles. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_future: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_future: MaybeUndefined>, /// Comparator for the filtering past cycles. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_past: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_past: MaybeUndefined>, /// Filters that the cycles team must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team: MaybeUndefined>, /// Filters that the cycles issues must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issues: MaybeUndefined>, /// Comparator for the inherited cycle ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub inherited_from_id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub inherited_from_id: MaybeUndefined>, /// Filter based on the existence of the relation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Comparator for optional dates. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NullableDateComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, /// Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Less-than constraint. Matches any values that are less than the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lt: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lt: MaybeUndefined, /// Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lte: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lte: MaybeUndefined, /// Greater-than constraint. Matches any values that are greater than the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub gt: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub gt: MaybeUndefined, /// Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub gte: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub gte: MaybeUndefined, } /// Document content filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NullableDocumentContentFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the document content. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub content: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub content: MaybeUndefined>, /// Filters that the document content project must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project: MaybeUndefined>, /// Filters that the document content document must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub document: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub document: MaybeUndefined>, /// Filter based on the existence of the relation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Nullable comparator for optional durations. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NullableDurationComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, /// Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Less-than constraint. Matches any values that are less than the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lt: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lt: MaybeUndefined, /// Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lte: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lte: MaybeUndefined, /// Greater-than constraint. Matches any values that are greater than the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub gt: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub gt: MaybeUndefined, /// Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub gte: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub gte: MaybeUndefined, } /// Issue filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NullableIssueFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the issues number. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub number: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub number: MaybeUndefined>, /// Comparator for the issues title. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub title: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub title: MaybeUndefined>, /// Comparator for the issues description. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined>, /// Comparator for the issues priority. 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority: MaybeUndefined>, /// Comparator for the issues estimate. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub estimate: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub estimate: MaybeUndefined>, /// Comparator for the issues started at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub started_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub started_at: MaybeUndefined>, /// Comparator for the issues triaged at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub triaged_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub triaged_at: MaybeUndefined>, /// Comparator for the issues completed at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub completed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub completed_at: MaybeUndefined>, /// Comparator for the issues canceled at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub canceled_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub canceled_at: MaybeUndefined>, /// Comparator for the issues archived at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub archived_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub archived_at: MaybeUndefined>, /// Comparator for the issues auto closed at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_closed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_closed_at: MaybeUndefined>, /// Comparator for the issues auto archived at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_archived_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_archived_at: MaybeUndefined>, /// Comparator for the issues added to cycle at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub added_to_cycle_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub added_to_cycle_at: MaybeUndefined>, /// Comparator for the period when issue was added to a cycle. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub added_to_cycle_period: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub added_to_cycle_period: MaybeUndefined>, /// Comparator for the issues due date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub due_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub due_date: MaybeUndefined>, /// `Internal` Comparator for the issue's accumulatedStateUpdatedAt date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub accumulated_state_updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub accumulated_state_updated_at: MaybeUndefined>, /// Comparator for the issues snoozed until date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub snoozed_until_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub snoozed_until_at: MaybeUndefined>, /// Filters that the issues assignee must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub assignee: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub assignee: MaybeUndefined>, /// Filters that the issue's delegated agent must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub delegate: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub delegate: MaybeUndefined>, /// Filters that the last applied template must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub last_applied_template: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub last_applied_template: MaybeUndefined>, /// `ALPHA` Filters that the recurring issue template must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub recurring_issue_template: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub recurring_issue_template: MaybeUndefined>, /// Filters that the source must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub source_metadata: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub source_metadata: MaybeUndefined>, /// Filters that the issues creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Filters that the issue parent must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent: MaybeUndefined>, /// Filters that the issues snoozer must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub snoozed_by: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub snoozed_by: MaybeUndefined>, /// Filters that issue labels must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub labels: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub labels: MaybeUndefined>, /// Filters that issue subscribers must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subscribers: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subscribers: MaybeUndefined>, /// Comparator for filtering issues which have been shared with users outside of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_shared_users: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_shared_users: MaybeUndefined>, /// Filters that users the issue has been shared with must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub shared_with: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub shared_with: MaybeUndefined>, /// Filters that the issues team must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team: MaybeUndefined>, /// Filters that the issues project milestone must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_milestone: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_milestone: MaybeUndefined>, /// Filters that the issues comments must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub comments: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub comments: MaybeUndefined>, /// Filters that the issue's activities must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub activity: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub activity: MaybeUndefined>, /// `Internal` Filters that the issue's suggestions must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub suggestions: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub suggestions: MaybeUndefined>, /// Filters that the issues cycle must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle: MaybeUndefined>, /// Filters that the issues project must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project: MaybeUndefined>, /// Filters that the issues state must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub state: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub state: MaybeUndefined>, /// Filters that the child issues must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub children: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub children: MaybeUndefined>, /// Filters that the issues attachments must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub attachments: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub attachments: MaybeUndefined>, /// `Internal` Comparator for the issues content. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub searchable_content: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub searchable_content: MaybeUndefined>, /// Comparator for filtering issues with relations. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_related_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_related_relations: MaybeUndefined>, /// Comparator for filtering issues which are duplicates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_duplicate_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_duplicate_relations: MaybeUndefined>, /// Comparator for filtering issues which are blocked. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_blocked_by_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_blocked_by_relations: MaybeUndefined>, /// Comparator for filtering issues which are blocking. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_blocking_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_blocking_relations: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested related issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_related_issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_related_issues: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested similar issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_similar_issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_similar_issues: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested assignees. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_assignees: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_assignees: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested projects. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_projects: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_projects: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested labels. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_labels: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_labels: MaybeUndefined>, /// `Internal` Comparator for filtering issues which have suggested teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_suggested_teams: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_suggested_teams: MaybeUndefined>, /// Comparator for the issues sla status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sla_status: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sla_status: MaybeUndefined>, /// Filters that the issues reactions must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub reactions: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub reactions: MaybeUndefined>, /// Filters that the issue's customer needs must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub needs: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub needs: MaybeUndefined>, /// `ALPHA` Filters that the issue's releases must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub releases: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub releases: MaybeUndefined>, /// Count of customers - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_count: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_count: MaybeUndefined>, /// Count of important customers - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_important_count: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_important_count: MaybeUndefined>, /// `Internal` Lead time (created -> completed) comparator. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lead_time: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lead_time: MaybeUndefined>, /// `Internal` Cycle time (started -> completed) comparator. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_time: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_time: MaybeUndefined>, /// `Internal` Age (created -> now) comparator, defined if the issue is still open. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub age_time: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub age_time: MaybeUndefined>, /// `Internal` Triage time (entered triaged -> triaged) comparator. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub triage_time: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub triage_time: MaybeUndefined>, /// Filter based on the existence of the relation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Comparator for optional numbers. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NullableNumberComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, /// Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Less-than constraint. Matches any values that are less than the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lt: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lt: MaybeUndefined, /// Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lte: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lte: MaybeUndefined, /// Greater-than constraint. Matches any values that are greater than the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub gt: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub gt: MaybeUndefined, /// Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub gte: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub gte: MaybeUndefined, } /// Project filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NullableProjectFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the project name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the project slug ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slug_id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slug_id: MaybeUndefined>, /// `DEPRECATED` Comparator for the project state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub state: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub state: MaybeUndefined>, /// Filters that the project's status must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status: MaybeUndefined>, /// Comparator for the projects priority. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority: MaybeUndefined>, /// Filters that project labels must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub labels: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub labels: MaybeUndefined>, /// `Internal` Comparator for the project's content. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub searchable_content: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub searchable_content: MaybeUndefined>, /// Comparator for the project started date (when it was moved to an "In Progress" status). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub started_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub started_at: MaybeUndefined>, /// Comparator for the project completion date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub completed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub completed_at: MaybeUndefined>, /// Comparator for the project cancelation date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub canceled_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub canceled_at: MaybeUndefined>, /// Comparator for the project start date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub start_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub start_date: MaybeUndefined>, /// Comparator for the project target date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined>, /// Comparator for the project health: onTrack, atRisk, offTrack - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health: MaybeUndefined>, /// Comparator for the project health (with age): onTrack, atRisk, offTrack, outdated, noUpdate - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health_with_age: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health_with_age: MaybeUndefined>, /// `ALPHA` Comparator for the project activity type: buzzin, active, some, none - #[serde(default, skip_serializing_if = "Option::is_none")] - pub activity_type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub activity_type: MaybeUndefined>, /// Comparator for filtering projects with relations. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_related_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_related_relations: MaybeUndefined>, /// `Deprecated` Comparator for filtering projects which this is depended on by. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_depended_on_by_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_depended_on_by_relations: MaybeUndefined>, /// `Deprecated`Comparator for filtering projects which this depends on. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_depends_on_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_depends_on_relations: MaybeUndefined>, /// Comparator for filtering projects which are blocked. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_blocked_by_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_blocked_by_relations: MaybeUndefined>, /// Comparator for filtering projects which are blocking. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_blocking_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_blocking_relations: MaybeUndefined>, /// Comparator for filtering projects with violated dependencies. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_violated_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_violated_relations: MaybeUndefined>, /// Comparator for the project updates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_updates: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_updates: MaybeUndefined>, /// Filters that the projects creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Filters that the projects lead must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lead: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lead: MaybeUndefined>, /// Filters that the projects members must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub members: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub members: MaybeUndefined>, /// Filters that the projects issues must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issues: MaybeUndefined>, /// Filters that the projects roadmaps must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub roadmaps: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub roadmaps: MaybeUndefined>, /// Filters that the projects initiatives must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiatives: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiatives: MaybeUndefined>, /// Filters that the project's milestones must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_milestones: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_milestones: MaybeUndefined>, /// Filters that the project's completed milestones must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub completed_project_milestones: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub completed_project_milestones: MaybeUndefined>, /// Filters that the project's next milestone must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub next_project_milestone: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub next_project_milestone: MaybeUndefined>, /// Filters that the project's team must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub accessible_teams: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub accessible_teams: MaybeUndefined>, /// Filters that the last applied template must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub last_applied_template: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub last_applied_template: MaybeUndefined>, /// Filters that the project's customer needs must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub needs: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub needs: MaybeUndefined>, /// Count of customers - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_count: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_count: MaybeUndefined>, /// Count of important customers - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_important_count: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_important_count: MaybeUndefined>, /// Filter based on the existence of the relation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Project milestone filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NullableProjectMilestoneFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the project milestone name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the project milestone target date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined>, /// Filters that the project milestone's project must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project: MaybeUndefined>, /// Filter based on the existence of the relation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the project milestone. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the project milestone. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Nullable project update filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NullableProjectUpdateFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Filters that the project update creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub user: MaybeUndefined>, /// Filters that the project update project must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project: MaybeUndefined>, /// Filters that the project updates reactions must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub reactions: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub reactions: MaybeUndefined>, /// Filter based on the existence of the relation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the project update. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the project update. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Comparator for optional strings. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NullableStringComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, /// Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Equals case insensitive. Matches any values that matches the given string case insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq_ignore_case: MaybeUndefined, /// Not-equals case insensitive. Matches any values that don't match the given string case insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq_ignore_case: MaybeUndefined, /// Starts with constraint. Matches any values that start with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub starts_with: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub starts_with: MaybeUndefined, /// Starts with case insensitive constraint. Matches any values that start with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub starts_with_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub starts_with_ignore_case: MaybeUndefined, /// Doesn't start with constraint. Matches any values that don't start with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_starts_with: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_starts_with: MaybeUndefined, /// Ends with constraint. Matches any values that end with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ends_with: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ends_with: MaybeUndefined, /// Doesn't end with constraint. Matches any values that don't end with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_ends_with: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_ends_with: MaybeUndefined, /// Contains constraint. Matches any values that contain the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub contains: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub contains: MaybeUndefined, /// Contains case insensitive constraint. Matches any values that contain the given string case insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub contains_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub contains_ignore_case: MaybeUndefined, /// Doesn't contain constraint. Matches any values that don't contain the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_contains: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_contains: MaybeUndefined, /// Doesn't contain case insensitive constraint. Matches any values that don't contain the given string case insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_contains_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_contains_ignore_case: MaybeUndefined, /// Contains case and accent insensitive constraint. Matches any values that contain the given string case and accent insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub contains_ignore_case_and_accent: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub contains_ignore_case_and_accent: MaybeUndefined, } /// Team filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NullableTeamFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the team name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the team key. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub key: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub key: MaybeUndefined>, /// Comparator for the team description. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined>, /// Comparator for the team privacy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub private: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub private: MaybeUndefined>, /// Filters that the teams issues must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issues: MaybeUndefined>, /// Filters that the teams parent must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent: MaybeUndefined>, /// Filter based on the existence of the relation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Template filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NullableTemplateFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the template's name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the template's type. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined>, /// Comparator for the inherited template's ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub inherited_from_id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub inherited_from_id: MaybeUndefined>, /// Filter based on the existence of the relation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the template. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the template. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Comparator for optional timeless dates. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NullableTimelessDateComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, /// Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Less-than constraint. Matches any values that are less than the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lt: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lt: MaybeUndefined, /// Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lte: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lte: MaybeUndefined, /// Greater-than constraint. Matches any values that are greater than the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub gt: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub gt: MaybeUndefined, /// Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub gte: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub gte: MaybeUndefined, } /// User filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NullableUserFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the user's name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the user's display name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub display_name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub display_name: MaybeUndefined>, /// Comparator for the user's email. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub email: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub email: MaybeUndefined>, /// Comparator for the user's activity status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub active: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub active: MaybeUndefined>, /// Filters that the users assigned issues must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub assigned_issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub assigned_issues: MaybeUndefined>, /// Comparator for the user's admin status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub admin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub admin: MaybeUndefined>, /// Comparator for the user's owner status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner: MaybeUndefined>, /// Comparator for the user's invited status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub invited: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub invited: MaybeUndefined>, /// Comparator for the user's invited status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_invited: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_invited: MaybeUndefined>, /// Comparator for the user's app status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub app: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub app: MaybeUndefined>, /// Filter based on the currently authenticated user. Set to true to filter for the authenticated user, false for any other user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_me: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_me: MaybeUndefined>, /// Filter based on the existence of the relation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Comparator for numbers. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NumberComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, /// Less-than constraint. Matches any values that are less than the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lt: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lt: MaybeUndefined, /// Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lte: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lte: MaybeUndefined, /// Greater-than constraint. Matches any values that are greater than the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub gt: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub gt: MaybeUndefined, /// Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub gte: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub gte: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct OnboardingCustomerSurvey { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub company_role: Option, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub company_size: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub company_role: MaybeUndefined, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub company_size: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct OpsgenieInput { /// The date when the Opsgenie API failed with an unauthorized error. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub api_failed_with_unauthorized_error_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub api_failed_with_unauthorized_error_at: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct OrganizationDomainCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The identity provider to which to add the domain. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub identity_provider_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub identity_provider_id: MaybeUndefined, /// The domain name to add. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The email address to which to send the verification code. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub verification_email: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub verification_email: MaybeUndefined, /// The authentication type this domain is for. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auth_type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auth_type: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct OrganizationDomainUpdateInput { /// Prevent users with this domain to create new workspaces. Only allowed to set on claimed domains! - #[serde(default, skip_serializing_if = "Option::is_none")] - pub disable_organization_creation: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub disable_organization_creation: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct OrganizationDomainVerificationInput { /// The identifier in UUID v4 format of the domain being verified. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub organization_domain_id: Option, + pub organization_domain_id: String, /// The verification code sent via email. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub verification_code: Option, + pub verification_code: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct OrganizationInviteCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The email of the invitee. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub email: Option, + pub email: String, /// What user role the invite should grant. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub role: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub role: MaybeUndefined, /// The teams that the user has been invited to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_ids: MaybeUndefined>, /// `INTERNAL` Optional metadata about the invite. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub metadata: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub metadata: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct OrganizationInviteUpdateInput { /// The teams that the user has been invited to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_ids: Option>, + pub team_ids: Vec, } /// `INTERNAL` Organization IP restriction configuration. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct OrganizationIpRestrictionInput { /// IP range in CIDR format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub range: Option, + pub range: String, /// Restriction type. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + pub r#type: String, /// Optional restriction description. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// Whether the restriction is enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enabled: Option, + pub enabled: bool, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct OrganizationSecuritySettingsInput { /// The minimum role required to create personal API keys. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub personal_api_keys_role: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub personal_api_keys_role: MaybeUndefined, /// The minimum role required to invite users. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub invitations_role: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub invitations_role: MaybeUndefined, /// The minimum role required to create teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_creation_role: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_creation_role: MaybeUndefined, /// The minimum role required to manage workspace labels. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label_management_role: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub label_management_role: MaybeUndefined, /// The minimum role required to manage API settings. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub api_settings_role: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub api_settings_role: MaybeUndefined, /// The minimum role required to manage workspace templates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub template_management_role: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub template_management_role: MaybeUndefined, /// The minimum role required to import data. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub import_role: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub import_role: MaybeUndefined, /// The minimum role required to manage agent guidance prompts and settings. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub agent_guidance_role: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub agent_guidance_role: MaybeUndefined, /// The minimum role required to install and connect new integrations. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub integration_creation_role: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub integration_creation_role: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct OrganizationStartTrialInput { /// The plan type to trial. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub plan_type: Option, + pub plan_type: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct OrganizationUpdateInput { /// The name of the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The logo of the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub logo_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub logo_url: MaybeUndefined, /// The URL key of the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub url_key: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub url_key: MaybeUndefined, /// How git branches are formatted. If null, default formatting will be used. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub git_branch_format: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub git_branch_format: MaybeUndefined, /// Whether the Git integration linkback messages should be sent for private repositories. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub git_linkback_messages_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub git_linkback_messages_enabled: MaybeUndefined, /// Whether the Git integration linkback messages should be sent for public repositories. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub git_public_linkback_messages_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub git_public_linkback_messages_enabled: MaybeUndefined, /// Whether issue descriptions should be included in Git integration linkback messages. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub git_linkback_descriptions_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub git_linkback_descriptions_enabled: MaybeUndefined, /// Whether the organization is using roadmap. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub roadmap_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub roadmap_enabled: MaybeUndefined, /// The n-weekly frequency at which to prompt for project updates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_update_reminder_frequency_in_weeks: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_update_reminder_frequency_in_weeks: MaybeUndefined, /// The day at which project updates are sent. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_update_reminders_day: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_update_reminders_day: MaybeUndefined, /// The hour at which project updates are sent. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_update_reminders_hour: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_update_reminders_hour: MaybeUndefined, /// `ALPHA` The n-weekly frequency at which to prompt for initiative updates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_update_reminder_frequency_in_weeks: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_update_reminder_frequency_in_weeks: MaybeUndefined, /// `ALPHA` The day at which initiative updates are sent. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_update_reminders_day: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_update_reminders_day: MaybeUndefined, /// `ALPHA` The hour at which initiative updates are sent. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_update_reminders_hour: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_update_reminders_hour: MaybeUndefined, /// The month at which the fiscal year starts. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub fiscal_year_start_month: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub fiscal_year_start_month: MaybeUndefined, /// `Internal` The list of working days. Sunday is 0, Monday is 1, etc. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub working_days: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub working_days: MaybeUndefined>, /// Whether the organization has opted for reduced customer support attachment information. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub reduced_personal_information: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub reduced_personal_information: MaybeUndefined, /// Whether the organization has opted for having to approve all OAuth applications for install. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub oauth_app_review: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub oauth_app_review: MaybeUndefined, /// List of services that are allowed to be used for login. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub allowed_auth_services: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub allowed_auth_services: MaybeUndefined>, /// Internal. Whether SLAs have been enabled for the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sla_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sla_enabled: MaybeUndefined, /// Whether agent invocation is restricted to full workspace members. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub restrict_agent_invocation_to_members: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub restrict_agent_invocation_to_members: MaybeUndefined, /// IP restriction configurations controlling allowed access the workspace. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ip_restrictions: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ip_restrictions: MaybeUndefined>>, /// Allowed file upload content types. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub allowed_file_upload_content_types: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub allowed_file_upload_content_types: MaybeUndefined>, /// `ALPHA` Theme settings for the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub theme_settings: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub theme_settings: MaybeUndefined, /// `INTERNAL` Whether the organization is using customers. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customers_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customers_enabled: MaybeUndefined, /// `INTERNAL` Configuration settings for the Customers feature. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customers_configuration: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customers_configuration: MaybeUndefined, /// `INTERNAL` Whether code intelligence is enabled for the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub code_intelligence_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub code_intelligence_enabled: MaybeUndefined, /// `INTERNAL` GitHub repository in owner/repo format for code intelligence. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub code_intelligence_repository: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub code_intelligence_repository: MaybeUndefined, /// Whether the organization has enabled the feed feature. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub feed_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub feed_enabled: MaybeUndefined, /// Whether to hide other workspaces for new users signing up with email domains claimed by this organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub hide_non_primary_organizations: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub hide_non_primary_organizations: MaybeUndefined, /// Default schedule for how often feed summaries are generated. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub default_feed_summary_schedule: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub default_feed_summary_schedule: MaybeUndefined, /// `INTERNAL` Whether the organization has enabled the AI add-on. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ai_addon_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ai_addon_enabled: MaybeUndefined, /// `INTERNAL` Whether the organization has enabled generated updates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub generated_updates_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub generated_updates_enabled: MaybeUndefined, /// `INTERNAL` Whether the organization has opted in to AI telemetry. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ai_telemetry_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ai_telemetry_enabled: MaybeUndefined, /// Whether the organization has enabled AI discussion summaries for issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ai_discussion_summaries_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ai_discussion_summaries_enabled: MaybeUndefined, /// Whether the organization has enabled resolved thread AI summaries. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ai_thread_summaries_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ai_thread_summaries_enabled: MaybeUndefined, /// Whether HIPAA compliance is enabled for organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub hipaa_compliance_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub hipaa_compliance_enabled: MaybeUndefined, /// The security settings for the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub security_settings: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub security_settings: MaybeUndefined>, /// `INTERNAL` Configure per-modality AI host providers and model families. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ai_provider_configuration: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ai_provider_configuration: MaybeUndefined, /// The ID of the Slack integration to use for auto-creating project channels. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_project_channel_integration_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_project_channel_integration_id: MaybeUndefined, /// The prefix to use for auto-created Slack project channels (p-, proj-, or project-). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_project_channel_prefix: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_project_channel_prefix: MaybeUndefined, /// `Internal` Whether the organization has enabled Linear Agent. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub linear_agent_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub linear_agent_enabled: MaybeUndefined, } /// Customer owner sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct OwnerSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct PagerDutyInput { /// The date when the PagerDuty API failed with an unauthorized error. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub api_failed_with_unauthorized_error_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub api_failed_with_unauthorized_error_at: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct PartialNotificationChannelPreferencesInput { /// Whether notifications are currently enabled for mobile. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub mobile: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub mobile: MaybeUndefined, /// Whether notifications are currently enabled for desktop. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub desktop: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub desktop: MaybeUndefined, /// Whether notifications are currently enabled for email. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub email: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub email: MaybeUndefined, /// Whether notifications are currently enabled for Slack. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack: MaybeUndefined, } /// Issue priority sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct PrioritySort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, /// Whether to consider no priority as the highest or lowest priority - #[serde(default, skip_serializing_if = "Option::is_none")] - pub no_priority_first: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub no_priority_first: MaybeUndefined, } /// Project filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the project name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the project slug ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slug_id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slug_id: MaybeUndefined>, /// `DEPRECATED` Comparator for the project state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub state: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub state: MaybeUndefined>, /// Filters that the project's status must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status: MaybeUndefined>, /// Comparator for the projects priority. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority: MaybeUndefined>, /// Filters that project labels must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub labels: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub labels: MaybeUndefined>, /// `Internal` Comparator for the project's content. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub searchable_content: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub searchable_content: MaybeUndefined>, /// Comparator for the project started date (when it was moved to an "In Progress" status). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub started_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub started_at: MaybeUndefined>, /// Comparator for the project completion date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub completed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub completed_at: MaybeUndefined>, /// Comparator for the project cancelation date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub canceled_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub canceled_at: MaybeUndefined>, /// Comparator for the project start date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub start_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub start_date: MaybeUndefined>, /// Comparator for the project target date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined>, /// Comparator for the project health: onTrack, atRisk, offTrack - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health: MaybeUndefined>, /// Comparator for the project health (with age): onTrack, atRisk, offTrack, outdated, noUpdate - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health_with_age: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health_with_age: MaybeUndefined>, /// `ALPHA` Comparator for the project activity type: buzzin, active, some, none - #[serde(default, skip_serializing_if = "Option::is_none")] - pub activity_type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub activity_type: MaybeUndefined>, /// Comparator for filtering projects with relations. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_related_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_related_relations: MaybeUndefined>, /// `Deprecated` Comparator for filtering projects which this is depended on by. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_depended_on_by_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_depended_on_by_relations: MaybeUndefined>, /// `Deprecated`Comparator for filtering projects which this depends on. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_depends_on_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_depends_on_relations: MaybeUndefined>, /// Comparator for filtering projects which are blocked. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_blocked_by_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_blocked_by_relations: MaybeUndefined>, /// Comparator for filtering projects which are blocking. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_blocking_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_blocking_relations: MaybeUndefined>, /// Comparator for filtering projects with violated dependencies. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_violated_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_violated_relations: MaybeUndefined>, /// Comparator for the project updates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_updates: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_updates: MaybeUndefined>, /// Filters that the projects creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Filters that the projects lead must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lead: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lead: MaybeUndefined>, /// Filters that the projects members must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub members: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub members: MaybeUndefined>, /// Filters that the projects issues must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issues: MaybeUndefined>, /// Filters that the projects roadmaps must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub roadmaps: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub roadmaps: MaybeUndefined>, /// Filters that the projects initiatives must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiatives: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiatives: MaybeUndefined>, /// Filters that the project's milestones must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_milestones: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_milestones: MaybeUndefined>, /// Filters that the project's completed milestones must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub completed_project_milestones: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub completed_project_milestones: MaybeUndefined>, /// Filters that the project's next milestone must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub next_project_milestone: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub next_project_milestone: MaybeUndefined>, /// Filters that the project's team must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub accessible_teams: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub accessible_teams: MaybeUndefined>, /// Filters that the last applied template must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub last_applied_template: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub last_applied_template: MaybeUndefined>, /// Filters that the project's customer needs must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub needs: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub needs: MaybeUndefined>, /// Count of customers - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_count: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_count: MaybeUndefined>, /// Count of important customers - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_important_count: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_important_count: MaybeUndefined>, /// Compound filters, all of which need to be matched by the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some projects. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all projects. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The icon of the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub icon: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub icon: MaybeUndefined, /// The color of the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// The ID of the project status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status_id: MaybeUndefined, /// The description for the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The project content as markdown. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub content: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub content: MaybeUndefined, /// The identifiers of the teams this project is associated with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_ids: Option>, + pub team_ids: Vec, /// The ID of the issue from which that project is created. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub converted_from_issue_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub converted_from_issue_id: MaybeUndefined, /// The ID of the last template applied to the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub last_applied_template_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub last_applied_template_id: MaybeUndefined, /// The ID of the template to apply when creating the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub template_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub template_id: MaybeUndefined, /// When set to true, the default project template of the first team provided will be applied. If templateId is provided, this will be ignored. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub use_default_template: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub use_default_template: MaybeUndefined, /// The identifier of the project lead. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lead_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lead_id: MaybeUndefined, /// The identifiers of the members of this project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub member_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub member_ids: MaybeUndefined>, /// The planned start date of the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub start_date: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub start_date: MaybeUndefined, /// The resolution of the project's start date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub start_date_resolution: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub start_date_resolution: MaybeUndefined, /// The planned target date of the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined, /// The resolution of the project's estimated completion date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date_resolution: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date_resolution: MaybeUndefined, /// The sort order for the project within shared views. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, /// The sort order for the project within shared views, when ordered by priority. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority_sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority_sort_order: MaybeUndefined, /// The priority of the project. 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority: MaybeUndefined, /// `Internal`The identifiers of the project labels associated with this project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub label_ids: MaybeUndefined>, } /// Project creation date sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectCreatedAtSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Project filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the project name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the project slug ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slug_id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slug_id: MaybeUndefined>, /// `DEPRECATED` Comparator for the project state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub state: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub state: MaybeUndefined>, /// Filters that the project's status must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status: MaybeUndefined>, /// Comparator for the projects priority. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority: MaybeUndefined>, /// Filters that project labels must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub labels: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub labels: MaybeUndefined>, /// `Internal` Comparator for the project's content. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub searchable_content: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub searchable_content: MaybeUndefined>, /// Comparator for the project started date (when it was moved to an "In Progress" status). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub started_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub started_at: MaybeUndefined>, /// Comparator for the project completion date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub completed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub completed_at: MaybeUndefined>, /// Comparator for the project cancelation date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub canceled_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub canceled_at: MaybeUndefined>, /// Comparator for the project start date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub start_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub start_date: MaybeUndefined>, /// Comparator for the project target date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined>, /// Comparator for the project health: onTrack, atRisk, offTrack - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health: MaybeUndefined>, /// Comparator for the project health (with age): onTrack, atRisk, offTrack, outdated, noUpdate - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health_with_age: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health_with_age: MaybeUndefined>, /// `ALPHA` Comparator for the project activity type: buzzin, active, some, none - #[serde(default, skip_serializing_if = "Option::is_none")] - pub activity_type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub activity_type: MaybeUndefined>, /// Comparator for filtering projects with relations. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_related_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_related_relations: MaybeUndefined>, /// `Deprecated` Comparator for filtering projects which this is depended on by. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_depended_on_by_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_depended_on_by_relations: MaybeUndefined>, /// `Deprecated`Comparator for filtering projects which this depends on. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_depends_on_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_depends_on_relations: MaybeUndefined>, /// Comparator for filtering projects which are blocked. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_blocked_by_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_blocked_by_relations: MaybeUndefined>, /// Comparator for filtering projects which are blocking. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_blocking_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_blocking_relations: MaybeUndefined>, /// Comparator for filtering projects with violated dependencies. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_violated_relations: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub has_violated_relations: MaybeUndefined>, /// Comparator for the project updates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_updates: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_updates: MaybeUndefined>, /// Filters that the projects creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Filters that the projects lead must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lead: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lead: MaybeUndefined>, /// Filters that the projects members must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub members: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub members: MaybeUndefined>, /// Filters that the projects issues must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issues: MaybeUndefined>, /// Filters that the projects roadmaps must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub roadmaps: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub roadmaps: MaybeUndefined>, /// Filters that the projects initiatives must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiatives: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiatives: MaybeUndefined>, /// Filters that the project's milestones must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_milestones: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_milestones: MaybeUndefined>, /// Filters that the project's completed milestones must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub completed_project_milestones: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub completed_project_milestones: MaybeUndefined>, /// Filters that the project's next milestone must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub next_project_milestone: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub next_project_milestone: MaybeUndefined>, /// Filters that the project's team must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub accessible_teams: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub accessible_teams: MaybeUndefined>, /// Filters that the last applied template must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub last_applied_template: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub last_applied_template: MaybeUndefined>, /// Filters that the project's customer needs must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub needs: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub needs: MaybeUndefined>, /// Count of customers - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_count: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_count: MaybeUndefined>, /// Count of important customers - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_important_count: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_important_count: MaybeUndefined>, /// Compound filters, all of which need to be matched by the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Project health sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectHealthSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Project label filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectLabelCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for whether the label is a group label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_group: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_group: MaybeUndefined>, /// Filters that the project labels creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Filters that the project label's parent label must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent: MaybeUndefined>, /// Filter based on the existence of the relation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some project labels. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all project labels. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectLabelCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The description of the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The color of the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// The identifier of the parent label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent_id: MaybeUndefined, /// Whether the label is a group. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_group: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_group: MaybeUndefined, /// When the label was retired. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub retired_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub retired_at: MaybeUndefined>, } /// Project label filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectLabelFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for whether the label is a group label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_group: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_group: MaybeUndefined>, /// Filters that the project labels creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Filters that the project label's parent label must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent: MaybeUndefined>, /// Compound filters, all of which need to be matched by the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectLabelUpdateInput { /// The name of the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The description of the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The identifier of the parent label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent_id: MaybeUndefined, /// The color of the label. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// Whether the label is a group. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_group: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_group: MaybeUndefined, /// When the label was retired. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub retired_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub retired_at: MaybeUndefined>, } /// Project lead sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectLeadSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Project manual order sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectManualSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Milestone collection filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectMilestoneCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the project milestone name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the project milestone target date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined>, /// Filters that the project milestone's project must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project: MaybeUndefined>, /// Compound filters, all of which need to be matched by the milestone. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the milestone. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some milestones. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all milestones. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectMilestoneCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the project milestone. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The description of the project milestone in markdown format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// `Internal` The description of the project milestone as a Prosemirror document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description_data: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description_data: MaybeUndefined, /// The planned target date of the project milestone. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined, /// Related project for the project milestone. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + pub project_id: String, /// The sort order for the project milestone within a project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, } /// Project milestone filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectMilestoneFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the project milestone name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the project milestone target date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined>, /// Filters that the project milestone's project must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project: MaybeUndefined>, /// Compound filters, all of which need to be matched by the project milestone. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the project milestone. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectMilestoneMoveInput { /// The identifier of the project to move the milestone to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + pub project_id: String, /// The team id to move the attached issues to. This is needed when there is a mismatch between a project's teams and the milestone's issues' teams. Either this or addIssueTeamToProject is required in that situation to resolve constraints. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub new_issue_team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub new_issue_team_id: MaybeUndefined, /// Whether to add each milestone issue's team to the project. This is needed when there is a mismatch between a project's teams and the milestone's issues' teams. Either this or newIssueTeamId is required in that situation to resolve constraints. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub add_issue_team_to_project: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub add_issue_team_to_project: MaybeUndefined, /// A list of issue id to team ids, used for undoing a previous milestone move where the specified issues were moved from the specified teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub undo_issue_team_ids: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub undo_issue_team_ids: MaybeUndefined>>, /// A mapping of project id to a previous set of team ids, used for undoing a previous milestone move where the specified teams were added to the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub undo_project_team_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub undo_project_team_ids: MaybeUndefined>, } /// `Internal` Used for ProjectMilestoneMoveInput to describe a mapping between an issue and its team. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectMilestoneMoveIssueToTeamInput { /// The issue id in this relationship, you can use * as wildcard if all issues are being moved to the same team - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_id: Option, + pub issue_id: String, /// The team id in this relationship - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + pub team_id: String, } /// `Internal` Used for ProjectMilestoneMoveInput to describe a snapshot of a project and its team ids #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectMilestoneMoveProjectTeamsInput { /// The project id - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + pub project_id: String, /// The team ids for the project - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_ids: Option>, + pub team_ids: Vec, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectMilestoneUpdateInput { /// The name of the project milestone. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The description of the project milestone in markdown format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// `Internal` The description of the project milestone as a Prosemirror document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description_data: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description_data: MaybeUndefined, /// The planned target date of the project milestone. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined, /// The sort order for the project milestone within a project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, /// Related project for the project milestone. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_id: MaybeUndefined, } /// Project name sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectNameSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Project priority sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectPrioritySort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, /// Whether to consider no priority as the highest or lowest priority - #[serde(default, skip_serializing_if = "Option::is_none")] - pub no_priority_first: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub no_priority_first: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectRelationCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The type of relation of the project to the related project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + pub r#type: String, /// The identifier of the project that is related to another project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + pub project_id: String, /// The identifier of the project milestone. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_milestone_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_milestone_id: MaybeUndefined, /// The type of the anchor for the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub anchor_type: Option, + pub anchor_type: String, /// The identifier of the related project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub related_project_id: Option, + pub related_project_id: String, /// The identifier of the related project milestone. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub related_project_milestone_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub related_project_milestone_id: MaybeUndefined, /// The type of the anchor for the related project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub related_anchor_type: Option, + pub related_anchor_type: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectRelationUpdateInput { /// The type of relation of the project to the related project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined, /// The identifier of the project that is related to another project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_id: MaybeUndefined, /// The identifier of the project milestone. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_milestone_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_milestone_id: MaybeUndefined, /// The type of the anchor for the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub anchor_type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub anchor_type: MaybeUndefined, /// The identifier of the related project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub related_project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub related_project_id: MaybeUndefined, /// The identifier of the related project milestone. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub related_project_milestone_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub related_project_milestone_id: MaybeUndefined, /// The type of the anchor for the related project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub related_anchor_type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub related_anchor_type: MaybeUndefined, } /// Issue project sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Project sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectSortInput { /// Sort by project name - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Sort by project status - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status: MaybeUndefined>, /// Sort by project priority - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority: MaybeUndefined>, /// Sort by manual order - #[serde(default, skip_serializing_if = "Option::is_none")] - pub manual: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub manual: MaybeUndefined>, /// Sort by project target date - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined>, /// Sort by project start date - #[serde(default, skip_serializing_if = "Option::is_none")] - pub start_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub start_date: MaybeUndefined>, /// Sort by project creation date - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Sort by project update date - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Sort by project health status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health: MaybeUndefined>, /// Sort by project lead name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lead: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lead: MaybeUndefined>, } -#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectStatusCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The UI color of the status as a HEX string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + pub color: String, /// Description of the status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The position of the status in the workspace's project flow. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub position: Option, + pub position: f64, /// The type of the project status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + pub r#type: ProjectStatusType, /// Whether or not a project can be in this status indefinitely. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub indefinite: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub indefinite: MaybeUndefined, } /// Project status filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectStatusFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the project status name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the project status description. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined>, /// Comparator for the project status position. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub position: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub position: MaybeUndefined>, /// Comparator for the project status type. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined>, /// Filters that the project status projects must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub projects: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub projects: MaybeUndefined>, /// Compound filters, all of which need to be matched by the project status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which needs to be matched by the project status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Project status sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectStatusSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectStatusUpdateInput { /// The name of the status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The UI color of the status as a HEX string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// Description of the status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The position of the status in the workspace's project flow. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub position: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub position: MaybeUndefined, /// The type of the project status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined, /// Whether or not a project can be in this status indefinitely. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub indefinite: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub indefinite: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectUpdateCreateInput { /// The identifier. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The content of the project update in markdown format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body: MaybeUndefined, /// `Internal` The content of the project update as a Prosemirror document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body_data: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body_data: MaybeUndefined, /// The project to associate the project update with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + pub project_id: String, /// The health of the project at the time of the update. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health: MaybeUndefined, /// Whether the diff between the current update and the previous one should be hidden. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_diff_hidden: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_diff_hidden: MaybeUndefined, } /// Options for filtering project updates. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectUpdateFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Filters that the project update creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub user: MaybeUndefined>, /// Filters that the project update project must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project: MaybeUndefined>, /// Filters that the project updates reactions must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub reactions: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub reactions: MaybeUndefined>, /// Compound filters, all of which need to be matched by the ProjectUpdate. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the ProjectUpdate. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectUpdateInput { /// The ID of the project status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status_id: MaybeUndefined, /// The name of the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The description for the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The project content as markdown. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub content: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub content: MaybeUndefined, /// The ID of the issue from which that project is created. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub converted_from_issue_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub converted_from_issue_id: MaybeUndefined, /// The ID of the last template applied to the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub last_applied_template_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub last_applied_template_id: MaybeUndefined, /// The icon of the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub icon: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub icon: MaybeUndefined, /// The color of the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// The identifiers of the teams this project is associated with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_ids: MaybeUndefined>, /// The time until which project update reminders are paused. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_update_reminders_paused_until_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_update_reminders_paused_until_at: MaybeUndefined>, /// The n-weekly frequency at which to prompt for updates. When not set, reminders are inherited from workspace. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub update_reminder_frequency_in_weeks: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub update_reminder_frequency_in_weeks: MaybeUndefined, /// The frequency at which to prompt for updates. When not set, reminders are inherited from workspace. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub update_reminder_frequency: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub update_reminder_frequency: MaybeUndefined, /// The frequency resolution. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub frequency_resolution: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub frequency_resolution: MaybeUndefined, /// The day at which to prompt for updates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub update_reminders_day: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub update_reminders_day: MaybeUndefined, /// The hour at which to prompt for updates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub update_reminders_hour: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub update_reminders_hour: MaybeUndefined, /// The identifier of the project lead. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lead_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub lead_id: MaybeUndefined, /// The identifiers of the members of this project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub member_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub member_ids: MaybeUndefined>, /// The planned start date of the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub start_date: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub start_date: MaybeUndefined, /// The resolution of the project's start date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub start_date_resolution: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub start_date_resolution: MaybeUndefined, /// The planned target date of the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined, /// The resolution of the project's estimated completion date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date_resolution: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date_resolution: MaybeUndefined, /// The date when the project was completed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub completed_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub completed_at: MaybeUndefined>, /// The date when the project was canceled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub canceled_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub canceled_at: MaybeUndefined>, /// Whether to send new issue notifications to Slack. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_new_issue: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_new_issue: MaybeUndefined, /// Whether to send new issue comment notifications to Slack. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_comments: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_comments: MaybeUndefined, /// Whether to send issue status update notifications to Slack. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_statuses: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_statuses: MaybeUndefined, /// The sort order for the project in shared views. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, /// The sort order for the project within shared views, when ordered by priority. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority_sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority_sort_order: MaybeUndefined, /// Whether the project has been trashed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub trashed: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub trashed: MaybeUndefined, /// The priority of the project. 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub priority: MaybeUndefined, /// The identifiers of the project labels associated with this project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label_ids: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub label_ids: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectUpdateUpdateInput { /// The content of the project update in markdown format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body: MaybeUndefined, /// The content of the project update as a Prosemirror document. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub body_data: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub body_data: MaybeUndefined, /// The health of the project at the time of the update. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health: MaybeUndefined, /// Whether the diff between the current update and the previous one should be hidden. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_diff_hidden: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_diff_hidden: MaybeUndefined, } /// Project update date sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectUpdatedAtSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Collection filtering options for filtering projects by project updates. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectUpdatesCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the project update health. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health: MaybeUndefined>, /// Compound filters, all of which need to be matched by the project update. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the update. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some updates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all updates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, } /// Options for filtering projects by project updates. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProjectUpdatesFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the project update health. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub health: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub health: MaybeUndefined>, /// Compound filters, all of which need to be matched by the project updates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the project updates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Input for referencing a pull request by repository and number. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct PullRequestReferenceInput { /// The owner of the repository (e.g., organization or user name). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub repository_owner: Option, + pub repository_owner: String, /// The name of the repository. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub repository_name: Option, + pub repository_name: String, /// The pull request number. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub number: Option, + pub number: f64, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct PushSubscriptionCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The data of the subscription in stringified JSON format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub data: Option, + pub data: String, /// Whether this is a subscription payload for Google Cloud Messaging or Apple Push Notification service. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined, } /// Reaction filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReactionCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the reactions emoji. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub emoji: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub emoji: MaybeUndefined>, /// Comparator for the reactions custom emoji. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub custom_emoji_id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub custom_emoji_id: MaybeUndefined>, /// Compound filters, all of which need to be matched by the reaction. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the reaction. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some reactions. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all reactions. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReactionCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The emoji the user reacted with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub emoji: Option, + pub emoji: String, /// The comment to associate the reaction with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub comment_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub comment_id: MaybeUndefined, /// The project update to associate the reaction with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_update_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_update_id: MaybeUndefined, /// The update to associate the reaction with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_update_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_update_id: MaybeUndefined, /// The issue to associate the reaction with. Can be a UUID or issue identifier (e.g., 'LIN-123'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_id: MaybeUndefined, /// `Internal` The post to associate the reaction with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub post_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub post_id: MaybeUndefined, /// `Internal` The pull request to associate the reaction with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pull_request_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub pull_request_id: MaybeUndefined, /// `Internal` The pull request comment to associate the reaction with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pull_request_comment_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub pull_request_comment_id: MaybeUndefined, } /// Reaction filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReactionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the reactions emoji. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub emoji: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub emoji: MaybeUndefined>, /// Comparator for the reactions custom emoji. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub custom_emoji_id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub custom_emoji_id: MaybeUndefined>, /// Compound filters, all of which need to be matched by the reaction. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the reaction. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Comparator for relation existence. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct RelationExistsComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, } /// `ALPHA` Release collection filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleaseCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Filters that the release's pipeline must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pipeline: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub pipeline: MaybeUndefined>, /// Filters that the release's stage must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub stage: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub stage: MaybeUndefined>, /// Compound filters, all of which need to be matched by the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some releases. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all releases. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleaseCompleteInput { /// The version of the release to complete. If not provided, the latest started release will be completed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub version: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub version: MaybeUndefined, /// The commit SHA associated with this completion. If a completed release with this SHA already exists, it will be returned instead of completing a new release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub commit_sha: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub commit_sha: MaybeUndefined, /// The identifier of the pipeline to mark a release as completed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pipeline_id: Option, + pub pipeline_id: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleaseCompleteInputBase { /// The version of the release to complete. If not provided, the latest started release will be completed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub version: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub version: MaybeUndefined, /// The commit SHA associated with this completion. If a completed release with this SHA already exists, it will be returned instead of completing a new release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub commit_sha: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub commit_sha: MaybeUndefined, } /// The input for creating a release. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleaseCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The description of the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The version of the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub version: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub version: MaybeUndefined, /// The commit SHA associated with this release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub commit_sha: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub commit_sha: MaybeUndefined, /// The identifier of the pipeline this release belongs to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pipeline_id: Option, + pub pipeline_id: String, /// The current stage of the release. Defaults to the first 'completed' stage for continuous pipelines, or the first 'started' stage for scheduled pipelines. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub stage_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub stage_id: MaybeUndefined, /// The estimated start date of the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub start_date: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub start_date: MaybeUndefined, /// The estimated completion date of the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined, } /// Debug sink for release creation diagnostics. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleaseDebugSinkInput { /// List of commit SHAs that were inspected. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub inspected_shas: Option>, + pub inspected_shas: Vec, /// Map of issue identifiers to their source information. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issues: Option, + pub issues: serde_json::Value, /// Pull request debug information. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pull_requests: Option>, + pub pull_requests: Vec, /// List of paths applied during commit scanning. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub include_paths: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub include_paths: MaybeUndefined>, } /// `ALPHA` Release filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleaseFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Filters that the release's pipeline must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pipeline: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub pipeline: MaybeUndefined>, /// Filters that the release's stage must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub stage: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub stage: MaybeUndefined>, /// Compound filters, all of which need to be matched by the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleasePipelineCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the pipeline. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The pipeline's unique slug identifier. If not provided, it will be auto-generated. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slug_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slug_id: MaybeUndefined, /// The type of the pipeline. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined, /// Glob patterns to include commits affecting matching file paths. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub include_path_patterns: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub include_path_patterns: MaybeUndefined>, } /// `ALPHA` Release pipeline filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleasePipelineFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Compound filters, all of which need to be matched by the pipeline. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the pipeline. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleasePipelineUpdateInput { /// The name of the pipeline. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The pipeline's unique slug identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slug_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slug_id: MaybeUndefined, /// The type of the pipeline. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined, /// Glob patterns to include commits affecting matching file paths. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub include_path_patterns: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub include_path_patterns: MaybeUndefined>, } -#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleaseStageCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the stage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The UI color of the stage as a HEX string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + pub color: String, /// The type of the stage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + pub r#type: ReleaseStageType, /// The position of the stage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub position: Option, + pub position: f64, /// The identifier of the pipeline this stage belongs to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pipeline_id: Option, + pub pipeline_id: String, /// Whether this stage is frozen. Only applicable to started stages. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub frozen: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub frozen: MaybeUndefined, } /// `ALPHA` Release stage filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleaseStageFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the stage type. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined>, /// Comparator for the stage name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Compound filters, all of which need to be matched by the stage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the stage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// `ALPHA` Comparator for release stage type. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleaseStageTypeComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, /// Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleaseStageUpdateInput { /// The name of the stage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The UI color of the stage as a HEX string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// The position of the stage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub position: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub position: MaybeUndefined, /// Whether this stage is frozen. Only applicable to started stages. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub frozen: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub frozen: MaybeUndefined, } /// The release data to sync. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleaseSyncInput { /// The name of the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The version of the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub version: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub version: MaybeUndefined, /// The commit SHA associated with this release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub commit_sha: Option, + pub commit_sha: String, /// Issue references (e.g. ENG-123) to associate with this release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_references: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_references: MaybeUndefined>>, /// Pull request references to look up. Issues linked to found PRs will be associated with this release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pull_request_references: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub pull_request_references: MaybeUndefined>>, /// Information about the source repository. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub repository: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub repository: MaybeUndefined>, /// Debug information for release creation diagnostics. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub debug_sink: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub debug_sink: MaybeUndefined>, /// The identifier of the pipeline this release belongs to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pipeline_id: Option, + pub pipeline_id: String, } /// Base release sync data without pipeline specification. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleaseSyncInputBase { /// The name of the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The version of the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub version: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub version: MaybeUndefined, /// The commit SHA associated with this release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub commit_sha: Option, + pub commit_sha: String, /// Issue references (e.g. ENG-123) to associate with this release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_references: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_references: MaybeUndefined>>, /// Pull request references to look up. Issues linked to found PRs will be associated with this release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pull_request_references: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub pull_request_references: MaybeUndefined>>, /// Information about the source repository. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub repository: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub repository: MaybeUndefined>, /// Debug information for release creation diagnostics. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub debug_sink: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub debug_sink: MaybeUndefined>, } /// Input for updating a release by pipeline. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleaseUpdateByPipelineInput { /// The version of the release to update. If not provided, the latest started or latest planned release will be updated. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub version: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub version: MaybeUndefined, /// The stage name to set. First tries exact match, then falls back to case-insensitive matching with dashes/underscores treated as spaces. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub stage: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub stage: MaybeUndefined, /// The identifier of the pipeline. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pipeline_id: Option, + pub pipeline_id: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleaseUpdateByPipelineInputBase { /// The version of the release to update. If not provided, the latest started or latest planned release will be updated. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub version: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub version: MaybeUndefined, /// The stage name to set. First tries exact match, then falls back to case-insensitive matching with dashes/underscores treated as spaces. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub stage: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub stage: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReleaseUpdateInput { /// The name of the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The description of the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The version of the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub version: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub version: MaybeUndefined, /// The commit SHA associated with this release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub commit_sha: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub commit_sha: MaybeUndefined, /// The identifier of the pipeline this release belongs to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pipeline_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub pipeline_id: MaybeUndefined, /// The current stage of the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub stage_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub stage_id: MaybeUndefined, /// The estimated start date of the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub start_date: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub start_date: MaybeUndefined, /// The estimated completion date of the release. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub target_date: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub target_date: MaybeUndefined, } /// Information about the source repository. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct RepositoryDataInput { /// The owner of the repository (e.g., organization or user name). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner: Option, + pub owner: String, /// The name of the repository. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The VCS provider hosting the repository (e.g., 'github', 'gitlab'). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub provider: Option, + pub provider: String, /// The base URL of the repository on the hosting provider (e.g., ''). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub url: Option, + pub url: String, } /// Customer revenue sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct RevenueSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Roadmap collection filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct RoadmapCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the roadmap name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the roadmap slug ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slug_id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slug_id: MaybeUndefined>, /// Filters that the roadmap creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Compound filters, all of which need to be matched by the roadmap. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the roadmap. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some roadmaps. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all roadmaps. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct RoadmapCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the roadmap. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The description of the roadmap. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The owner of the roadmap. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner_id: MaybeUndefined, /// The sort order of the roadmap within the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, /// The roadmap's color. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, } /// Roadmap filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct RoadmapFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the roadmap name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the roadmap slug ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slug_id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slug_id: MaybeUndefined>, /// Filters that the roadmap creator must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub creator: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub creator: MaybeUndefined>, /// Compound filters, all of which need to be matched by the roadmap. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the roadmap. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct RoadmapToProjectCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The identifier of the project. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + pub project_id: String, /// The identifier of the roadmap. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub roadmap_id: Option, + pub roadmap_id: String, /// The sort order for the project within its organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct RoadmapToProjectUpdateInput { /// The sort order for the project within its organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct RoadmapUpdateInput { /// The name of the roadmap. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The description of the roadmap. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The owner of the roadmap. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner_id: MaybeUndefined, /// The sort order of the roadmap within the organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, /// The roadmap's color. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, } /// Issue root-issue sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct RootIssueSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, /// The sort to apply to the root issues - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort: Option>, + pub sort: Box, } /// `INTERNAL` Comparator for Salesforce metadata. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SalesforceMetadataIntegrationComparator { /// Salesforce Case metadata filter - #[serde(default, skip_serializing_if = "Option::is_none")] - pub case_metadata: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub case_metadata: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SalesforceSettingsInput { /// Whether an internal message should be added when a Linear issue changes status (for status types except completed or canceled). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub send_note_on_status_change: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub send_note_on_status_change: MaybeUndefined, /// Whether an internal message should be added when someone comments on an issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub send_note_on_comment: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub send_note_on_comment: MaybeUndefined, /// Whether a ticket should be automatically reopened when its linked Linear issue is completed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_completion: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_completion: MaybeUndefined, /// Whether a ticket should be automatically reopened when its linked Linear issue is cancelled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_cancellation: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_cancellation: MaybeUndefined, /// Whether a ticket should be automatically reopened when a comment is posted on its linked Linear issue - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_comment: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_comment: MaybeUndefined, /// `ALPHA` Whether customer and customer requests should not be automatically created when conversations are linked to a Linear issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub disable_customer_requests_auto_creation: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub disable_customer_requests_auto_creation: MaybeUndefined, /// Whether a ticket should be automatically reopened when its linked Linear project is completed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_project_completion: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_project_completion: MaybeUndefined, /// Whether a ticket should be automatically reopened when its linked Linear project is cancelled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_project_cancellation: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_project_cancellation: MaybeUndefined, /// Whether Linear Agent should be enabled for this integration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enable_ai_intake: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub enable_ai_intake: MaybeUndefined, /// The Salesforce subdomain. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subdomain: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subdomain: MaybeUndefined, /// The Salesforce instance URL. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub url: MaybeUndefined, /// The Salesforce case status to use to reopen cases. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub reopen_case_status: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub reopen_case_status: MaybeUndefined, /// Whether to restrict visibility of the integration to issues that have been either created from Salesforce or linked to Salesforce. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub restrict_visibility: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub restrict_visibility: MaybeUndefined, /// The Salesforce team to use when a template doesn't specify a team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub default_team: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub default_team: MaybeUndefined, } /// Filters for semantic search results. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SemanticSearchFilters { /// Filters applied to issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issues: MaybeUndefined>, /// Filters applied to projects. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub projects: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub projects: MaybeUndefined>, /// Filters applied to initiatives. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiatives: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiatives: MaybeUndefined>, /// Filters applied to documents. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub documents: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub documents: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SentrySettingsInput { /// The slug of the Sentry organization being connected. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub organization_slug: Option, + pub organization_slug: String, /// The ID of the Sentry organization being connected. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub organization_id: Option, + pub organization_id: String, /// Whether Sentry issues resolving completes Linear issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub resolving_completes_issues: Option, + pub resolving_completes_issues: bool, /// Whether Sentry issues unresolving reopens Linear issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub unresolving_reopens_issues: Option, + pub unresolving_reopens_issues: bool, } /// Customer size sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SizeSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Comparator for sla status. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SlaStatusComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, /// Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, } /// Issue SLA status sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SlaStatusSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } -#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SlackAsksSettingsInput { /// Slack workspace name - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_name: MaybeUndefined, /// Slack workspace id - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// Enterprise name of the connected Slack enterprise - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enterprise_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub enterprise_name: MaybeUndefined, /// Enterprise id of the connected Slack enterprise - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enterprise_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub enterprise_id: MaybeUndefined, /// Whether to show unfurl previews in Slack - #[serde(default, skip_serializing_if = "Option::is_none")] - pub should_unfurl: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub should_unfurl: MaybeUndefined, /// Whether to show unfurls in the default style instead of Work Objects in Slack - #[serde(default, skip_serializing_if = "Option::is_none")] - pub should_use_default_unfurl: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub should_use_default_unfurl: MaybeUndefined, /// Whether to allow external users to perform actions on unfurls - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_user_actions: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_user_actions: MaybeUndefined, /// The mapping of Slack channel ID => Slack channel name for connected channels. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_channel_mapping: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_channel_mapping: MaybeUndefined>>, /// The user role type that is allowed to manage Asks settings. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub can_administrate: Option, + pub can_administrate: UserRoleType, /// Controls who can see and set Customers when creating Asks in Slack. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub customer_visibility: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub customer_visibility: MaybeUndefined, /// Whether Linear Agent should be enabled for this Slack Asks integration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enable_agent: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub enable_agent: MaybeUndefined, /// Whether Linear Agent should be given Org-wide access within Slack workflows. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enable_linear_agent_workflow_access: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub enable_linear_agent_workflow_access: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SlackAsksTeamSettingsInput { /// The Linear team ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + pub id: String, /// Whether the default Asks template is enabled in the given channel for this team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub has_default_ask: Option, + pub has_default_ask: bool, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SlackChannelNameMappingInput { /// The Slack channel ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + pub id: String, /// The Slack channel name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// Whether or not the Slack channel is private. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_private: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_private: MaybeUndefined, /// Whether or not the Slack channel is shared with an external org. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_shared: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_shared: MaybeUndefined, /// Whether or not the Linear Asks bot has been added to this Slack channel. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub bot_added: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub bot_added: MaybeUndefined, /// Which teams are connected to the channel and settings for those teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub teams: Option>>, + pub teams: Vec>, /// Whether or not top-level messages in this channel should automatically create Asks. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_create_on_message: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_create_on_message: MaybeUndefined, /// Whether or not using the :ticket: emoji in this channel should automatically create Asks. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_create_on_emoji: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_create_on_emoji: MaybeUndefined, /// Whether or not @-mentioning the bot should automatically create an Ask with the message. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_create_on_bot_mention: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_create_on_bot_mention: MaybeUndefined, /// The optional template ID to use for Asks auto-created in this channel. If not set, auto-created Asks won't use any template. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_create_template_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_create_template_id: MaybeUndefined, /// Whether or not synced Slack threads should be updated with a message and emoji when their Ask is canceled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub post_cancellation_updates: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub post_cancellation_updates: MaybeUndefined, /// Whether or not synced Slack threads should be updated with a message and emoji when their Ask is completed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub post_completion_updates: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub post_completion_updates: MaybeUndefined, /// Whether or not synced Slack threads should be updated with a message when their Ask is accepted from triage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub post_accepted_from_triage_updates: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub post_accepted_from_triage_updates: MaybeUndefined, /// Whether or not to use AI to generate titles for Asks created in this channel. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ai_titles: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ai_titles: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SlackPostSettingsInput { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub channel: Option, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub channel_id: Option, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub configuration_url: Option, + pub channel: String, + pub channel_id: String, + pub configuration_url: String, /// Slack workspace id - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub channel_type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub channel_type: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SlackSettingsInput { /// Slack workspace name - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_name: MaybeUndefined, /// Slack workspace id - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// Enterprise name of the connected Slack enterprise - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enterprise_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub enterprise_name: MaybeUndefined, /// Enterprise id of the connected Slack enterprise - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enterprise_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub enterprise_id: MaybeUndefined, /// Whether to show unfurl previews in Slack - #[serde(default, skip_serializing_if = "Option::is_none")] - pub should_unfurl: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub should_unfurl: MaybeUndefined, /// Whether to show unfurls in the default style instead of Work Objects in Slack - #[serde(default, skip_serializing_if = "Option::is_none")] - pub should_use_default_unfurl: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub should_use_default_unfurl: MaybeUndefined, /// Whether to allow external users to perform actions on unfurls - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_user_actions: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_user_actions: MaybeUndefined, /// Whether Linear should automatically respond with issue unfurls when an issue identifier is mentioned in a Slack message. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub link_on_issue_id_mention: Option, + pub link_on_issue_id_mention: bool, /// Whether Linear Agent should be enabled for this Slack integration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enable_agent: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub enable_agent: MaybeUndefined, /// Whether Linear Agent should be given Org-wide access within Slack workflows. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enable_linear_agent_workflow_access: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub enable_linear_agent_workflow_access: MaybeUndefined, } /// Comparator for issue source type. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SourceMetadataComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, /// Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, /// Comparator for the sub type. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sub_type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sub_type: MaybeUndefined>, /// `INTERNAL` Comparator for the salesforce metadata. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub salesforce_metadata: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub salesforce_metadata: MaybeUndefined>, } /// Comparator for `sourceType` field. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SourceTypeComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, /// Equals case insensitive. Matches any values that matches the given string case insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq_ignore_case: MaybeUndefined, /// Not-equals case insensitive. Matches any values that don't match the given string case insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq_ignore_case: MaybeUndefined, /// Starts with constraint. Matches any values that start with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub starts_with: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub starts_with: MaybeUndefined, /// Starts with case insensitive constraint. Matches any values that start with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub starts_with_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub starts_with_ignore_case: MaybeUndefined, /// Doesn't start with constraint. Matches any values that don't start with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_starts_with: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_starts_with: MaybeUndefined, /// Ends with constraint. Matches any values that end with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ends_with: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ends_with: MaybeUndefined, /// Doesn't end with constraint. Matches any values that don't end with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_ends_with: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_ends_with: MaybeUndefined, /// Contains constraint. Matches any values that contain the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub contains: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub contains: MaybeUndefined, /// Contains case insensitive constraint. Matches any values that contain the given string case insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub contains_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub contains_ignore_case: MaybeUndefined, /// Doesn't contain constraint. Matches any values that don't contain the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_contains: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_contains: MaybeUndefined, /// Doesn't contain case insensitive constraint. Matches any values that don't contain the given string case insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_contains_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_contains_ignore_case: MaybeUndefined, /// Contains case and accent insensitive constraint. Matches any values that contain the given string case and accent insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub contains_ignore_case_and_accent: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub contains_ignore_case_and_accent: MaybeUndefined, } /// Project start date sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct StartDateSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Comparator for strings. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct StringArrayComparator { /// Length of the array. Matches any values that have the given length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, /// Compound filters, all of which need to be matched. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Compound filters, one of which needs to be matched. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, } /// Comparator for strings. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct StringComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, /// Equals case insensitive. Matches any values that matches the given string case insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq_ignore_case: MaybeUndefined, /// Not-equals case insensitive. Matches any values that don't match the given string case insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq_ignore_case: MaybeUndefined, /// Starts with constraint. Matches any values that start with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub starts_with: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub starts_with: MaybeUndefined, /// Starts with case insensitive constraint. Matches any values that start with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub starts_with_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub starts_with_ignore_case: MaybeUndefined, /// Doesn't start with constraint. Matches any values that don't start with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_starts_with: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_starts_with: MaybeUndefined, /// Ends with constraint. Matches any values that end with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ends_with: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ends_with: MaybeUndefined, /// Doesn't end with constraint. Matches any values that don't end with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_ends_with: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_ends_with: MaybeUndefined, /// Contains constraint. Matches any values that contain the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub contains: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub contains: MaybeUndefined, /// Contains case insensitive constraint. Matches any values that contain the given string case insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub contains_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub contains_ignore_case: MaybeUndefined, /// Doesn't contain constraint. Matches any values that don't contain the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_contains: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_contains: MaybeUndefined, /// Doesn't contain case insensitive constraint. Matches any values that don't contain the given string case insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_contains_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_contains_ignore_case: MaybeUndefined, /// Contains case and accent insensitive constraint. Matches any values that contain the given string case and accent insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub contains_ignore_case_and_accent: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub contains_ignore_case_and_accent: MaybeUndefined, } /// Comparator for strings in arrays. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct StringItemComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, /// Equals case insensitive. Matches any values that matches the given string case insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq_ignore_case: MaybeUndefined, /// Not-equals case insensitive. Matches any values that don't match the given string case insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq_ignore_case: MaybeUndefined, /// Starts with constraint. Matches any values that start with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub starts_with: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub starts_with: MaybeUndefined, /// Starts with case insensitive constraint. Matches any values that start with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub starts_with_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub starts_with_ignore_case: MaybeUndefined, /// Doesn't start with constraint. Matches any values that don't start with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_starts_with: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_starts_with: MaybeUndefined, /// Ends with constraint. Matches any values that end with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ends_with: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ends_with: MaybeUndefined, /// Doesn't end with constraint. Matches any values that don't end with the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_ends_with: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_ends_with: MaybeUndefined, /// Contains constraint. Matches any values that contain the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub contains: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub contains: MaybeUndefined, /// Contains case insensitive constraint. Matches any values that contain the given string case insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub contains_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub contains_ignore_case: MaybeUndefined, /// Doesn't contain constraint. Matches any values that don't contain the given string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_contains: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_contains: MaybeUndefined, /// Doesn't contain case insensitive constraint. Matches any values that don't contain the given string case insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub not_contains_ignore_case: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub not_contains_ignore_case: MaybeUndefined, /// Contains case and accent insensitive constraint. Matches any values that contain the given string case and accent insensitive. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub contains_ignore_case_and_accent: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub contains_ignore_case_and_accent: MaybeUndefined, } /// Comparator for source type. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SubTypeComparator { /// Equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub eq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub eq: MaybeUndefined, /// Not-equals constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub neq: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub neq: MaybeUndefined, /// In-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#in: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#in: MaybeUndefined>, /// Not-in-array constraint. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nin: MaybeUndefined>, /// Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub null: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub null: MaybeUndefined, } /// Project target date sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TargetDateSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Team collection filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TeamCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Compound filters, all of which need to be matched by the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, /// Filters that the teams parent must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TeamCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The description of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The key of the team. If not given, the key will be generated based on the name of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub key: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub key: MaybeUndefined, /// The icon of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub icon: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub icon: MaybeUndefined, /// The color of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// Whether the team uses cycles. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycles_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycles_enabled: MaybeUndefined, /// The day of the week that a new cycle starts. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_start_day: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_start_day: MaybeUndefined, /// The duration of each cycle in weeks. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_duration: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_duration: MaybeUndefined, /// The cooldown time after each cycle in weeks. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_cooldown_time: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_cooldown_time: MaybeUndefined, /// Auto assign started issues to current active cycle setting. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_issue_auto_assign_started: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_issue_auto_assign_started: MaybeUndefined, /// Auto assign completed issues to current active cycle setting. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_issue_auto_assign_completed: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_issue_auto_assign_completed: MaybeUndefined, /// Only allow issues issues with cycles in Active Issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_lock_to_active: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_lock_to_active: MaybeUndefined, /// How many upcoming cycles to create. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub upcoming_cycle_count: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub upcoming_cycle_count: MaybeUndefined, /// Whether triage mode is enabled for the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub triage_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub triage_enabled: MaybeUndefined, /// Whether an issue needs to have a priority set before leaving triage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub require_priority_to_leave_triage: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub require_priority_to_leave_triage: MaybeUndefined, /// The timezone of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub timezone: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub timezone: MaybeUndefined, /// Whether the team should inherit estimation settings from its parent. Only applies to sub-teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub inherit_issue_estimation: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub inherit_issue_estimation: MaybeUndefined, /// `Internal` Whether the team should inherit workflow statuses from its parent. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub inherit_workflow_statuses: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub inherit_workflow_statuses: MaybeUndefined, /// The issue estimation type to use. Must be one of "notUsed", "exponential", "fibonacci", "linear", "tShirt". - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_estimation_type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_estimation_type: MaybeUndefined, /// Whether to allow zeros in issues estimates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_estimation_allow_zero: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_estimation_allow_zero: MaybeUndefined, /// Whether to move issues to bottom of the column when changing state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub set_issue_sort_order_on_state_change: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub set_issue_sort_order_on_state_change: MaybeUndefined, /// Whether to add additional points to the estimate scale. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_estimation_extended: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_estimation_extended: MaybeUndefined, /// What to use as an default estimate for unestimated issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub default_issue_estimate: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub default_issue_estimate: MaybeUndefined, /// Whether to group recent issue history entries. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub group_issue_history: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub group_issue_history: MaybeUndefined, /// The identifier of the default template for members of this team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub default_template_for_members_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub default_template_for_members_id: MaybeUndefined, /// The identifier of the default template for non-members of this team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub default_template_for_non_members_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub default_template_for_non_members_id: MaybeUndefined, /// The identifier of the default project template of this team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub default_project_template_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub default_project_template_id: MaybeUndefined, /// Internal. Whether the team is private or not. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub private: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub private: MaybeUndefined, /// Period after which issues are automatically closed, in months. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_close_period: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_close_period: MaybeUndefined, /// The canceled workflow state which auto closed issues will be set to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_close_state_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_close_state_id: MaybeUndefined, /// Period after which closed and completed issues are automatically archived, in months. 0 means disabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_archive_period: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_archive_period: MaybeUndefined, /// The workflow state into which issues are moved when they are marked as a duplicate of another issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub marked_as_duplicate_workflow_state_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub marked_as_duplicate_workflow_state_id: MaybeUndefined, /// The parent team ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent_id: MaybeUndefined, /// `Internal` Whether the team should inherit its product intelligence scope from its parent. Only applies to sub-teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub inherit_product_intelligence_scope: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub inherit_product_intelligence_scope: MaybeUndefined, /// `Internal` The scope of product intelligence suggestion data for the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub product_intelligence_scope: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub product_intelligence_scope: MaybeUndefined, } /// Team filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TeamFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the team name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the team key. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub key: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub key: MaybeUndefined>, /// Comparator for the team description. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined>, /// Comparator for the team privacy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub private: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub private: MaybeUndefined>, /// Filters that the teams issues must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issues: MaybeUndefined>, /// Filters that the teams parent must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent: MaybeUndefined>, /// Compound filters, all of which need to be matched by the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TeamMembershipCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The identifier of the user associated with the membership. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user_id: Option, + pub user_id: String, /// The identifier of the team associated with the membership. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + pub team_id: String, /// Internal. Whether the user is the owner of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner: MaybeUndefined, /// The position of the item in the users list. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TeamMembershipUpdateInput { /// Internal. Whether the user is the owner of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner: MaybeUndefined, /// The position of the item in the users list. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TeamSecuritySettingsInput { /// The minimum team role required to manage labels in the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label_management: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub label_management: MaybeUndefined, /// The minimum team role required to manage full workspace members (non-guests) in the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub member_management: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub member_management: MaybeUndefined, /// The minimum team role required to manage team settings. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_management: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_management: MaybeUndefined, /// The minimum team role required to manage templates in the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub template_management: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub template_management: MaybeUndefined, } /// Issue team sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TeamSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TeamUpdateInput { /// The name of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The description of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The key of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub key: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub key: MaybeUndefined, /// The icon of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub icon: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub icon: MaybeUndefined, /// The color of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// Whether the team uses cycles. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycles_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycles_enabled: MaybeUndefined, /// The day of the week that a new cycle starts. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_start_day: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_start_day: MaybeUndefined, /// The duration of each cycle in weeks. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_duration: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_duration: MaybeUndefined, /// The cooldown time after each cycle in weeks. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_cooldown_time: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_cooldown_time: MaybeUndefined, /// Auto assign started issues to current active cycle setting. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_issue_auto_assign_started: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_issue_auto_assign_started: MaybeUndefined, /// Auto assign completed issues to current active cycle setting. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_issue_auto_assign_completed: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_issue_auto_assign_completed: MaybeUndefined, /// Only allow issues with cycles in Active Issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_lock_to_active: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_lock_to_active: MaybeUndefined, /// The date to begin cycles on. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cycle_enabled_start_date: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub cycle_enabled_start_date: MaybeUndefined>, /// How many upcoming cycles to create. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub upcoming_cycle_count: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub upcoming_cycle_count: MaybeUndefined, /// The timezone of the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub timezone: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub timezone: MaybeUndefined, /// Whether the team should inherit estimation settings from its parent. Only applies to sub-teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub inherit_issue_estimation: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub inherit_issue_estimation: MaybeUndefined, /// The issue estimation type to use. Must be one of "notUsed", "exponential", "fibonacci", "linear", "tShirt". - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_estimation_type: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_estimation_type: MaybeUndefined, /// Whether to allow zeros in issues estimates. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_estimation_allow_zero: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_estimation_allow_zero: MaybeUndefined, /// Whether to move issues to bottom of the column when changing state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub set_issue_sort_order_on_state_change: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub set_issue_sort_order_on_state_change: MaybeUndefined, /// Whether to add additional points to the estimate scale. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issue_estimation_extended: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issue_estimation_extended: MaybeUndefined, /// What to use as an default estimate for unestimated issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub default_issue_estimate: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub default_issue_estimate: MaybeUndefined, /// Whether to send new issue notifications to Slack. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_new_issue: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_new_issue: MaybeUndefined, /// Whether to send new issue comment notifications to Slack. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_comments: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_comments: MaybeUndefined, /// Whether to send issue status update notifications to Slack. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub slack_issue_statuses: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub slack_issue_statuses: MaybeUndefined, /// Whether to group recent issue history entries. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub group_issue_history: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub group_issue_history: MaybeUndefined, /// Whether to enable resolved thread AI summaries. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ai_thread_summaries_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ai_thread_summaries_enabled: MaybeUndefined, /// Whether to enable AI discussion summaries for issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ai_discussion_summaries_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub ai_discussion_summaries_enabled: MaybeUndefined, /// The identifier of the default template for members of this team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub default_template_for_members_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub default_template_for_members_id: MaybeUndefined, /// The identifier of the default template for non-members of this team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub default_template_for_non_members_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub default_template_for_non_members_id: MaybeUndefined, /// The identifier of the default project template of this team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub default_project_template_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub default_project_template_id: MaybeUndefined, /// Whether the team is private or not. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub private: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub private: MaybeUndefined, /// Whether triage mode is enabled for the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub triage_enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub triage_enabled: MaybeUndefined, /// Whether an issue needs to have a priority set before leaving triage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub require_priority_to_leave_triage: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub require_priority_to_leave_triage: MaybeUndefined, /// Default status for newly created issues. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub default_issue_state_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub default_issue_state_id: MaybeUndefined, /// Period after which issues are automatically closed, in months. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_close_period: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_close_period: MaybeUndefined, /// The canceled workflow state which auto closed issues will be set to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_close_state_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_close_state_id: MaybeUndefined, /// Whether to automatically close a parent issue in this team if all its sub-issues are closed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_close_parent_issues: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_close_parent_issues: MaybeUndefined, /// Whether to automatically close all sub-issues when a parent issue in this team is closed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_close_child_issues: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_close_child_issues: MaybeUndefined, /// Period after which closed and completed issues are automatically archived, in months. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub auto_archive_period: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub auto_archive_period: MaybeUndefined, /// The workflow state into which issues are moved when they are marked as a duplicate of another issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub marked_as_duplicate_workflow_state_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub marked_as_duplicate_workflow_state_id: MaybeUndefined, /// Whether new users should join this team by default. Mutation restricted to workspace admins or owners! - #[serde(default, skip_serializing_if = "Option::is_none")] - pub join_by_default: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub join_by_default: MaybeUndefined, /// Whether the team is managed by SCIM integration. Mutation restricted to workspace admins or owners and only unsetting is allowed! - #[serde(default, skip_serializing_if = "Option::is_none")] - pub scim_managed: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub scim_managed: MaybeUndefined, /// The parent team ID. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub parent_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub parent_id: MaybeUndefined, /// `Internal` Whether the team should inherit workflow statuses from its parent. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub inherit_workflow_statuses: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub inherit_workflow_statuses: MaybeUndefined, /// `Internal` Whether the team should inherit its product intelligence scope from its parent. Only applies to sub-teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub inherit_product_intelligence_scope: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub inherit_product_intelligence_scope: MaybeUndefined, /// `Internal` The scope of product intelligence suggestion data for the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub product_intelligence_scope: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub product_intelligence_scope: MaybeUndefined, /// The security settings for the team. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub security_settings: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub security_settings: MaybeUndefined>, /// Whether all members in the workspace can join the team. Only used for public teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub all_members_can_join: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub all_members_can_join: MaybeUndefined, /// When the team was retired. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub retired_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub retired_at: MaybeUndefined>, /// `Internal` How to handle sub-teams when retiring. Required if the team has active sub-teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub handle_sub_teams_on_retirement: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub handle_sub_teams_on_retirement: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TemplateCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The template type, e.g. 'issue'. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + pub r#type: String, /// The identifier or key of the team associated with the template. If not given, the template will be shared across all teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// The template name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The template description. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The template data as JSON encoded attributes of the type of entity, such as an issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub template_data: Option, + pub template_data: serde_json::Value, /// The position of the template in the templates list. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TemplateUpdateInput { /// The template name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The template description. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The identifier or key of the team associated with the template. If set to null, the template will be shared across all teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// The template data as JSON encoded attributes of the type of entity, such as an issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub template_data: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub template_data: MaybeUndefined, /// The position of the template in the templates list. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sort_order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub sort_order: MaybeUndefined, } /// Customer tier sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TierSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// Issue time in status sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TimeInStatusSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TimeScheduleCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The name of the schedule. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The schedule entries. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub entries: Option>>, + pub entries: Vec>, /// The unique identifier of the external schedule. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_id: MaybeUndefined, /// The URL to the external schedule. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_url: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TimeScheduleEntryInput { /// The start date of the schedule in ISO 8601 date-time format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub starts_at: Option>, + pub starts_at: chrono::DateTime, /// The end date of the schedule in ISO 8601 date-time format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ends_at: Option>, + pub ends_at: chrono::DateTime, /// The Linear user id of the user on schedule. If the user cannot be mapped to a Linear user then `userEmail` can be used as a reference. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub user_id: MaybeUndefined, /// The email, name or reference to the user on schedule. This is used in case the external user could not be mapped to a Linear user id. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user_email: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub user_email: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TimeScheduleUpdateInput { /// The name of the schedule. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The schedule entries. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub entries: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub entries: MaybeUndefined>>, /// The unique identifier of the external schedule. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_id: MaybeUndefined, /// The URL to the external schedule. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub external_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub external_url: MaybeUndefined, } /// Issue title sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TitleSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TokenUserAccountAuthInput { /// The email which to login via the magic login code. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub email: Option, + pub email: String, /// The magic login code. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub token: Option, + pub token: String, /// The timezone of the user's browser. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub timezone: Option, + pub timezone: String, /// An optional invite link for an organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub invite_link: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub invite_link: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TriageResponsibilityCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The identifier of the team associated with the triage responsibility. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + pub team_id: String, /// The action to take when an issue is added to triage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub action: Option, + pub action: String, /// The manual selection of users responsible for triage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub manual_selection: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub manual_selection: MaybeUndefined>, /// The identifier of the time schedule used for scheduling triage responsibility - #[serde(default, skip_serializing_if = "Option::is_none")] - pub time_schedule_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub time_schedule_id: MaybeUndefined, } /// Manual triage responsibility using a set of users. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TriageResponsibilityManualSelectionInput { /// The set of users responsible for triage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user_ids: Option>, + pub user_ids: Vec, /// `Internal` The index of the current userId used for the assign action when having more than one user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub assignment_index: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub assignment_index: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TriageResponsibilityUpdateInput { /// The action to take when an issue is added to triage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub action: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub action: MaybeUndefined, /// The manual selection of users responsible for triage. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub manual_selection: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub manual_selection: MaybeUndefined>, /// The identifier of the time schedule used for scheduling triage responsibility. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub time_schedule_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub time_schedule_id: MaybeUndefined, } /// Issue update date sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct UpdatedAtSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// User filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct UserCollectionFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the user's name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the user's display name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub display_name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub display_name: MaybeUndefined>, /// Comparator for the user's email. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub email: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub email: MaybeUndefined>, /// Comparator for the user's activity status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub active: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub active: MaybeUndefined>, /// Filters that the users assigned issues must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub assigned_issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub assigned_issues: MaybeUndefined>, /// Comparator for the user's admin status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub admin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub admin: MaybeUndefined>, /// Comparator for the user's owner status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner: MaybeUndefined>, /// Comparator for the user's invited status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub invited: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub invited: MaybeUndefined>, /// Comparator for the user's invited status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_invited: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_invited: MaybeUndefined>, /// Comparator for the user's app status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub app: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub app: MaybeUndefined>, /// Filter based on the currently authenticated user. Set to true to filter for the authenticated user, false for any other user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_me: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_me: MaybeUndefined>, /// Compound filters, all of which need to be matched by the user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, /// Filters that needs to be matched by some users. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub some: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub some: MaybeUndefined>, /// Filters that needs to be matched by all users. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub every: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub every: MaybeUndefined>, /// Comparator for the collection length. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub length: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub length: MaybeUndefined>, } /// User display name sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct UserDisplayNameSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } /// User filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct UserFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the user's name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the user's display name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub display_name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub display_name: MaybeUndefined>, /// Comparator for the user's email. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub email: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub email: MaybeUndefined>, /// Comparator for the user's activity status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub active: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub active: MaybeUndefined>, /// Filters that the users assigned issues must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub assigned_issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub assigned_issues: MaybeUndefined>, /// Comparator for the user's admin status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub admin: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub admin: MaybeUndefined>, /// Comparator for the user's owner status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub owner: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub owner: MaybeUndefined>, /// Comparator for the user's invited status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub invited: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub invited: MaybeUndefined>, /// Comparator for the user's invited status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_invited: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_invited: MaybeUndefined>, /// Comparator for the user's app status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub app: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub app: MaybeUndefined>, /// Filter based on the currently authenticated user. Set to true to filter for the authenticated user, false for any other user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub is_me: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub is_me: MaybeUndefined>, /// Compound filters, all of which need to be matched by the user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// User name sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct UserNameSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct UserSettingsUpdateInput { /// The user's settings. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub settings: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub settings: MaybeUndefined, /// Whether this user is subscribed to changelog email or not. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subscribed_to_changelog: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subscribed_to_changelog: MaybeUndefined, /// Whether this user is subscribed to DPA emails or not. #[serde( rename = "subscribedToDPA", default, - skip_serializing_if = "Option::is_none" + skip_serializing_if = "MaybeUndefined::is_undefined" )] - pub subscribed_to_dpa: Option, + pub subscribed_to_dpa: MaybeUndefined, /// Whether this user is subscribed to invite accepted emails or not. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subscribed_to_invite_accepted: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subscribed_to_invite_accepted: MaybeUndefined, /// Whether this user is subscribed to privacy and legal update emails or not. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subscribed_to_privacy_legal_updates: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subscribed_to_privacy_legal_updates: MaybeUndefined, /// Whether this user is subscribed to general marketing communications or not. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subscribed_to_general_marketing_communications: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub subscribed_to_general_marketing_communications: MaybeUndefined, /// The user's notification category preferences. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub notification_category_preferences: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub notification_category_preferences: + MaybeUndefined>, /// The user's notification channel preferences. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub notification_channel_preferences: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub notification_channel_preferences: + MaybeUndefined>, /// The user's notification delivery preferences. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub notification_delivery_preferences: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub notification_delivery_preferences: + MaybeUndefined>, /// `Internal` The user's usage warning history. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub usage_warning_history: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub usage_warning_history: MaybeUndefined, /// `Internal` How often to generate a feed summary. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub feed_summary_schedule: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub feed_summary_schedule: MaybeUndefined, /// `Internal` The user's last seen time for the pulse feed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub feed_last_seen_time: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub feed_last_seen_time: MaybeUndefined>, } /// User sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct UserSortInput { /// Sort by user name - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Sort by user display name - #[serde(default, skip_serializing_if = "Option::is_none")] - pub display_name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub display_name: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct UserUpdateInput { /// The name of the user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The display name of the user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub display_name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub display_name: MaybeUndefined, /// The avatar image URL of the user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub avatar_url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub avatar_url: MaybeUndefined, /// The user description or a short bio. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The emoji part of the user status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status_emoji: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status_emoji: MaybeUndefined, /// The label part of the user status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status_label: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status_label: MaybeUndefined, /// When the user status should be cleared. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status_until_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub status_until_at: MaybeUndefined>, /// The local timezone of the user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub timezone: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub timezone: MaybeUndefined, } -#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ViewPreferencesCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The type of view preferences (either user or organization level preferences). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + pub r#type: ViewPreferencesType, /// The view type of the view preferences are associated with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub view_type: Option, + pub view_type: ViewType, /// View preferences object. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub preferences: Option, + pub preferences: serde_json::Value, /// The default parameters for the insight on that view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub insights: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub insights: MaybeUndefined, /// The team these view preferences are associated with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// The project these view preferences are associated with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_id: MaybeUndefined, /// `Internal` The initiative these view preferences are associated with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub initiative_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub initiative_id: MaybeUndefined, /// The label these view preferences are associated with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub label_id: MaybeUndefined, /// The project label these view preferences are associated with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub project_label_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub project_label_id: MaybeUndefined, /// The custom view these view preferences are associated with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub custom_view_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub custom_view_id: MaybeUndefined, /// The user profile these view preferences are associated with. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub user_id: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ViewPreferencesUpdateInput { /// View preferences. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub preferences: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub preferences: MaybeUndefined, /// The default parameters for the insight on that view. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub insights: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub insights: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct WebhookCreateInput { /// Label for the webhook. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub label: MaybeUndefined, /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// Whether this webhook is enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub enabled: MaybeUndefined, /// A secret token used to sign the webhook payload. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub secret: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub secret: MaybeUndefined, /// The URL that will be called on data changes. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub url: Option, + pub url: String, /// List of resources the webhook should subscribe to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub resource_types: Option>, + pub resource_types: Vec, /// The identifier or key of the team associated with the Webhook. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team_id: MaybeUndefined, /// Whether this webhook is enabled for all public teams. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub all_public_teams: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub all_public_teams: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct WebhookUpdateInput { /// Label for the webhook. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub label: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub label: MaybeUndefined, /// A secret token used to sign the webhook payload. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub secret: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub secret: MaybeUndefined, /// Whether this webhook is enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enabled: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub enabled: MaybeUndefined, /// The URL that will be called on data changes. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub url: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub url: MaybeUndefined, /// List of resources the webhook should subscribe to. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub resource_types: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub resource_types: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct WorkflowStateCreateInput { /// The identifier in UUID v4 format. If none is provided, the backend will generate one. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined, /// The workflow type. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option, + pub r#type: String, /// The name of the state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + pub name: String, /// The color of the state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + pub color: String, /// The description of the state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The position of the state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub position: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub position: MaybeUndefined, /// The team associated with the state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team_id: Option, + pub team_id: String, } /// Workflow state filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct WorkflowStateFilter { /// Comparator for the identifier. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub id: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub id: MaybeUndefined>, /// Comparator for the created at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub created_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub created_at: MaybeUndefined>, /// Comparator for the updated at date. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub updated_at: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub updated_at: MaybeUndefined>, /// Comparator for the workflow state name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined>, /// Comparator for the workflow state description. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined>, /// Comparator for the workflow state position. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub position: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub position: MaybeUndefined>, /// Comparator for the workflow state type. Possible values are "triage", "backlog", "unstarted", "started", "completed", "canceled". - #[serde(default, skip_serializing_if = "Option::is_none")] - pub r#type: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub r#type: MaybeUndefined>, /// Filters that the workflow states team must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub team: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub team: MaybeUndefined>, /// Filters that the workflow states issues must satisfy. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub issues: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub issues: MaybeUndefined>, /// Compound filters, all of which need to be matched by the workflow state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub and: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub and: MaybeUndefined>>, /// Compound filters, one of which need to be matched by the workflow state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub or: Option>>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub or: MaybeUndefined>>, } /// Issue workflow state sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct WorkflowStateSort { /// Whether nulls should be sorted first or last - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nulls: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub nulls: MaybeUndefined, /// The order for the individual sort - #[serde(default, skip_serializing_if = "Option::is_none")] - pub order: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub order: MaybeUndefined, /// Whether to sort closed issues by recency - #[serde(default, skip_serializing_if = "Option::is_none")] - pub closed_issues_ordered_by_recency: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub closed_issues_ordered_by_recency: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct WorkflowStateUpdateInput { /// The name of the state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub name: MaybeUndefined, /// The color of the state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub color: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub color: MaybeUndefined, /// The description of the state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub description: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub description: MaybeUndefined, /// The position of the state. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub position: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub position: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ZendeskSettingsInput { /// Whether an internal message should be added when a Linear issue changes status (for status types except completed or canceled). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub send_note_on_status_change: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub send_note_on_status_change: MaybeUndefined, /// Whether an internal message should be added when someone comments on an issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub send_note_on_comment: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub send_note_on_comment: MaybeUndefined, /// Whether a ticket should be automatically reopened when its linked Linear issue is completed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_completion: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_completion: MaybeUndefined, /// Whether a ticket should be automatically reopened when its linked Linear issue is cancelled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_cancellation: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_cancellation: MaybeUndefined, /// Whether a ticket should be automatically reopened when a comment is posted on its linked Linear issue - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_comment: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_comment: MaybeUndefined, /// `ALPHA` Whether customer and customer requests should not be automatically created when conversations are linked to a Linear issue. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub disable_customer_requests_auto_creation: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub disable_customer_requests_auto_creation: MaybeUndefined, /// Whether a ticket should be automatically reopened when its linked Linear project is completed. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_project_completion: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_project_completion: MaybeUndefined, /// Whether a ticket should be automatically reopened when its linked Linear project is cancelled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub automate_ticket_reopening_on_project_cancellation: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub automate_ticket_reopening_on_project_cancellation: MaybeUndefined, /// Whether Linear Agent should be enabled for this integration. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub enable_ai_intake: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub enable_ai_intake: MaybeUndefined, /// The subdomain of the Zendesk organization being connected. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub subdomain: Option, + pub subdomain: String, /// The URL of the connected Zendesk organization. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub url: Option, + pub url: String, /// The ID of the Linear bot user. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub bot_user_id: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub bot_user_id: MaybeUndefined, /// `INTERNAL` Temporary flag indicating if the integration has the necessary scopes for Customers - #[serde(default, skip_serializing_if = "Option::is_none")] - pub can_read_customers: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub can_read_customers: MaybeUndefined, /// `INTERNAL` Flag indicating if the integration supports OAuth refresh tokens - #[serde(default, skip_serializing_if = "Option::is_none")] - pub supports_o_auth_refresh: Option, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub supports_o_auth_refresh: MaybeUndefined, /// The host mappings from Zendesk brands. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub host_mappings: Option>, + #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] + pub host_mappings: MaybeUndefined>, } diff --git a/crates/lineark-sdk/src/lib.rs b/crates/lineark-sdk/src/lib.rs index 3b9f214..ca301f1 100644 --- a/crates/lineark-sdk/src/lib.rs +++ b/crates/lineark-sdk/src/lib.rs @@ -4,6 +4,7 @@ pub mod auth; pub mod client; pub mod error; pub mod field_selection; +pub mod field_update; pub mod generated; pub mod helpers; pub mod pagination; @@ -13,5 +14,6 @@ pub use client::Client; pub use error::LinearError; pub use field_selection::FieldCompatible; pub use field_selection::GraphQLFields; +pub use field_update::MaybeUndefined; pub use lineark_derive::GraphQLFields; pub use pagination::{Connection, PageInfo}; diff --git a/crates/lineark-sdk/tests/offline.rs b/crates/lineark-sdk/tests/offline.rs index 713e0ac..b5aabef 100644 --- a/crates/lineark-sdk/tests/offline.rs +++ b/crates/lineark-sdk/tests/offline.rs @@ -437,8 +437,8 @@ async fn document_create_sends_input_variable() { let (server, client) = setup_mutation("documentCreate").await; let input = DocumentCreateInput { - title: Some("Test Document".to_string()), - content: Some("# Hello".to_string()), + title: "Test Document".to_string(), + content: "# Hello".to_string().into(), ..Default::default() }; let _ = client.document_create::(input).await; @@ -453,7 +453,7 @@ async fn document_update_sends_input_and_id() { let (server, client) = setup_mutation("documentUpdate").await; let input = DocumentUpdateInput { - title: Some("Updated Title".to_string()), + title: "Updated Title".to_string().into(), ..Default::default() }; let _ = client @@ -481,10 +481,10 @@ async fn issue_relation_create_sends_input() { let (server, client) = setup_mutation("issueRelationCreate").await; let input = IssueRelationCreateInput { - issue_id: Some("issue-a".to_string()), - related_issue_id: Some("issue-b".to_string()), - r#type: Some(IssueRelationType::Blocks), - ..Default::default() + id: lineark_sdk::MaybeUndefined::Undefined, + issue_id: "issue-a".to_string(), + related_issue_id: "issue-b".to_string(), + r#type: IssueRelationType::Blocks, }; let _ = client .issue_relation_create::(None, input) @@ -588,8 +588,8 @@ async fn team_create_sends_input_variable() { let (server, client) = setup_mutation("teamCreate").await; let input = TeamCreateInput { - name: Some("Test Team".to_string()), - key: Some("TST".to_string()), + name: "Test Team".to_string(), + key: "TST".to_string().into(), ..Default::default() }; let _ = client.team_create::(None, input).await; @@ -605,7 +605,7 @@ async fn team_update_sends_input_and_id() { let (server, client) = setup_mutation("teamUpdate").await; let input = TeamUpdateInput { - description: Some("Updated description".to_string()), + description: "Updated description".to_string().into(), ..Default::default() }; let _ = client @@ -632,8 +632,8 @@ async fn team_membership_create_sends_input() { let (server, client) = setup_mutation("teamMembershipCreate").await; let input = TeamMembershipCreateInput { - user_id: Some("user-uuid-abc".to_string()), - team_id: Some("team-uuid-def".to_string()), + user_id: "user-uuid-abc".to_string(), + team_id: "team-uuid-def".to_string(), ..Default::default() }; let _ = client.team_membership_create::(input).await; diff --git a/crates/lineark-sdk/tests/online.rs b/crates/lineark-sdk/tests/online.rs index 2eb16cb..fa6690d 100644 --- a/crates/lineark-sdk/tests/online.rs +++ b/crates/lineark-sdk/tests/online.rs @@ -143,8 +143,8 @@ mod online { &uuid::Uuid::new_v4().to_string()[..8] ); let input = IssueLabelCreateInput { - name: Some(unique.clone()), - color: Some("#eb5757".to_string()), + name: unique.clone(), + color: Some("#eb5757".to_string()).into(), ..Default::default() }; let label = retry_create(|| { @@ -163,7 +163,7 @@ mod online { // Update the label's color. let update_input = IssueLabelUpdateInput { - color: Some("#4ea7fc".to_string()), + color: Some("#4ea7fc".to_string()).into(), ..Default::default() }; let updated = client @@ -361,9 +361,9 @@ mod online { // Create an issue with a unique title. let unique = format!("[builder-test-{}]", uuid::Uuid::new_v4()); let input = IssueCreateInput { - title: Some(unique.clone()), - team_id: Some(team_id), - priority: Some(4), + title: Some(unique.clone()).into(), + team_id, + priority: Some(4).into(), ..Default::default() }; let entity = retry_create(|| { @@ -434,9 +434,9 @@ mod online { // Create an issue with a unique title in the first team. let unique = format!("[team-filter-{}]", uuid::Uuid::new_v4()); let input = IssueCreateInput { - title: Some(unique.clone()), - team_id: Some(team_id.clone()), - priority: Some(4), + title: Some(unique.clone()).into(), + team_id: team_id.clone(), + priority: Some(4).into(), ..Default::default() }; let entity = retry_create(|| { @@ -550,10 +550,10 @@ mod online { // Create an issue. let input = IssueCreateInput { - title: Some("[test] SDK issue_create_and_delete".to_string()), - team_id: Some(team_id), - description: Some("Automated test — will be deleted immediately.".to_string()), - priority: Some(4), // Low + title: Some("[test] SDK issue_create_and_delete".to_string()).into(), + team_id, + description: Some("Automated test — will be deleted immediately.".to_string()).into(), + priority: Some(4).into(), // Low ..Default::default() }; let entity = retry_create(|| { @@ -586,9 +586,9 @@ mod online { let team_id = team.id.clone(); let input = IssueCreateInput { - title: Some("[test] SDK issue_update".to_string()), - team_id: Some(team_id), - priority: Some(4), + title: Some("[test] SDK issue_update".to_string()).into(), + team_id, + priority: Some(4).into(), ..Default::default() }; let entity = retry_create(|| { @@ -604,8 +604,8 @@ mod online { // Update the issue. let update_input = IssueUpdateInput { - title: Some("[test] SDK issue_update — updated".to_string()), - priority: Some(3), // Medium + title: Some("[test] SDK issue_update — updated".to_string()).into(), + priority: Some(3).into(), // Medium ..Default::default() }; let updated_entity = client @@ -633,9 +633,9 @@ mod online { let team_id = team.id.clone(); let input = IssueCreateInput { - title: Some("[test] SDK issue_archive_and_unarchive".to_string()), - team_id: Some(team_id), - priority: Some(4), + title: Some("[test] SDK issue_archive_and_unarchive".to_string()).into(), + team_id, + priority: Some(4).into(), ..Default::default() }; let entity = retry_create(|| { @@ -679,9 +679,9 @@ mod online { let team_id = team.id.clone(); let issue_input = IssueCreateInput { - title: Some("[test] SDK comment_create".to_string()), - team_id: Some(team_id), - priority: Some(4), + title: Some("[test] SDK comment_create".to_string()).into(), + team_id, + priority: Some(4).into(), ..Default::default() }; let issue_entity = retry_create(|| { @@ -697,8 +697,8 @@ mod online { // Create a comment. let comment_input = CommentCreateInput { - body: Some("Automated test comment from lineark SDK.".to_string()), - issue_id: Some(issue_id.clone()), + body: Some("Automated test comment from lineark SDK.".to_string()).into(), + issue_id: Some(issue_id.clone()).into(), ..Default::default() }; let comment_entity = retry_create(|| { @@ -745,9 +745,9 @@ mod online { // Create a document. let input = DocumentCreateInput { - title: Some("[test] SDK document_create_update_and_delete".to_string()), - content: Some("Automated test document content.".to_string()), - team_id: Some(team_id), + title: "[test] SDK document_create_update_and_delete".to_string(), + content: Some("Automated test document content.".to_string()).into(), + team_id: Some(team_id).into(), ..Default::default() }; let doc_entity = retry_create(|| { @@ -772,8 +772,8 @@ mod online { // Update the document. let update_input = DocumentUpdateInput { - title: Some("[test] SDK document — updated".to_string()), - content: Some("Updated content.".to_string()), + title: Some("[test] SDK document — updated".to_string()).into(), + content: Some("Updated content.".to_string()).into(), ..Default::default() }; // Just verify the update succeeded. @@ -814,9 +814,9 @@ mod online { // Create two issues to relate. let input_a = IssueCreateInput { - title: Some("[test] relation issue A".to_string()), - team_id: Some(team_id.clone()), - priority: Some(4), + title: Some("[test] relation issue A".to_string()).into(), + team_id: team_id.clone(), + priority: Some(4).into(), ..Default::default() }; let entity_a = retry_create(|| { @@ -831,9 +831,9 @@ mod online { }; let input_b = IssueCreateInput { - title: Some("[test] relation issue B".to_string()), - team_id: Some(team_id), - priority: Some(4), + title: Some("[test] relation issue B".to_string()).into(), + team_id, + priority: Some(4).into(), ..Default::default() }; let entity_b = retry_create(|| { @@ -849,10 +849,10 @@ mod online { // Create a "blocks" relation: A blocks B. let relation_input = IssueRelationCreateInput { - issue_id: Some(issue_a_id.clone()), - related_issue_id: Some(issue_b_id.clone()), - r#type: Some(IssueRelationType::Blocks), - ..Default::default() + id: lineark_sdk::MaybeUndefined::Undefined, + issue_id: issue_a_id.clone(), + related_issue_id: issue_b_id.clone(), + r#type: IssueRelationType::Blocks, }; let relation_entity = retry_create(|| { let relation_input = relation_input.clone(); @@ -979,9 +979,10 @@ mod online { title: Some(format!( "[test] SDK batch_update A {}", &uuid::Uuid::new_v4().to_string()[..8] - )), - team_id: Some(team_id.clone()), - priority: Some(4), + )) + .into(), + team_id: team_id.clone(), + priority: Some(4).into(), ..Default::default() }; let entity_a = retry_create(|| { @@ -999,9 +1000,10 @@ mod online { title: Some(format!( "[test] SDK batch_update B {}", &uuid::Uuid::new_v4().to_string()[..8] - )), - team_id: Some(team_id), - priority: Some(4), + )) + .into(), + team_id, + priority: Some(4).into(), ..Default::default() }; let entity_b = retry_create(|| { @@ -1017,7 +1019,7 @@ mod online { // Batch update both issues' priority. let update_input = IssueUpdateInput { - priority: Some(2), + priority: Some(2).into(), ..Default::default() }; let result = client @@ -1044,7 +1046,7 @@ mod online { // Create a team with a unique name. let unique = format!("[test] sdk-team {}", &uuid::Uuid::new_v4().to_string()[..8]); let input = TeamCreateInput { - name: Some(unique.clone()), + name: unique.clone(), ..Default::default() }; let team = retry_create(|| { @@ -1062,7 +1064,7 @@ mod online { // Update the team's description. let update_input = TeamUpdateInput { - description: Some("Updated by SDK test.".to_string()), + description: Some("Updated by SDK test.".to_string()).into(), ..Default::default() }; let updated = client @@ -1094,7 +1096,7 @@ mod online { &uuid::Uuid::new_v4().to_string()[..8] ); let input = TeamCreateInput { - name: Some(unique), + name: unique, ..Default::default() }; let team = retry_create(|| { @@ -1121,8 +1123,8 @@ mod online { // Add the other user as a member — must succeed cleanly. let membership_input = TeamMembershipCreateInput { - team_id: Some(team_id.clone()), - user_id: Some(other_user_id), + team_id: team_id.clone(), + user_id: other_user_id, ..Default::default() }; let membership = retry_create(|| { @@ -1164,9 +1166,10 @@ mod online { title: Some(format!( "[test] SDK comment_update_changes_body {}", &uuid::Uuid::new_v4().to_string()[..8] - )), - team_id: Some(team_id), - priority: Some(4), + )) + .into(), + team_id, + priority: Some(4).into(), ..Default::default() }; let issue_entity = retry_create(|| { @@ -1182,8 +1185,8 @@ mod online { // Create a comment with the original body. let comment_input = CommentCreateInput { - body: Some("Original body".to_string()), - issue_id: Some(issue_id.clone()), + body: Some("Original body".to_string()).into(), + issue_id: Some(issue_id.clone()).into(), ..Default::default() }; let comment_entity = retry_create(|| { @@ -1196,7 +1199,7 @@ mod online { // Update the comment body. let update_input = CommentUpdateInput { - body: Some("Updated body".to_string()), + body: Some("Updated body".to_string()).into(), ..Default::default() }; let updated = client @@ -1225,9 +1228,10 @@ mod online { title: Some(format!( "[test] SDK comment_resolve_and_unresolve {}", &uuid::Uuid::new_v4().to_string()[..8] - )), - team_id: Some(team_id), - priority: Some(4), + )) + .into(), + team_id, + priority: Some(4).into(), ..Default::default() }; let issue_entity = retry_create(|| { @@ -1243,8 +1247,8 @@ mod online { // Create a comment. let comment_input = CommentCreateInput { - body: Some("Thread to resolve".to_string()), - issue_id: Some(issue_id.clone()), + body: Some("Thread to resolve".to_string()).into(), + issue_id: Some(issue_id.clone()).into(), ..Default::default() }; let comment_entity = retry_create(|| { @@ -1298,9 +1302,9 @@ mod online { // Create an issue so we can look up its branchName. let uid = &uuid::Uuid::new_v4().to_string()[..8]; let input = IssueCreateInput { - title: Some(format!("[test] SDK branch search {uid}")), - team_id: Some(team_id), - priority: Some(4), + title: Some(format!("[test] SDK branch search {uid}")).into(), + team_id, + priority: Some(4).into(), ..Default::default() }; let entity = retry_create(|| { diff --git a/crates/lineark-test-utils/src/team.rs b/crates/lineark-test-utils/src/team.rs index 72c198a..c449fd7 100644 --- a/crates/lineark-test-utils/src/team.rs +++ b/crates/lineark-test-utils/src/team.rs @@ -20,8 +20,8 @@ pub async fn create_test_team(client: &Client) -> TestTeam { let unique = format!("[test] sdk {suffix}"); let key = format!("T{}", &suffix[..5]).to_uppercase(); let input = TeamCreateInput { - name: Some(unique), - key: Some(key), + name: unique, + key: key.into(), ..Default::default() }; let team = retry_create(|| { diff --git a/crates/lineark/src/commands/comments.rs b/crates/lineark/src/commands/comments.rs index a4bcb98..bf02f6f 100644 --- a/crates/lineark/src/commands/comments.rs +++ b/crates/lineark/src/commands/comments.rs @@ -86,8 +86,8 @@ pub async fn run(cmd: CommentsCmd, client: &Client, format: Format) -> anyhow::R let issue_id = resolve_issue_id(client, &issue).await?; let input = CommentCreateInput { - body: Some(body), - issue_id: Some(issue_id), + body: body.into(), + issue_id: issue_id.into(), ..Default::default() }; @@ -104,7 +104,7 @@ pub async fn run(cmd: CommentsCmd, client: &Client, format: Format) -> anyhow::R } let input = CommentUpdateInput { - body, + body: body.into(), ..Default::default() }; diff --git a/crates/lineark/src/commands/documents.rs b/crates/lineark/src/commands/documents.rs index 0d071fe..f767b85 100644 --- a/crates/lineark/src/commands/documents.rs +++ b/crates/lineark/src/commands/documents.rs @@ -199,10 +199,10 @@ pub async fn run(cmd: DocumentsCmd, client: &Client, format: Format) -> anyhow:: }; let input = DocumentCreateInput { - title: Some(title), - content, - project_id, - issue_id, + title, + content: content.into(), + project_id: project_id.into(), + issue_id: issue_id.into(), ..Default::default() }; @@ -221,8 +221,8 @@ pub async fn run(cmd: DocumentsCmd, client: &Client, format: Format) -> anyhow:: } let input = DocumentUpdateInput { - title, - content, + title: title.into(), + content: content.into(), ..Default::default() }; diff --git a/crates/lineark/src/commands/issues.rs b/crates/lineark/src/commands/issues.rs index 1d7e8fe..d249859 100644 --- a/crates/lineark/src/commands/issues.rs +++ b/crates/lineark/src/commands/issues.rs @@ -6,7 +6,7 @@ use lineark_sdk::generated::types::{ Comment, CommentConnection, Issue, IssueConnection, IssueLabel, IssueLabelConnection, IssueRelation, IssueRelationConnection, IssueSearchResult, User, WorkflowState, }; -use lineark_sdk::{Client, GraphQLFields}; +use lineark_sdk::{Client, GraphQLFields, MaybeUndefined}; use serde::{Deserialize, Serialize}; use tabled::Tabled; @@ -722,17 +722,17 @@ pub async fn run(cmd: IssuesCmd, client: &Client, format: Format) -> anyhow::Res }; let input = IssueCreateInput { - title: Some(title), - team_id: Some(team_id), - assignee_id, - label_ids, - priority, - estimate, - description, - parent_id, - state_id, - project_id, - cycle_id, + title: title.into(), + team_id, + assignee_id: assignee_id.into(), + label_ids: label_ids.into(), + priority: priority.into(), + estimate: estimate.into(), + description: description.into(), + parent_id: parent_id.into(), + state_id: state_id.into(), + project_id: project_id.into(), + cycle_id: cycle_id.into(), ..Default::default() }; @@ -862,14 +862,14 @@ pub async fn run(cmd: IssuesCmd, client: &Client, format: Format) -> anyhow::Res }; let input = IssueUpdateInput { - assignee_id, - priority, - state_id, - label_ids, - added_label_ids, - removed_label_ids, - project_id, - cycle_id, + assignee_id: assignee_id.into(), + priority: priority.into(), + state_id: state_id.into(), + label_ids: label_ids.into(), + added_label_ids: added_label_ids.into(), + removed_label_ids: removed_label_ids.into(), + project_id: project_id.into(), + cycle_id: cycle_id.into(), ..Default::default() }; @@ -978,49 +978,32 @@ pub async fn run(cmd: IssuesCmd, client: &Client, format: Format) -> anyhow::Res (None, None, None) }; + let parent_id = if clear_parent { + MaybeUndefined::Null + } else { + parent_id.into() + }; + let input = IssueUpdateInput { - title, - description, - assignee_id, - priority, - estimate, - state_id, + title: title.into(), + description: description.into(), + assignee_id: assignee_id.into(), + priority: priority.into(), + estimate: estimate.into(), + state_id: state_id.into(), parent_id, - label_ids, - added_label_ids, - removed_label_ids, - project_id, - cycle_id, + label_ids: label_ids.into(), + added_label_ids: added_label_ids.into(), + removed_label_ids: removed_label_ids.into(), + project_id: project_id.into(), + cycle_id: cycle_id.into(), ..Default::default() }; - // When --clear-parent is used, we need to send `parentId: null` to - // the API. The generated IssueUpdateInput uses skip_serializing_if - // so None omits the field (no-op). We serialize to Value and inject null. - let issue = if clear_parent { - let mut input_val = serde_json::to_value(&input)?; - input_val - .as_object_mut() - .unwrap() - .insert("parentId".to_string(), serde_json::Value::Null); - let variables = serde_json::json!({ "input": input_val, "id": issue_id }); - let sel = ::selection(); - let query = format!( - "mutation($input: IssueUpdateInput!, $id: String!) {{ issueUpdate(input: $input, id: $id) {{ success issue {{ {sel} }} }} }}" - ); - let payload: serde_json::Value = client - .execute(&query, variables, "issueUpdate") - .await - .map_err(|e| anyhow::anyhow!("{}", e))?; - serde_json::from_value::( - payload.get("issue").cloned().unwrap_or_default(), - )? - } else { - client - .issue_update::(input, issue_id) - .await - .map_err(|e| anyhow::anyhow!("{}", e))? - }; + let issue = client + .issue_update::(input, issue_id) + .await + .map_err(|e| anyhow::anyhow!("{}", e))?; output::print_one(&issue, format); } diff --git a/crates/lineark/src/commands/labels.rs b/crates/lineark/src/commands/labels.rs index 38fd129..018980e 100644 --- a/crates/lineark/src/commands/labels.rs +++ b/crates/lineark/src/commands/labels.rs @@ -3,7 +3,7 @@ use lineark_sdk::generated::inputs::{ IssueLabelCreateInput, IssueLabelFilter, IssueLabelUpdateInput, }; use lineark_sdk::generated::types::IssueLabel; -use lineark_sdk::{Client, GraphQLFields}; +use lineark_sdk::{Client, GraphQLFields, MaybeUndefined}; use serde::{Deserialize, Serialize}; use tabled::Tabled; @@ -246,12 +246,16 @@ pub async fn run(cmd: LabelsCmd, client: &Client, format: Format) -> anyhow::Res }; let input = IssueLabelCreateInput { - name: Some(name), - color, - description, - parent_id: parent_label_group, - team_id, - is_group: if make_label_group { Some(true) } else { None }, + name, + color: color.into(), + description: description.into(), + parent_id: parent_label_group.into(), + team_id: team_id.into(), + is_group: if make_label_group { + MaybeUndefined::Value(true) + } else { + MaybeUndefined::Undefined + }, ..Default::default() }; @@ -286,48 +290,32 @@ pub async fn run(cmd: LabelsCmd, client: &Client, format: Format) -> anyhow::Res } let is_group = if make_label_group { - Some(true) + MaybeUndefined::Value(true) } else if clear_label_group { - Some(false) + MaybeUndefined::Value(false) } else { - None + MaybeUndefined::Undefined + }; + + let parent_id = if clear_parent_label_group { + MaybeUndefined::Null + } else { + parent_label_group.into() }; let input = IssueLabelUpdateInput { - name, - color, - description, - parent_id: parent_label_group, + name: name.into(), + color: color.into(), + description: description.into(), + parent_id, is_group, ..Default::default() }; - // When --clear-parent-label-group is used, send `parentId: null` to the API. - // The generated input uses skip_serializing_if so None omits the field. - let label = if clear_parent_label_group { - let mut input_val = serde_json::to_value(&input)?; - input_val - .as_object_mut() - .unwrap() - .insert("parentId".to_string(), serde_json::Value::Null); - let variables = serde_json::json!({ "input": input_val, "id": id }); - let sel = ::selection(); - let query = format!( - "mutation($input: IssueLabelUpdateInput!, $id: String!) {{ issueLabelUpdate(input: $input, id: $id) {{ success issueLabel {{ {sel} }} }} }}" - ); - let payload: serde_json::Value = client - .execute(&query, variables, "issueLabelUpdate") - .await - .map_err(|e| anyhow::anyhow!("{}", e))?; - serde_json::from_value::( - payload.get("issueLabel").cloned().unwrap_or_default(), - )? - } else { - client - .issue_label_update::(None, input, id) - .await - .map_err(|e| anyhow::anyhow!("{}", e))? - }; + let label = client + .issue_label_update::(None, input, id) + .await + .map_err(|e| anyhow::anyhow!("{}", e))?; output::print_one(&label, format); } diff --git a/crates/lineark/src/commands/milestones.rs b/crates/lineark/src/commands/milestones.rs index 9fae30f..622daeb 100644 --- a/crates/lineark/src/commands/milestones.rs +++ b/crates/lineark/src/commands/milestones.rs @@ -205,10 +205,10 @@ pub async fn run(cmd: MilestonesCmd, client: &Client, format: Format) -> anyhow: .map_err(|e| anyhow::anyhow!("Invalid date format (expected YYYY-MM-DD): {}", e))?; let input = ProjectMilestoneCreateInput { - name: Some(name), - project_id: Some(project_id), - target_date, - description, + name, + project_id, + target_date: target_date.into(), + description: description.into(), ..Default::default() }; @@ -240,9 +240,9 @@ pub async fn run(cmd: MilestonesCmd, client: &Client, format: Format) -> anyhow: .map_err(|e| anyhow::anyhow!("Invalid date format (expected YYYY-MM-DD): {}", e))?; let input = ProjectMilestoneUpdateInput { - name, - target_date, - description, + name: name.into(), + target_date: target_date.into(), + description: description.into(), ..Default::default() }; diff --git a/crates/lineark/src/commands/projects.rs b/crates/lineark/src/commands/projects.rs index 4e77363..36cf632 100644 --- a/crates/lineark/src/commands/projects.rs +++ b/crates/lineark/src/commands/projects.rs @@ -3,7 +3,7 @@ use lineark_sdk::generated::inputs::{ProjectCreateInput, ProjectFilter, ProjectU use lineark_sdk::generated::types::{ Project, ProjectStatus, Team, TeamConnection, User, UserConnection, }; -use lineark_sdk::{Client, GraphQLFields}; +use lineark_sdk::{Client, GraphQLFields, MaybeUndefined}; use serde::{Deserialize, Serialize}; use tabled::Tabled; @@ -336,17 +336,17 @@ pub async fn run(cmd: ProjectsCmd, client: &Client, format: Format) -> anyhow::R .map_err(|e| anyhow::anyhow!("Invalid target-date (expected YYYY-MM-DD): {}", e))?; let input = ProjectCreateInput { - name: Some(name), - team_ids: Some(team_ids), - description, - lead_id, - member_ids, - start_date, - target_date, - priority, - content, - icon, - color, + name, + team_ids, + description: description.into(), + lead_id: lead_id.into(), + member_ids: member_ids.into(), + start_date: start_date.into(), + target_date: target_date.into(), + priority: priority.into(), + content: content.into(), + icon: icon.into(), + color: color.into(), ..Default::default() }; @@ -435,56 +435,43 @@ pub async fn run(cmd: ProjectsCmd, client: &Client, format: Format) -> anyhow::R .transpose() .map_err(|e| anyhow::anyhow!("Invalid target-date (expected YYYY-MM-DD): {}", e))?; + let lead_id = if clear_lead { + MaybeUndefined::Null + } else { + lead_id.into() + }; + let start_date = if clear_start_date { + MaybeUndefined::Null + } else { + start_date.into() + }; + let target_date = if clear_target_date { + MaybeUndefined::Null + } else { + target_date.into() + }; + let input = ProjectUpdateInput { - name, - description, - content, + name: name.into(), + description: description.into(), + content: content.into(), lead_id, - member_ids, - team_ids, + member_ids: member_ids.into(), + team_ids: team_ids.into(), start_date, target_date, - priority, - status_id, - icon, - color, - label_ids, + priority: priority.into(), + status_id: status_id.into(), + icon: icon.into(), + color: color.into(), + label_ids: label_ids.into(), ..Default::default() }; - // When --clear-* flags are used, we need to send `null` for the - // relevant field. ProjectUpdateInput uses skip_serializing_if so - // None omits the field (no-op). We serialize to Value and inject null. - let project = if clear_lead || clear_start_date || clear_target_date { - let mut input_val = serde_json::to_value(&input)?; - let obj = input_val.as_object_mut().unwrap(); - if clear_lead { - obj.insert("leadId".to_string(), serde_json::Value::Null); - } - if clear_start_date { - obj.insert("startDate".to_string(), serde_json::Value::Null); - } - if clear_target_date { - obj.insert("targetDate".to_string(), serde_json::Value::Null); - } - let variables = serde_json::json!({ "input": input_val, "id": project_id }); - let sel = ::selection(); - let query = format!( - "mutation($input: ProjectUpdateInput!, $id: String!) {{ projectUpdate(input: $input, id: $id) {{ success project {{ {sel} }} }} }}" - ); - let payload: serde_json::Value = client - .execute(&query, variables, "projectUpdate") - .await - .map_err(|e| anyhow::anyhow!("{}", e))?; - serde_json::from_value::( - payload.get("project").cloned().unwrap_or_default(), - )? - } else { - client - .project_update::(input, project_id) - .await - .map_err(|e| anyhow::anyhow!("{}", e))? - }; + let project = client + .project_update::(input, project_id) + .await + .map_err(|e| anyhow::anyhow!("{}", e))?; output::print_one(&project, format); } diff --git a/crates/lineark/src/commands/relations.rs b/crates/lineark/src/commands/relations.rs index b39f5a1..97d9de1 100644 --- a/crates/lineark/src/commands/relations.rs +++ b/crates/lineark/src/commands/relations.rs @@ -2,7 +2,7 @@ use clap::Args; use lineark_sdk::generated::enums::IssueRelationType; use lineark_sdk::generated::inputs::IssueRelationCreateInput; use lineark_sdk::generated::types::IssueRelation; -use lineark_sdk::{Client, GraphQLFields}; +use lineark_sdk::{Client, GraphQLFields, MaybeUndefined}; use serde::{Deserialize, Serialize}; use super::helpers::resolve_issue_id; @@ -98,10 +98,10 @@ pub async fn run(cmd: RelationsCmd, client: &Client, format: Format) -> anyhow:: let target_id = resolve_issue_id(client, target).await?; let input = IssueRelationCreateInput { - issue_id: Some(source_id), - related_issue_id: Some(target_id), - r#type: Some(relation_type), - ..Default::default() + id: MaybeUndefined::Undefined, + r#type: relation_type, + issue_id: source_id, + related_issue_id: target_id, }; let relation = client diff --git a/crates/lineark/src/commands/teams.rs b/crates/lineark/src/commands/teams.rs index d62ac20..b3c929f 100644 --- a/crates/lineark/src/commands/teams.rs +++ b/crates/lineark/src/commands/teams.rs @@ -253,15 +253,15 @@ pub async fn run(cmd: TeamsCmd, client: &Client, format: Format) -> anyhow::Resu triage_enabled, } => { let input = TeamCreateInput { - name: Some(name), - key, - description, - icon, - color, - timezone, - private, - cycles_enabled, - triage_enabled, + name, + key: key.into(), + description: description.into(), + icon: icon.into(), + color: color.into(), + timezone: timezone.into(), + private: private.into(), + cycles_enabled: cycles_enabled.into(), + triage_enabled: triage_enabled.into(), ..Default::default() }; @@ -302,15 +302,15 @@ pub async fn run(cmd: TeamsCmd, client: &Client, format: Format) -> anyhow::Resu let team_id = resolve_team_id(client, &id).await?; let input = TeamUpdateInput { - name, - key, - description, - icon, - color, - timezone, - private, - cycles_enabled, - triage_enabled, + name: name.into(), + key: key.into(), + description: description.into(), + icon: icon.into(), + color: color.into(), + timezone: timezone.into(), + private: private.into(), + cycles_enabled: cycles_enabled.into(), + triage_enabled: triage_enabled.into(), ..Default::default() }; @@ -337,8 +337,8 @@ pub async fn run(cmd: TeamsCmd, client: &Client, format: Format) -> anyhow::Resu let user_id = resolve_user_id_or_me(client, &user).await?; let input = TeamMembershipCreateInput { - team_id: Some(team_id), - user_id: Some(user_id), + team_id, + user_id, ..Default::default() }; diff --git a/crates/lineark/tests/online.rs b/crates/lineark/tests/online.rs index 0edb704..fea7ebe 100644 --- a/crates/lineark/tests/online.rs +++ b/crates/lineark/tests/online.rs @@ -1858,10 +1858,10 @@ mod online { use lineark_sdk::generated::inputs::IssueRelationCreateInput; let client = Client::from_token(test_token()).unwrap(); let input = IssueRelationCreateInput { - issue_id: Some(issue_a_id.clone()), - related_issue_id: Some(issue_b_id.clone()), - r#type: Some(IssueRelationType::Blocks), - ..Default::default() + id: lineark_sdk::MaybeUndefined::Undefined, + issue_id: issue_a_id.clone(), + related_issue_id: issue_b_id.clone(), + r#type: IssueRelationType::Blocks, }; tokio::runtime::Runtime::new().unwrap().block_on(async { client @@ -2268,8 +2268,8 @@ mod online { let rt = tokio::runtime::Runtime::new().unwrap(); let project: Project = rt.block_on(async { let input = ProjectCreateInput { - name: Some(project_label.clone()), - team_ids: Some(vec![team_id]), + name: project_label.clone(), + team_ids: vec![team_id], ..Default::default() }; retry_create(|| { @@ -3971,9 +3971,10 @@ mod online { title: Some(format!( "[test] CLI comments_lifecycle {}", &uuid::Uuid::new_v4().to_string()[..8] - )), - team_id: Some(team_id), - priority: Some(4), + )) + .into(), + team_id, + priority: Some(4).into(), ..Default::default() }) .await @@ -4128,9 +4129,10 @@ mod online { title: Some(format!( "[test] CLI comments_resolve_with_resolving_comment {}", &uuid::Uuid::new_v4().to_string()[..8] - )), - team_id: Some(team_id), - priority: Some(4), + )) + .into(), + team_id, + priority: Some(4).into(), ..Default::default() }) .await @@ -4171,9 +4173,9 @@ mod online { let reply = tokio::runtime::Runtime::new().unwrap().block_on(async { client .comment_create::(CommentCreateInput { - body: Some("Reply that resolves thread".to_string()), - issue_id: Some(issue_id.clone()), - parent_id: Some(parent_id.clone()), + body: Some("Reply that resolves thread".to_string()).into(), + issue_id: Some(issue_id.clone()).into(), + parent_id: Some(parent_id.clone()).into(), ..Default::default() }) .await @@ -4230,9 +4232,10 @@ mod online { title: Some(format!( "[test] CLI find-branch {}", &uuid::Uuid::new_v4().to_string()[..8] - )), - team_id: Some(team_id), - priority: Some(4), + )) + .into(), + team_id, + priority: Some(4).into(), ..Default::default() }; let entity = retry_create(|| { @@ -4639,9 +4642,10 @@ mod online { title: Some(format!( "[test] CLI batch-update A {}", &uuid::Uuid::new_v4().to_string()[..8] - )), - team_id: Some(team_id.clone()), - priority: Some(4), + )) + .into(), + team_id: team_id.clone(), + priority: Some(4).into(), ..Default::default() }) .await @@ -4659,9 +4663,10 @@ mod online { title: Some(format!( "[test] CLI batch-update B {}", &uuid::Uuid::new_v4().to_string()[..8] - )), - team_id: Some(team_id), - priority: Some(4), + )) + .into(), + team_id, + priority: Some(4).into(), ..Default::default() }) .await @@ -4717,9 +4722,10 @@ mod online { title: Some(format!( "[test] CLI batch-update status A {}", &uuid::Uuid::new_v4().to_string()[..8] - )), - team_id: Some(team_id.clone()), - priority: Some(4), + )) + .into(), + team_id: team_id.clone(), + priority: Some(4).into(), ..Default::default() }) .await @@ -4737,9 +4743,10 @@ mod online { title: Some(format!( "[test] CLI batch-update status B {}", &uuid::Uuid::new_v4().to_string()[..8] - )), - team_id: Some(team_id), - priority: Some(4), + )) + .into(), + team_id, + priority: Some(4).into(), ..Default::default() }) .await From e5067212f89c13da9a228d0d1ec259134a8e879b Mon Sep 17 00:00:00 2001 From: Cadu Date: Thu, 16 Apr 2026 09:59:28 -0300 Subject: [PATCH 2/9] codegen(inputs): recurse on nullability instead of panicking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the `[T]` / `[T]!` panic with uniform recursion: at the outermost position nullable wraps in `MaybeUndefined`; inside any list, nullable wraps in `Option`; required positions stay plain at any depth. GraphQL list slots are always materialized on the wire, so the three-state Undefined/Null/Value distinction is meaningless one level in — `Option` is the right shape there. This handles every list shape the spec allows, including nested ones like `[[T!]!]!`, without any schema-specific guard. Generated `inputs.rs` is byte-identical for Linear's current schema (zero nullable-inner lists). The change is purely defensive: future schema additions are handled instead of crashing the build. --- crates/lineark-codegen/src/emit_inputs.rs | 71 ++++++++++------------- 1 file changed, 31 insertions(+), 40 deletions(-) diff --git a/crates/lineark-codegen/src/emit_inputs.rs b/crates/lineark-codegen/src/emit_inputs.rs index cfa805b..7e5ddd7 100644 --- a/crates/lineark-codegen/src/emit_inputs.rs +++ b/crates/lineark-codegen/src/emit_inputs.rs @@ -103,7 +103,7 @@ fn emit_input_struct( | None ) }) - .map(|f| emit_field(f, type_kind_map, &input.name)) + .map(|f| emit_field(f, type_kind_map)) .collect(); let derives = if defaultable.contains(&input.name) { @@ -122,11 +122,7 @@ fn emit_input_struct( } } -fn emit_field( - f: &FieldDef, - type_kind_map: &HashMap, - input_name: &str, -) -> TokenStream { +fn emit_field(f: &FieldDef, type_kind_map: &HashMap) -> TokenStream { let field_name_str = f.name.to_snake_case(); let original_name = &f.name; let safe_name = parser::safe_ident(&field_name_str); @@ -139,7 +135,7 @@ fn emit_field( }; let is_required = matches!(f.ty, GqlType::NonNull(_)); - let rust_type = resolve_input_type(&f.ty, type_kind_map, input_name, &f.name); + let rust_type = resolve_input_type(&f.ty, type_kind_map); let fdoc = parser::doc_comment_tokens(&f.description); // If the snake_case name differs from the original camelCase, add serde rename. // We use rename_all on the struct level, so individual renames are only needed @@ -171,37 +167,40 @@ fn emit_field( /// Resolve a GraphQL input field type into its emitted Rust tokens. /// -/// - Nullable outer (`T`) → `MaybeUndefined` so the consumer can distinguish -/// omitted from explicit null. -/// - Required outer (`T!`) → plain `T` / `Vec` / `Box`. -fn resolve_input_type( - ty: &GqlType, - type_kind_map: &HashMap, - input_name: &str, - field_name: &str, -) -> TokenStream { +/// Walks the type tree and applies nullability uniformly: +/// +/// - At the **outermost** position, nullable wraps in `MaybeUndefined` so +/// the consumer can distinguish "omit this field" from "send explicit null". +/// - **Inside a list**, nullable wraps in `Option` — GraphQL list slots are +/// always materialized (no "omit this slot" wire form), so the three-state +/// distinction is meaningless one level in. +/// - Required positions emit plain `T` at any depth. +/// +/// This handles every shape the GraphQL spec allows (`T`, `T!`, `[T!]!`, +/// `[T!]`, `[T]!`, `[T]`, and arbitrarily nested lists like `[[T!]!]!`) +/// without special-casing the schema. +fn resolve_input_type(ty: &GqlType, type_kind_map: &HashMap) -> TokenStream { + resolve(ty, type_kind_map, /* depth = */ 0) +} + +fn resolve(ty: &GqlType, type_kind_map: &HashMap, depth: usize) -> TokenStream { match ty { - GqlType::NonNull(inner) => resolve_payload(inner, type_kind_map, input_name, field_name), + GqlType::NonNull(inner) => resolve_required(inner, type_kind_map, depth), other => { - let inner = resolve_payload(other, type_kind_map, input_name, field_name); - quote! { MaybeUndefined<#inner> } + let inner = resolve_required(other, type_kind_map, depth); + if depth == 0 { + quote! { MaybeUndefined<#inner> } + } else { + quote! { Option<#inner> } + } } } } -/// Resolve the "payload" type — the value that either sits inside -/// `MaybeUndefined<_>` for a nullable field or is used directly for a required -/// field. -/// -/// Also enforces Linear's schema invariant that list types have non-null -/// element types (`[T!]` / `[T!]!`, never `[T]` / `[T]!`). If Linear ever adds -/// a nullable-inner list, the maintainer should extend this function -/// deliberately rather than have codegen silently emit a mismatched type. -fn resolve_payload( +fn resolve_required( ty: &GqlType, type_kind_map: &HashMap, - input_name: &str, - field_name: &str, + depth: usize, ) -> TokenStream { match ty { GqlType::Named(name) => { @@ -220,17 +219,9 @@ fn resolve_payload( graphql_type_to_rust(name) } } - GqlType::NonNull(inner) => resolve_payload(inner, type_kind_map, input_name, field_name), + GqlType::NonNull(inner) => resolve_required(inner, type_kind_map, depth), GqlType::List(inner) => { - if !matches!(**inner, GqlType::NonNull(_)) { - panic!( - "codegen: input `{input_name}.{field_name}` uses a list with a nullable inner \ - type (`[T]` or `[T]!`), which is not currently supported. Linear's schema had \ - zero such occurrences when this codegen was written. Extend \ - `resolve_payload` in emit_inputs.rs to decide the Rust representation." - ); - } - let elem = resolve_payload(inner, type_kind_map, input_name, field_name); + let elem = resolve(inner, type_kind_map, depth + 1); quote! { Vec<#elem> } } } From 1d545c8625ad5517d715698c36464f945005faee Mon Sep 17 00:00:00 2001 From: Cadu Date: Thu, 16 Apr 2026 10:49:15 -0300 Subject: [PATCH 3/9] codegen(types): honor list element nullability for outputs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Apply the same uniform-recursion rule to output types: nullable elements inside a list become `Option` instead of being silently flattened to `T`. The outermost field is still always wrapped in `Option` (the lean-struct selection convention — consumers can omit fields they don't select), and Object types still get `Box` for mutual-recursion sizing. Closes the input/output asymmetry: both code paths now handle every list shape the GraphQL spec allows (`[T!]!`, `[T!]`, `[T]!`, `[T]`, and any nesting like `[[T!]!]!`) without special-casing the schema. Generated `types.rs` is byte-identical for Linear's current schema (zero nullable-inner lists across the entire SDL). --- crates/lineark-codegen/src/emit_types.rs | 59 ++++++++++++++++-------- 1 file changed, 41 insertions(+), 18 deletions(-) diff --git a/crates/lineark-codegen/src/emit_types.rs b/crates/lineark-codegen/src/emit_types.rs index 8c76dfc..e80ad90 100644 --- a/crates/lineark-codegen/src/emit_types.rs +++ b/crates/lineark-codegen/src/emit_types.rs @@ -78,12 +78,24 @@ fn is_includable_field(ty: &GqlType, type_kind_map: &HashMap) ) } -/// Resolve a GraphQL type to its Rust type tokens. -/// All output type fields are wrapped in `Option`. -/// Uses `Box` for Object-typed fields to avoid infinite-size types -/// from mutual recursion (e.g., Integration <-> Organization). +/// Resolve a GraphQL output field type to its Rust type tokens. +/// +/// **Outermost** is always wrapped in `Option` regardless of the schema's +/// required marker — this lets consumers define lean structs via +/// `#[derive(GraphQLFields)]` that omit fields they don't select, with the +/// missing field deserializing as `None`. Object types additionally get +/// `Box` to keep mutually recursive types (e.g. `Integration` ↔ +/// `Organization`) sized. +/// +/// **Inside lists**, nullability is honored faithfully: nullable elements +/// become `Option`, required elements stay bare `T`. GraphQL list slots +/// are always materialized on the wire, so there's no "field omitted" +/// concept inside a list — `Option` is the right shape. +/// +/// This produces correct Rust shapes for every list shape the spec allows +/// (`[T!]!`, `[T!]`, `[T]!`, `[T]`, and arbitrary nesting like `[[T!]!]!`). fn resolve_type(ty: &GqlType, type_kind_map: &HashMap) -> TokenStream { - let inner = resolve_inner_type(ty, type_kind_map); + let inner = resolve_required(ty, type_kind_map); let base = ty.base_name(); if matches!(type_kind_map.get(base), Some(TypeKind::Object)) { quote! { Option> } @@ -92,27 +104,38 @@ fn resolve_type(ty: &GqlType, type_kind_map: &HashMap) -> Toke } } -/// Resolve the inner type (without the outer Option wrapper). -fn resolve_inner_type(ty: &GqlType, type_kind_map: &HashMap) -> TokenStream { +/// Resolve a type as if it were required at its current position. Strips +/// outer `NonNull` markers, recurses into lists via [`resolve_list_element`]. +fn resolve_required(ty: &GqlType, type_kind_map: &HashMap) -> TokenStream { match ty { - GqlType::Named(name) => { - let base = name.as_str(); - match type_kind_map.get(base) { - Some(TypeKind::Object) => { - let ident = quote::format_ident!("{}", name); - quote! { #ident } - } - _ => graphql_type_to_rust(name), + GqlType::Named(name) => match type_kind_map.get(name.as_str()) { + Some(TypeKind::Object) => { + let ident = quote::format_ident!("{}", name); + quote! { #ident } } - } - GqlType::NonNull(inner) => resolve_inner_type(inner, type_kind_map), + _ => graphql_type_to_rust(name), + }, + GqlType::NonNull(inner) => resolve_required(inner, type_kind_map), GqlType::List(inner) => { - let elem = resolve_inner_type(inner, type_kind_map); + let elem = resolve_list_element(inner, type_kind_map); quote! { Vec<#elem> } } } } +/// Resolve a single list element. Nullable elements wrap in `Option`, +/// required elements stay bare. Mutually recurses with [`resolve_required`] +/// to handle nested lists. +fn resolve_list_element(ty: &GqlType, type_kind_map: &HashMap) -> TokenStream { + match ty { + GqlType::NonNull(inner) => resolve_required(inner, type_kind_map), + other => { + let payload = resolve_required(other, type_kind_map); + quote! { Option<#payload> } + } + } +} + /// Generate `impl GraphQLFields for T` — returns all scalar/enum field names. /// Sets `type FullType = Self` so full types validate against themselves. fn emit_graphql_fields_impl( From 547507625e86f847649a7c5e2ec984d3a9836ce6 Mon Sep 17 00:00:00 2001 From: Cadu Date: Thu, 16 Apr 2026 11:56:35 -0300 Subject: [PATCH 4/9] test(codegen): cover every list shape with synthetic schemas MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Linear's schema has zero nullable-inner lists, so the new recursive nullability rules in emit_inputs.rs and emit_types.rs are correct but unexercised by the regenerated output. Add unit tests that build synthetic GqlType trees for every shape the GraphQL spec allows (T, T!, [T!]!, [T!], [T]!, [T], plus nested forms like [[T!]!]! and [[T]!]) and assert the resolved Rust types directly. Also locks in the existing convention that the outer wrap of an Object field always uses Box — even for list-of-Object fields where the Vec already lives on the heap. Captured so any future change to that rule is intentional. --- crates/lineark-codegen/src/emit_inputs.rs | 110 ++++++++++++++++++++++ crates/lineark-codegen/src/emit_types.rs | 87 +++++++++++++++++ 2 files changed, 197 insertions(+) diff --git a/crates/lineark-codegen/src/emit_inputs.rs b/crates/lineark-codegen/src/emit_inputs.rs index 7e5ddd7..18eba2f 100644 --- a/crates/lineark-codegen/src/emit_inputs.rs +++ b/crates/lineark-codegen/src/emit_inputs.rs @@ -226,3 +226,113 @@ fn resolve_required( } } } + +#[cfg(test)] +mod tests { + use super::*; + + fn type_kind_map() -> HashMap { + let mut m = HashMap::new(); + m.insert("String".to_string(), TypeKind::Scalar); + m + } + + /// Render a single field's resolved Rust type with whitespace collapsed, + /// so test assertions can compare against a clean expected string without + /// matching the exact spacing `quote!` produces. + fn rendered(ty: GqlType) -> String { + resolve_input_type(&ty, &type_kind_map()) + .to_string() + .split_whitespace() + .collect::() + } + + fn named() -> GqlType { + GqlType::Named("String".to_string()) + } + fn nn(t: GqlType) -> GqlType { + GqlType::NonNull(Box::new(t)) + } + fn list(t: GqlType) -> GqlType { + GqlType::List(Box::new(t)) + } + + /// Each row covers one shape the GraphQL spec allows. The full table is + /// in one test so any drift is visible at a glance. + #[test] + fn input_field_shapes() { + // Scalars + assert_eq!(rendered(nn(named())), "String", "T!"); + assert_eq!(rendered(named()), "MaybeUndefined", "T"); + + // First-level lists + assert_eq!(rendered(nn(list(nn(named())))), "Vec", "[T!]!"); + assert_eq!( + rendered(list(nn(named()))), + "MaybeUndefined>", + "[T!]" + ); + assert_eq!(rendered(nn(list(named()))), "Vec>", "[T]!"); + assert_eq!( + rendered(list(named())), + "MaybeUndefined>>", + "[T]" + ); + + // Nested lists — verify the recursion compounds correctly + assert_eq!( + rendered(nn(list(nn(list(nn(named())))))), + "Vec>", + "[[T!]!]!" + ); + assert_eq!( + rendered(list(nn(list(named())))), + "MaybeUndefined>>>", + "[[T]!]" + ); + assert_eq!( + rendered(nn(list(list(nn(named()))))), + "Vec>>", + "[[T!]]!" + ); + } + + /// End-to-end: build an input struct with one field of each shape and + /// confirm the emitted code parses as valid Rust and contains the right + /// type wrappers + skip-serializing predicate on the right fields. + #[test] + fn emit_struct_for_all_list_shapes_parses() { + let mk_field = |name: &str, ty: GqlType| FieldDef { + name: name.to_string(), + description: None, + ty, + arguments: vec![], + }; + let inputs = vec![InputDef { + name: "Sample".to_string(), + description: None, + fields: vec![ + mk_field("a", nn(named())), + mk_field("b", named()), + mk_field("c", nn(list(nn(named())))), + mk_field("d", list(nn(named()))), + mk_field("e", nn(list(named()))), + mk_field("f", list(named())), + ], + }]; + let output = emit(&inputs, &type_kind_map()).to_string(); + syn::parse_file(&output).expect("emitted input code must be valid Rust"); + + let normalized: String = output.split_whitespace().collect(); + // Required field: no skip predicate, plain T + assert!(normalized.contains("puba:String,")); + // Nullable field: MaybeUndefined wrapper + skip predicate + assert!(normalized.contains("MaybeUndefined::is_undefined")); + assert!(normalized.contains("pubb:MaybeUndefined,")); + // Lists honor inner nullability uniformly + assert!(normalized.contains("pubc:Vec,")); + assert!(normalized.contains("pubd:MaybeUndefined>,")); + assert!(normalized.contains("pube:Vec>,")); + assert!(normalized.contains("pubf:MaybeUndefined>>,")); + } +} diff --git a/crates/lineark-codegen/src/emit_types.rs b/crates/lineark-codegen/src/emit_types.rs index e80ad90..57d614b 100644 --- a/crates/lineark-codegen/src/emit_types.rs +++ b/crates/lineark-codegen/src/emit_types.rs @@ -346,6 +346,93 @@ mod tests { assert!(output.contains("label_ids")); } + fn rendered_output(ty: GqlType) -> String { + let map = make_type_kind_map(); + resolve_type(&ty, &map) + .to_string() + .split_whitespace() + .collect::() + } + + fn n(t: GqlType) -> GqlType { + GqlType::NonNull(Box::new(t)) + } + fn l(t: GqlType) -> GqlType { + GqlType::List(Box::new(t)) + } + fn s() -> GqlType { + GqlType::Named("String".to_string()) + } + + /// Output convention: outermost is **always** wrapped in `Option<>` + /// (lean-struct selection allows any field to be missing). Inside lists, + /// element nullability is honored faithfully. + #[test] + fn output_field_shapes() { + // Outer wrap is Option regardless of `!` — this is the lean-struct convention. + assert_eq!(rendered_output(n(s())), "Option", "T!"); + assert_eq!(rendered_output(s()), "Option", "T"); + + // First-level lists + assert_eq!( + rendered_output(n(l(n(s())))), + "Option>", + "[T!]!" + ); + assert_eq!(rendered_output(l(n(s()))), "Option>", "[T!]"); + assert_eq!( + rendered_output(n(l(s()))), + "Option>>", + "[T]!" + ); + assert_eq!( + rendered_output(l(s())), + "Option>>", + "[T]" + ); + + // Nested lists + assert_eq!( + rendered_output(n(l(n(l(n(s())))))), + "Option>>", + "[[T!]!]!" + ); + assert_eq!( + rendered_output(l(n(l(s())))), + "Option>>>", + "[[T]!]" + ); + assert_eq!( + rendered_output(n(l(l(n(s()))))), + "Option>>>", + "[[T!]]!" + ); + } + + /// `Box<>` is added at the outer level whenever the innermost named type + /// is an Object — that's the existing convention to keep mutually recursive + /// types sized. It applies even to list-of-Object fields (`Option>>`), + /// which is functionally fine (Vec is already heap-allocated) but adds an + /// unnecessary allocation. Captured here so any future change to the rule + /// is intentional. + #[test] + fn output_object_outer_wrap_uses_box() { + let map = make_type_kind_map(); + let team = GqlType::Named("Team".to_string()); + let outer: String = resolve_type(&team, &map) + .to_string() + .split_whitespace() + .collect(); + assert_eq!(outer, "Option>"); + + let team_list = n(l(n(GqlType::Named("Team".to_string())))); + let listed: String = resolve_type(&team_list, &map) + .to_string() + .split_whitespace() + .collect(); + assert_eq!(listed, "Option>>"); + } + #[test] fn emit_graphql_fields_selection() { let type_kind_map = make_type_kind_map(); From 18c5e7b5a3b2763948cb5c4a54cf3c73d6a6da9d Mon Sep 17 00:00:00 2001 From: Cadu Date: Thu, 16 Apr 2026 12:24:09 -0300 Subject: [PATCH 5/9] codegen: only Box fields that actually create size cycles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously every Object/InputObject field was wrapped in `Box` unconditionally — a safe over-approximation that prevented infinite-size Rust structs but added a heap allocation per field per instance, even for the vast majority of fields where no cycle exists. Replace with a precise per-field analysis: 1. Build a directed reference graph excluding edges through lists, since `Vec` is already heap-allocated and breaks size cycles regardless of `T`. 2. Compute transitive reachability once per emit pass. 3. For each field `Container.f: Target` that's a direct (non-list) reference, emit `Box` only when `Target` can transitively reach `Container` — exactly the shape that would otherwise produce an infinite-size struct. The rule applies symmetrically to inputs and outputs via a shared `dep_graph` module. For inputs, `Box` is also gated on `depth == 0`: inside a list the wrapper is `Vec`, which is sized and never needs `Box` on its element. Effect on Linear's regenerated SDK: - `Box<>` in inputs.rs: 1094 → 210 (-81%) - `Box<>` in types.rs: 1070 → 182 (-83%) Verified by: - Workspace builds cleanly (Rust's sizedness checker confirms the remaining boxes are sufficient — if the analysis missed a cycle, rustc would reject the generated code). - All 232 offline + 107 online tests pass unchanged. - New synthetic unit tests (`box_only_when_field_creates_size_cycle` on both emitters) exercise cycle / non-cycle / list / self-loop cases independent of Linear's schema. --- crates/lineark-codegen/src/dep_graph.rs | 115 ++ crates/lineark-codegen/src/emit_inputs.rs | 200 ++- crates/lineark-codegen/src/emit_types.rs | 210 ++- crates/lineark-codegen/src/main.rs | 1 + crates/lineark-sdk/src/generated/inputs.rs | 1770 ++++++++++--------- crates/lineark-sdk/src/generated/types.rs | 1776 ++++++++++---------- 6 files changed, 2248 insertions(+), 1824 deletions(-) create mode 100644 crates/lineark-codegen/src/dep_graph.rs diff --git a/crates/lineark-codegen/src/dep_graph.rs b/crates/lineark-codegen/src/dep_graph.rs new file mode 100644 index 0000000..4edc217 --- /dev/null +++ b/crates/lineark-codegen/src/dep_graph.rs @@ -0,0 +1,115 @@ +//! Schema dependency-graph utilities. +//! +//! Used by codegen to decide where `Box` is actually required on +//! Object / InputObject fields. The high-level rule: +//! +//! For a field `Container.f: Target` (a direct, non-list reference to another +//! Object/InputObject), `Box` is needed iff `Target` can transitively +//! reach `Container` in the schema's reference graph — that's exactly the +//! shape that would otherwise produce an infinite-size Rust struct. +//! +//! Edges through lists are *excluded* from the graph: `Vec` is already a +//! heap pointer with a fixed stack size, so it breaks any size cycle. + +use std::collections::{HashMap, HashSet}; + +/// For each node in `edges`, compute the set of nodes reachable from it +/// (transitively, including the node itself if there's a cycle back to it). +pub fn reachability(edges: &HashMap>) -> HashMap> { + let mut result = HashMap::with_capacity(edges.len()); + for start in edges.keys() { + result.insert(start.clone(), reachable_from(start, edges)); + } + result +} + +fn reachable_from(start: &str, edges: &HashMap>) -> HashSet { + let mut visited: HashSet = HashSet::new(); + let mut stack: Vec = match edges.get(start) { + Some(succs) => succs.clone(), + None => Vec::new(), + }; + while let Some(node) = stack.pop() { + if !visited.insert(node.clone()) { + continue; + } + if let Some(succs) = edges.get(&node) { + for s in succs { + if !visited.contains(s) { + stack.push(s.clone()); + } + } + } + } + visited +} + +/// Returns true iff `target` can reach `container` in the graph — i.e., +/// embedding `target` directly inside `container` would form a size cycle. +pub fn reaches(target: &str, container: &str, reach: &HashMap>) -> bool { + reach.get(target).is_some_and(|r| r.contains(container)) +} + +#[cfg(test)] +mod tests { + use super::*; + + fn graph(pairs: &[(&str, &[&str])]) -> HashMap> { + pairs + .iter() + .map(|(k, vs)| (k.to_string(), vs.iter().map(|s| s.to_string()).collect())) + .collect() + } + + #[test] + fn empty_graph_has_no_reach() { + let g = graph(&[]); + assert!(reachability(&g).is_empty()); + } + + #[test] + fn linear_chain_reach_forward_only() { + let g = graph(&[("A", &["B"]), ("B", &["C"]), ("C", &[])]); + let r = reachability(&g); + assert!(reaches("A", "B", &r)); + assert!(reaches("A", "C", &r)); + assert!(reaches("B", "C", &r)); + assert!(!reaches("B", "A", &r)); + assert!(!reaches("C", "A", &r)); + // No cycles → no node reaches itself. + assert!(!reaches("A", "A", &r)); + } + + #[test] + fn self_loop_reaches_itself() { + let g = graph(&[("A", &["A"])]); + let r = reachability(&g); + assert!(reaches("A", "A", &r)); + } + + #[test] + fn mutual_recursion_both_reach_each_other() { + let g = graph(&[("A", &["B"]), ("B", &["A"])]); + let r = reachability(&g); + assert!(reaches("A", "B", &r)); + assert!(reaches("B", "A", &r)); + assert!(reaches("A", "A", &r)); + assert!(reaches("B", "B", &r)); + } + + #[test] + fn cycle_not_involving_node_does_not_reach_it() { + // A → B → C → B (B,C in cycle; A is upstream and not part of it) + let g = graph(&[("A", &["B"]), ("B", &["C"]), ("C", &["B"])]); + let r = reachability(&g); + assert!(reaches("A", "B", &r)); + assert!(reaches("A", "C", &r)); + // B and C reach each other and themselves, but not A. + assert!(reaches("B", "C", &r)); + assert!(reaches("C", "B", &r)); + assert!(reaches("B", "B", &r)); + assert!(reaches("C", "C", &r)); + assert!(!reaches("B", "A", &r)); + assert!(!reaches("C", "A", &r)); + } +} diff --git a/crates/lineark-codegen/src/emit_inputs.rs b/crates/lineark-codegen/src/emit_inputs.rs index 18eba2f..298ed77 100644 --- a/crates/lineark-codegen/src/emit_inputs.rs +++ b/crates/lineark-codegen/src/emit_inputs.rs @@ -1,3 +1,4 @@ +use crate::dep_graph::{self, reaches}; use crate::emit_scalars::graphql_type_to_rust; use crate::parser::{self, FieldDef, GqlType, InputDef, TypeKind}; use heck::ToSnakeCase; @@ -7,11 +8,12 @@ use std::collections::{HashMap, HashSet}; pub fn emit(inputs: &[InputDef], type_kind_map: &HashMap) -> TokenStream { let defaultable = compute_defaultable_inputs(inputs, type_kind_map); + let reach = compute_input_reachability(inputs, type_kind_map); let structs: Vec = inputs .iter() .filter(|i| !i.name.is_empty()) - .map(|i| emit_input_struct(i, type_kind_map, &defaultable)) + .map(|i| emit_input_struct(i, type_kind_map, &defaultable, &reach)) .collect(); quote! { @@ -27,6 +29,52 @@ pub fn emit(inputs: &[InputDef], type_kind_map: &HashMap) -> T } } +/// Build the InputObject dependency graph (edges through direct, non-list +/// references only) and compute transitive reachability. Used to decide +/// per-field whether `Box` is needed for size correctness. +fn compute_input_reachability( + inputs: &[InputDef], + type_kind_map: &HashMap, +) -> HashMap> { + let mut edges: HashMap> = HashMap::with_capacity(inputs.len()); + for input in inputs { + if input.name.is_empty() { + continue; + } + let mut deps = Vec::new(); + for field in &input.fields { + if let Some(target) = direct_input_target(&field.ty, type_kind_map) { + deps.push(target.to_string()); + } + } + edges.insert(input.name.clone(), deps); + } + dep_graph::reachability(&edges) +} + +/// If `ty` is a direct (non-list) reference to an InputObject, return that +/// type's name. Lists return `None` because `Vec` is sized and breaks +/// size cycles regardless of `T`. +fn direct_input_target<'a>( + ty: &'a GqlType, + type_kind_map: &HashMap, +) -> Option<&'a str> { + match ty { + GqlType::NonNull(inner) => direct_input_target(inner, type_kind_map), + GqlType::Named(name) => { + if matches!( + type_kind_map.get(name.as_str()), + Some(TypeKind::InputObject) + ) { + Some(name.as_str()) + } else { + None + } + } + GqlType::List(_) => None, + } +} + /// Compute which input structs can still derive `Default`. /// /// Required (non-null) fields now emit as plain `T` instead of `Option`, so @@ -79,6 +127,7 @@ fn emit_input_struct( input: &InputDef, type_kind_map: &HashMap, defaultable: &HashSet, + reach: &HashMap>, ) -> TokenStream { let name = quote::format_ident!("{}", input.name); let doc = parser::doc_comment_tokens(&input.description); @@ -103,7 +152,7 @@ fn emit_input_struct( | None ) }) - .map(|f| emit_field(f, type_kind_map)) + .map(|f| emit_field(f, type_kind_map, &input.name, reach)) .collect(); let derives = if defaultable.contains(&input.name) { @@ -122,7 +171,12 @@ fn emit_input_struct( } } -fn emit_field(f: &FieldDef, type_kind_map: &HashMap) -> TokenStream { +fn emit_field( + f: &FieldDef, + type_kind_map: &HashMap, + container: &str, + reach: &HashMap>, +) -> TokenStream { let field_name_str = f.name.to_snake_case(); let original_name = &f.name; let safe_name = parser::safe_ident(&field_name_str); @@ -135,7 +189,7 @@ fn emit_field(f: &FieldDef, type_kind_map: &HashMap) -> TokenS }; let is_required = matches!(f.ty, GqlType::NonNull(_)); - let rust_type = resolve_input_type(&f.ty, type_kind_map); + let rust_type = resolve_input_type(&f.ty, type_kind_map, container, reach); let fdoc = parser::doc_comment_tokens(&f.description); // If the snake_case name differs from the original camelCase, add serde rename. // We use rename_all on the struct level, so individual renames are only needed @@ -176,18 +230,36 @@ fn emit_field(f: &FieldDef, type_kind_map: &HashMap) -> TokenS /// distinction is meaningless one level in. /// - Required positions emit plain `T` at any depth. /// +/// `Box` is added to a direct InputObject reference only when the field +/// would otherwise create an infinite-size struct: at depth 0 (where the +/// containing wrapper is `MaybeUndefined<_>` or plain `T`, both of which need +/// `T` to be sized) and the target can transitively reach `container` in the +/// schema's reference graph. Non-cyclic references and references inside lists +/// (where `Vec` already breaks the size cycle) drop the `Box` entirely. +/// /// This handles every shape the GraphQL spec allows (`T`, `T!`, `[T!]!`, /// `[T!]`, `[T]!`, `[T]`, and arbitrarily nested lists like `[[T!]!]!`) /// without special-casing the schema. -fn resolve_input_type(ty: &GqlType, type_kind_map: &HashMap) -> TokenStream { - resolve(ty, type_kind_map, /* depth = */ 0) +fn resolve_input_type( + ty: &GqlType, + type_kind_map: &HashMap, + container: &str, + reach: &HashMap>, +) -> TokenStream { + resolve(ty, type_kind_map, /* depth = */ 0, container, reach) } -fn resolve(ty: &GqlType, type_kind_map: &HashMap, depth: usize) -> TokenStream { +fn resolve( + ty: &GqlType, + type_kind_map: &HashMap, + depth: usize, + container: &str, + reach: &HashMap>, +) -> TokenStream { match ty { - GqlType::NonNull(inner) => resolve_required(inner, type_kind_map, depth), + GqlType::NonNull(inner) => resolve_required(inner, type_kind_map, depth, container, reach), other => { - let inner = resolve_required(other, type_kind_map, depth); + let inner = resolve_required(other, type_kind_map, depth, container, reach); if depth == 0 { quote! { MaybeUndefined<#inner> } } else { @@ -201,15 +273,24 @@ fn resolve_required( ty: &GqlType, type_kind_map: &HashMap, depth: usize, + container: &str, + reach: &HashMap>, ) -> TokenStream { match ty { GqlType::Named(name) => { let kind = type_kind_map.get(name.as_str()); if matches!(kind, Some(TypeKind::InputObject)) { let ident = quote::format_ident!("{}", name); - // Self- and mutual-reference: input types reference other input - // types in the same module. - quote! { Box<#ident> } + // Box only when depth == 0 (above us is `MaybeUndefined<_>` or + // plain `T`, both needing sized T) AND the target can reach the + // containing struct (true size cycle). Inside a list, Vec breaks + // the cycle on its own and Box is unnecessary. + let needs_box = depth == 0 && reaches(name, container, reach); + if needs_box { + quote! { Box<#ident> } + } else { + quote! { #ident } + } } else if matches!( kind, Some(TypeKind::Union) | Some(TypeKind::Interface) | Some(TypeKind::Object) @@ -219,9 +300,9 @@ fn resolve_required( graphql_type_to_rust(name) } } - GqlType::NonNull(inner) => resolve_required(inner, type_kind_map, depth), + GqlType::NonNull(inner) => resolve_required(inner, type_kind_map, depth, container, reach), GqlType::List(inner) => { - let elem = resolve(inner, type_kind_map, depth + 1); + let elem = resolve(inner, type_kind_map, depth + 1, container, reach); quote! { Vec<#elem> } } } @@ -239,9 +320,12 @@ mod tests { /// Render a single field's resolved Rust type with whitespace collapsed, /// so test assertions can compare against a clean expected string without - /// matching the exact spacing `quote!` produces. + /// matching the exact spacing `quote!` produces. Uses an empty reach map + /// so cycles are impossible — `Box` never applies, isolating list/nullability + /// rules from Box rules. fn rendered(ty: GqlType) -> String { - resolve_input_type(&ty, &type_kind_map()) + let reach: HashMap> = HashMap::new(); + resolve_input_type(&ty, &type_kind_map(), "Container", &reach) .to_string() .split_whitespace() .collect::() @@ -335,4 +419,88 @@ mod tests { assert!(normalized.contains("pube:Vec>,")); assert!(normalized.contains("pubf:MaybeUndefined>>,")); } + + /// Box is only emitted on InputObject fields when the field would otherwise + /// create an infinite-size struct: at depth 0 (where the wrapper — + /// `MaybeUndefined<_>` or plain `T` — needs `T` sized) and the target can + /// transitively reach the containing struct. List-wrapped fields drop Box + /// because `Vec` is sized, and non-cyclic refs drop Box because there's + /// no size cycle to break. + #[test] + fn input_box_only_when_field_creates_size_cycle() { + // Schema: + // Container { f1: Filter, f2: [Filter!]!, f3: Loner } + // Filter { c: Container, kids: [Filter!]! } + // Loner { name: String } + let mut map = HashMap::new(); + map.insert("String".to_string(), TypeKind::Scalar); + map.insert("Container".to_string(), TypeKind::InputObject); + map.insert("Filter".to_string(), TypeKind::InputObject); + map.insert("Loner".to_string(), TypeKind::InputObject); + + let mk = |name: &str, ty: GqlType| FieldDef { + name: name.to_string(), + description: None, + ty, + arguments: vec![], + }; + + let inputs = vec![ + InputDef { + name: "Container".to_string(), + description: None, + fields: vec![ + mk("f1", GqlType::Named("Filter".to_string())), + mk("f2", nn(list(nn(GqlType::Named("Filter".to_string()))))), + mk("f3", GqlType::Named("Loner".to_string())), + ], + }, + InputDef { + name: "Filter".to_string(), + description: None, + fields: vec![ + mk("c", GqlType::Named("Container".to_string())), + mk("kids", nn(list(nn(GqlType::Named("Filter".to_string()))))), + ], + }, + InputDef { + name: "Loner".to_string(), + description: None, + fields: vec![mk("name", named())], + }, + ]; + + let normalized: String = emit(&inputs, &map).to_string().split_whitespace().collect(); + + // Container.f1 → Filter, and Filter reaches Container → Box. + assert!( + normalized.contains("pubf1:MaybeUndefined>,"), + "Container.f1 should be Boxed (cycle through Filter): {normalized}" + ); + // Container.f2 → list of Filter; Vec breaks the size cycle, no Box. + assert!( + normalized.contains("pubf2:Vec,"), + "Container.f2 should not be Boxed (Vec breaks cycle): {normalized}" + ); + // Container.f3 → Loner; Loner cannot reach Container, no Box. + assert!( + normalized.contains("pubf3:MaybeUndefined,"), + "Container.f3 should not be Boxed (no cycle): {normalized}" + ); + // Filter.c closes the cycle from the other side → Box. + assert!( + normalized.contains("pubc:MaybeUndefined>,"), + "Filter.c should be Boxed (cycle): {normalized}" + ); + // Filter.kids → self-list, breaks cycle via Vec → no Box. + assert!( + normalized.contains("pubkids:Vec,"), + "Filter.kids should not be Boxed (Vec breaks self-cycle): {normalized}" + ); + + let pretty = emit(&inputs, &map).to_string(); + if let Err(e) = syn::parse_file(&pretty) { + panic!("emitted code must be valid Rust: {e}\n\n{pretty}"); + } + } } diff --git a/crates/lineark-codegen/src/emit_types.rs b/crates/lineark-codegen/src/emit_types.rs index 57d614b..89c8096 100644 --- a/crates/lineark-codegen/src/emit_types.rs +++ b/crates/lineark-codegen/src/emit_types.rs @@ -1,17 +1,20 @@ +use crate::dep_graph::{self, reaches}; use crate::emit_queries::{has_required_arguments, EXCLUDED_FIELDS}; use crate::emit_scalars::graphql_type_to_rust; use crate::parser::{self, GqlType, ObjectDef, TypeKind}; use heck::ToSnakeCase; use proc_macro2::TokenStream; use quote::quote; -use std::collections::HashMap; +use std::collections::{HashMap, HashSet}; pub fn emit(objects: &[ObjectDef], type_kind_map: &HashMap) -> TokenStream { + let reach = compute_object_reachability(objects, type_kind_map); + let items: Vec = objects .iter() .filter(|o| !o.name.is_empty()) .map(|o| { - let struct_tokens = emit_struct(o, type_kind_map); + let struct_tokens = emit_struct(o, type_kind_map, &reach); let trait_tokens = emit_graphql_fields_impl(o, type_kind_map); quote! { #struct_tokens #trait_tokens } }) @@ -30,7 +33,54 @@ pub fn emit(objects: &[ObjectDef], type_kind_map: &HashMap) -> } } -fn emit_struct(obj: &ObjectDef, type_kind_map: &HashMap) -> TokenStream { +/// Build the Object dependency graph (edges through direct, non-list field +/// references only) and compute transitive reachability. The result is used to +/// decide on a per-field basis whether `Box` is needed. +fn compute_object_reachability( + objects: &[ObjectDef], + type_kind_map: &HashMap, +) -> HashMap> { + let mut edges: HashMap> = HashMap::with_capacity(objects.len()); + for obj in objects { + if obj.name.is_empty() { + continue; + } + let mut deps = Vec::new(); + for field in &obj.fields { + if let Some(target) = direct_object_target(&field.ty, type_kind_map) { + deps.push(target.to_string()); + } + } + edges.insert(obj.name.clone(), deps); + } + dep_graph::reachability(&edges) +} + +/// If `ty` is a direct (non-list) reference to an Object type, return that +/// type's name. Lists return `None` because `Vec` already breaks size +/// cycles, so list-wrapped references aren't size-relevant edges. +fn direct_object_target<'a>( + ty: &'a GqlType, + type_kind_map: &HashMap, +) -> Option<&'a str> { + match ty { + GqlType::NonNull(inner) => direct_object_target(inner, type_kind_map), + GqlType::Named(name) => { + if matches!(type_kind_map.get(name.as_str()), Some(TypeKind::Object)) { + Some(name.as_str()) + } else { + None + } + } + GqlType::List(_) => None, + } +} + +fn emit_struct( + obj: &ObjectDef, + type_kind_map: &HashMap, + reach: &HashMap>, +) -> TokenStream { let name = quote::format_ident!("{}", obj.name); let doc = parser::doc_comment_tokens(&obj.description); @@ -48,7 +98,7 @@ fn emit_struct(obj: &ObjectDef, type_kind_map: &HashMap) -> To let ident = quote::format_ident!("{}", safe_name); quote! { #ident } }; - let rust_type = resolve_type(&f.ty, type_kind_map); + let rust_type = resolve_type(&f.ty, type_kind_map, &obj.name, reach); let fdoc = parser::doc_comment_tokens(&f.description); quote! { #fdoc @@ -83,21 +133,29 @@ fn is_includable_field(ty: &GqlType, type_kind_map: &HashMap) /// **Outermost** is always wrapped in `Option` regardless of the schema's /// required marker — this lets consumers define lean structs via /// `#[derive(GraphQLFields)]` that omit fields they don't select, with the -/// missing field deserializing as `None`. Object types additionally get -/// `Box` to keep mutually recursive types (e.g. `Integration` ↔ -/// `Organization`) sized. +/// missing field deserializing as `None`. +/// +/// **`Box`** is added only when actually required for sizedness: when the +/// field is a direct (non-list) reference to an Object that can transitively +/// reach `container` in the schema's reference graph. Non-cyclic Object +/// references emit as `Option` directly, saving a heap allocation per +/// instance. List-wrapped Object references never need `Box` because `Vec` +/// is already heap-allocated and sized. /// /// **Inside lists**, nullability is honored faithfully: nullable elements /// become `Option`, required elements stay bare `T`. GraphQL list slots /// are always materialized on the wire, so there's no "field omitted" /// concept inside a list — `Option` is the right shape. -/// -/// This produces correct Rust shapes for every list shape the spec allows -/// (`[T!]!`, `[T!]`, `[T]!`, `[T]`, and arbitrary nesting like `[[T!]!]!`). -fn resolve_type(ty: &GqlType, type_kind_map: &HashMap) -> TokenStream { +fn resolve_type( + ty: &GqlType, + type_kind_map: &HashMap, + container: &str, + reach: &HashMap>, +) -> TokenStream { let inner = resolve_required(ty, type_kind_map); - let base = ty.base_name(); - if matches!(type_kind_map.get(base), Some(TypeKind::Object)) { + let needs_box = direct_object_target(ty, type_kind_map) + .is_some_and(|target| reaches(target, container, reach)); + if needs_box { quote! { Option> } } else { quote! { Option<#inner> } @@ -226,7 +284,9 @@ mod tests { } #[test] - fn emit_includes_object_fields_with_box() { + fn emit_includes_object_fields_without_unnecessary_box() { + // Single Issue type with a Team field. Team has no schema definition + // here, so it cannot reach back to Issue → no cycle, no Box. let type_kind_map = make_type_kind_map(); let objects = vec![ObjectDef { name: "Issue".to_string(), @@ -248,9 +308,12 @@ mod tests { }]; let output = emit(&objects, &type_kind_map).to_string(); assert!(output.contains("pub id")); - // Object fields are included and wrapped in Box to prevent infinite-size types assert!(output.contains("pub team")); - assert!(output.contains("Box")); + // No cycle in the graph → no Box wrapping. + assert!( + !output.contains("Box"), + "no Box should be emitted when there is no size cycle: {output}" + ); } #[test] @@ -346,9 +409,13 @@ mod tests { assert!(output.contains("label_ids")); } + /// Render a single field's type for `output_field_shapes` — there is no + /// container to reach back to, so cycles are impossible and `Box` never + /// applies. This isolates the list/nullability rules from the Box rules. fn rendered_output(ty: GqlType) -> String { let map = make_type_kind_map(); - resolve_type(&ty, &map) + let reach: HashMap> = HashMap::new(); + resolve_type(&ty, &map, "Container", &reach) .to_string() .split_whitespace() .collect::() @@ -409,28 +476,103 @@ mod tests { ); } - /// `Box<>` is added at the outer level whenever the innermost named type - /// is an Object — that's the existing convention to keep mutually recursive - /// types sized. It applies even to list-of-Object fields (`Option>>`), - /// which is functionally fine (Vec is already heap-allocated) but adds an - /// unnecessary allocation. Captured here so any future change to the rule - /// is intentional. + /// Box is only emitted when the field would otherwise create an infinite-size + /// Rust struct: target must be a *direct* (non-list) Object reference whose + /// type can transitively reach the containing struct. Everything else gets a + /// plain `Option`. #[test] - fn output_object_outer_wrap_uses_box() { - let map = make_type_kind_map(); - let team = GqlType::Named("Team".to_string()); - let outer: String = resolve_type(&team, &map) - .to_string() - .split_whitespace() - .collect(); - assert_eq!(outer, "Option>"); + fn box_only_when_field_creates_size_cycle() { + // Schema: + // Container { team: Team } // direct ref + // Container { teams: [Team!]! } // list-wrapped — Vec breaks cycles + // Team { container: Container } // closes the cycle Container ↔ Team + // Loner { name: String } // unrelated, never referenced back + let mut map = make_type_kind_map(); + map.insert("Container".to_string(), TypeKind::Object); + map.insert("Loner".to_string(), TypeKind::Object); + + let objects = vec![ + ObjectDef { + name: "Container".to_string(), + description: None, + fields: vec![ + FieldDef { + name: "team".to_string(), + description: None, + ty: GqlType::Named("Team".to_string()), + arguments: vec![], + }, + FieldDef { + name: "teams".to_string(), + description: None, + ty: n(l(n(GqlType::Named("Team".to_string())))), + arguments: vec![], + }, + FieldDef { + name: "loner".to_string(), + description: None, + ty: GqlType::Named("Loner".to_string()), + arguments: vec![], + }, + ], + }, + ObjectDef { + name: "Team".to_string(), + description: None, + fields: vec![FieldDef { + name: "container".to_string(), + description: None, + ty: GqlType::Named("Container".to_string()), + arguments: vec![], + }], + }, + ObjectDef { + name: "Loner".to_string(), + description: None, + fields: vec![FieldDef { + name: "name".to_string(), + description: None, + ty: GqlType::Named("String".to_string()), + arguments: vec![], + }], + }, + ]; - let team_list = n(l(n(GqlType::Named("Team".to_string())))); - let listed: String = resolve_type(&team_list, &map) + let output: String = emit(&objects, &map) .to_string() .split_whitespace() .collect(); - assert_eq!(listed, "Option>>"); + + // Container.team is in a cycle (Container → Team → Container) → Box. + assert!( + output.contains("pubteam:Option>,"), + "Container.team should be Boxed (cycle): {output}" + ); + // Container.teams uses a Vec → Vec breaks the size cycle, no Box. + assert!( + output.contains("pubteams:Option>,"), + "Container.teams should not be Boxed (Vec breaks cycle): {output}" + ); + // Container.loner: Loner has no path back to Container → no Box. + assert!( + output.contains("publoner:Option,"), + "Container.loner should not be Boxed (no cycle): {output}" + ); + // Team.container closes the cycle from the other side → Box. + assert!( + output.contains("pubcontainer:Option>,"), + "Team.container should be Boxed (cycle): {output}" + ); + // Loner.name is a scalar → no Box. + assert!( + output.contains("pubname:Option,"), + "Loner.name should be plain Option: {output}" + ); + + let pretty = emit(&objects, &map).to_string(); + if let Err(e) = syn::parse_file(&pretty) { + panic!("emitted code must be valid Rust: {e}\n\n{pretty}"); + } } #[test] diff --git a/crates/lineark-codegen/src/main.rs b/crates/lineark-codegen/src/main.rs index 91d3567..dfcfae3 100644 --- a/crates/lineark-codegen/src/main.rs +++ b/crates/lineark-codegen/src/main.rs @@ -1,3 +1,4 @@ +mod dep_graph; mod emit_enums; mod emit_inputs; mod emit_mutations; diff --git a/crates/lineark-sdk/src/generated/inputs.rs b/crates/lineark-sdk/src/generated/inputs.rs index 2738478..543c540 100644 --- a/crates/lineark-sdk/src/generated/inputs.rs +++ b/crates/lineark-sdk/src/generated/inputs.rs @@ -10,22 +10,22 @@ use serde::{Deserialize, Serialize}; pub struct ActivityCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Filters that the activity's user must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub user: MaybeUndefined>, /// Compound filters, all of which need to be matched by the activity. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the activity. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some activities. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub some: MaybeUndefined>, @@ -34,7 +34,7 @@ pub struct ActivityCollectionFilter { pub every: MaybeUndefined>, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, } /// Activity filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -42,22 +42,22 @@ pub struct ActivityCollectionFilter { pub struct ActivityFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Filters that the activity's user must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub user: MaybeUndefined>, /// Compound filters, all of which need to be matched by the activity. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the activity. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -102,7 +102,7 @@ pub struct AgentActivityCreatePromptInput { #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub contextual_metadata: MaybeUndefined, /// The content payload of the prompt agent activity. - pub content: Box, + pub content: AgentActivityPromptCreateInputContent, /// The comment that contains the content of this activity. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub source_comment_id: MaybeUndefined, @@ -113,28 +113,28 @@ pub struct AgentActivityCreatePromptInput { pub struct AgentActivityFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the agent session ID. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub agent_session_id: MaybeUndefined>, + pub agent_session_id: MaybeUndefined, /// Comparator for the agent activity's content type. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub r#type: MaybeUndefined>, + pub r#type: MaybeUndefined, /// Filters that the source comment must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub source_comment: MaybeUndefined>, + pub source_comment: MaybeUndefined, /// Compound filters, all of which need to be matched by the agent activity. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the agent activity. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// `Internal` Input for creating prompt-type agent activities (created by users). #[derive(Debug, Clone, Serialize, Deserialize)] @@ -174,7 +174,7 @@ pub struct AgentSessionCreateOnComment { pub external_link: MaybeUndefined, /// URLs of external resources associated with this session. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub external_urls: MaybeUndefined>>, + pub external_urls: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -186,7 +186,7 @@ pub struct AgentSessionCreateOnIssue { pub external_link: MaybeUndefined, /// URLs of external resources associated with this session. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub external_urls: MaybeUndefined>>, + pub external_urls: MaybeUndefined>, } /// Input for an external URL associated with an agent session. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -205,10 +205,10 @@ pub struct AgentSessionUpdateExternalUrlInput { pub external_link: MaybeUndefined, /// URLs of external resources associated with this session. Replaces existing URLs. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub external_urls: MaybeUndefined>>, + pub external_urls: MaybeUndefined>, /// URLs of external resources to be added to this session. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub added_external_urls: MaybeUndefined>>, + pub added_external_urls: MaybeUndefined>, /// URLs to be removed from this session. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub removed_external_urls: MaybeUndefined>, @@ -221,10 +221,10 @@ pub struct AgentSessionUpdateInput { pub external_link: MaybeUndefined, /// URLs of external resources associated with this session. Replaces existing URLs. Only updatable by the OAuth application that owns the session. If supplied, addedExternalUrls and removedExternalUrls are ignored. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub external_urls: MaybeUndefined>>, + pub external_urls: MaybeUndefined>, /// URLs of external resources to be added to this session. Only updatable by the OAuth application that owns the session. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub added_external_urls: MaybeUndefined>>, + pub added_external_urls: MaybeUndefined>, /// URLs to be removed from this session. Only updatable by the OAuth application that owns the session. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub removed_external_urls: MaybeUndefined>, @@ -236,7 +236,7 @@ pub struct AgentSessionUpdateInput { pub dismissed_at: MaybeUndefined>, /// `Internal` User-specific state for the agent session. Only updatable by internal clients. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub user_state: MaybeUndefined>>, + pub user_state: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -368,34 +368,34 @@ pub struct AssigneeSort { pub struct AttachmentCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the title. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub title: MaybeUndefined>, + pub title: MaybeUndefined, /// Comparator for the subtitle. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub subtitle: MaybeUndefined>, + pub subtitle: MaybeUndefined, /// Comparator for the url. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub url: MaybeUndefined>, + pub url: MaybeUndefined, /// Filters that the attachments creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, /// Comparator for the source type. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub source_type: MaybeUndefined>, + pub source_type: MaybeUndefined, /// Compound filters, all of which need to be matched by the attachment. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the attachment. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some attachments. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub some: MaybeUndefined>, @@ -404,7 +404,7 @@ pub struct AttachmentCollectionFilter { pub every: MaybeUndefined>, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -446,34 +446,34 @@ pub struct AttachmentCreateInput { pub struct AttachmentFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the title. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub title: MaybeUndefined>, + pub title: MaybeUndefined, /// Comparator for the subtitle. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub subtitle: MaybeUndefined>, + pub subtitle: MaybeUndefined, /// Comparator for the url. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub url: MaybeUndefined>, + pub url: MaybeUndefined, /// Filters that the attachments creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, /// Comparator for the source type. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub source_type: MaybeUndefined>, + pub source_type: MaybeUndefined, /// Compound filters, all of which need to be matched by the attachment. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the attachment. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -496,31 +496,31 @@ pub struct AttachmentUpdateInput { pub struct AuditEntryFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the type. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub r#type: MaybeUndefined>, + pub r#type: MaybeUndefined, /// Comparator for the IP address. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub ip: MaybeUndefined>, + pub ip: MaybeUndefined, /// Comparator for the country code. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub country_code: MaybeUndefined>, + pub country_code: MaybeUndefined, /// Filters that the audit entry actor must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub actor: MaybeUndefined>, + pub actor: MaybeUndefined, /// Compound filters, all of which need to be matched by the issue. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the issue. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Comparator for booleans. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -547,16 +547,16 @@ pub struct CandidateRepository { pub struct CommentCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the comment's body. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub body: MaybeUndefined>, + pub body: MaybeUndefined, /// Filters that the comment's creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub user: MaybeUndefined>, @@ -574,16 +574,16 @@ pub struct CommentCollectionFilter { pub document_content: MaybeUndefined>, /// Filters that the comment's reactions must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub reactions: MaybeUndefined>, + pub reactions: MaybeUndefined, /// Filters that the comment's customer needs must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub needs: MaybeUndefined>, /// Compound filters, all of which need to be matched by the comment. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the comment. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some comments. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub some: MaybeUndefined>, @@ -592,7 +592,7 @@ pub struct CommentCollectionFilter { pub every: MaybeUndefined>, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -652,16 +652,16 @@ pub struct CommentCreateInput { pub struct CommentFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the comment's body. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub body: MaybeUndefined>, + pub body: MaybeUndefined, /// Filters that the comment's creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub user: MaybeUndefined>, @@ -679,16 +679,16 @@ pub struct CommentFilter { pub document_content: MaybeUndefined>, /// Filters that the comment's reactions must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub reactions: MaybeUndefined>, + pub reactions: MaybeUndefined, /// Filters that the comment's customer needs must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub needs: MaybeUndefined>, /// Compound filters, all of which need to be matched by the comment. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the comment. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -843,16 +843,16 @@ pub struct CustomViewCreateInput { pub owner_id: MaybeUndefined, /// The filter applied to issues in the custom view. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub filter_data: MaybeUndefined>, + pub filter_data: MaybeUndefined, /// The project filter applied to issues in the custom view. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub project_filter_data: MaybeUndefined>, + pub project_filter_data: MaybeUndefined, /// `ALPHA` The initiative filter applied to issues in the custom view. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub initiative_filter_data: MaybeUndefined>, + pub initiative_filter_data: MaybeUndefined, /// The feed item filter applied to issues in the custom view. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub feed_item_filter_data: MaybeUndefined>, + pub feed_item_filter_data: MaybeUndefined, /// Whether the custom view is shared with everyone in the organization. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub shared: MaybeUndefined, @@ -874,37 +874,37 @@ pub struct CustomViewCreatedAtSort { pub struct CustomViewFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the custom view name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the custom view model name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub model_name: MaybeUndefined>, + pub model_name: MaybeUndefined, /// Filters that the custom view's team must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub team: MaybeUndefined>, + pub team: MaybeUndefined, /// Filters that the custom view creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub creator: MaybeUndefined>, + pub creator: MaybeUndefined, /// Comparator for whether the custom view is shared. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub shared: MaybeUndefined>, + pub shared: MaybeUndefined, /// `INTERNAL` Filter based on whether the custom view has a facet. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub has_facet: MaybeUndefined, /// Compound filters, all of which need to be matched by the custom view. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the custom view. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Custom view name sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -933,16 +933,16 @@ pub struct CustomViewSharedSort { pub struct CustomViewSortInput { /// Sort by custom view name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Sort by custom view creation date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Sort by custom view shared status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub shared: MaybeUndefined>, + pub shared: MaybeUndefined, /// Sort by custom view update date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -973,16 +973,16 @@ pub struct CustomViewUpdateInput { pub owner_id: MaybeUndefined, /// The filter applied to issues in the custom view. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub filter_data: MaybeUndefined>, + pub filter_data: MaybeUndefined, /// The project filter applied to issues in the custom view. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub project_filter_data: MaybeUndefined>, + pub project_filter_data: MaybeUndefined, /// `ALPHA` The initiative filter applied to issues in the custom view. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub initiative_filter_data: MaybeUndefined>, + pub initiative_filter_data: MaybeUndefined, /// The feed item filter applied to issues in the custom view. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub feed_item_filter_data: MaybeUndefined>, + pub feed_item_filter_data: MaybeUndefined, /// Whether the custom view is shared with everyone in the organization. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub shared: MaybeUndefined, @@ -1065,49 +1065,49 @@ pub struct CustomerCreatedAtSort { pub struct CustomerFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the customer name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the customer slack channel ID. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slack_channel_id: MaybeUndefined>, + pub slack_channel_id: MaybeUndefined, /// Comparator for the customer's domains. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub domains: MaybeUndefined>, + pub domains: MaybeUndefined, /// Comparator for the customer's external IDs. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub external_ids: MaybeUndefined>, + pub external_ids: MaybeUndefined, /// Filters that the customer owner must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub owner: MaybeUndefined>, + pub owner: MaybeUndefined, /// Filters that the customer's needs must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub needs: MaybeUndefined>, + pub needs: MaybeUndefined, /// Comparator for the customer generated revenue. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub revenue: MaybeUndefined>, + pub revenue: MaybeUndefined, /// Comparator for the customer size. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub size: MaybeUndefined>, + pub size: MaybeUndefined, /// Filters that the customer's status must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub status: MaybeUndefined>, + pub status: MaybeUndefined, /// Filters that the customer's tier must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub tier: MaybeUndefined>, + pub tier: MaybeUndefined, /// Compound filters, all of which need to be matched by the customer. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the customer. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Issue customer important count sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -1126,16 +1126,16 @@ pub struct CustomerImportantCountSort { pub struct CustomerNeedCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the customer need priority. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub priority: MaybeUndefined>, + pub priority: MaybeUndefined, /// Filters that the need's project must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub project: MaybeUndefined>, @@ -1150,10 +1150,10 @@ pub struct CustomerNeedCollectionFilter { pub customer: MaybeUndefined>, /// Compound filters, all of which need to be matched by the customer needs. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the customer needs. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some customer needs. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub some: MaybeUndefined>, @@ -1162,7 +1162,7 @@ pub struct CustomerNeedCollectionFilter { pub every: MaybeUndefined>, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -1219,16 +1219,16 @@ pub struct CustomerNeedCreateInput { pub struct CustomerNeedFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the customer need priority. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub priority: MaybeUndefined>, + pub priority: MaybeUndefined, /// Filters that the need's project must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub project: MaybeUndefined>, @@ -1243,10 +1243,10 @@ pub struct CustomerNeedFilter { pub customer: MaybeUndefined>, /// Compound filters, all of which need to be matched by the customer need. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the customer need. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -1310,28 +1310,28 @@ pub struct CustomerSort { pub struct CustomerSortInput { /// Sort by name #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Sort by customer creation date #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Sort by owner name #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub owner: MaybeUndefined>, + pub owner: MaybeUndefined, /// Sort by customer status #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub status: MaybeUndefined>, + pub status: MaybeUndefined, /// Sort by customer generated revenue #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub revenue: MaybeUndefined>, + pub revenue: MaybeUndefined, /// Sort by customer size #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub size: MaybeUndefined>, + pub size: MaybeUndefined, /// Sort by customer tier #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub tier: MaybeUndefined>, + pub tier: MaybeUndefined, /// Sort by approximate customer need count #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub approximate_need_count: MaybeUndefined>, + pub approximate_need_count: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -1360,34 +1360,34 @@ pub struct CustomerStatusCreateInput { pub struct CustomerStatusFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the customer status name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the customer status description. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub description: MaybeUndefined>, + pub description: MaybeUndefined, /// Comparator for the customer status position. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub position: MaybeUndefined>, + pub position: MaybeUndefined, /// Comparator for the customer status type. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub r#type: MaybeUndefined>, + pub r#type: MaybeUndefined, /// Comparator for the customer status color. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub color: MaybeUndefined>, + pub color: MaybeUndefined, /// Compound filters, all of which need to be matched by the customer status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which needs to be matched by the customer status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Customer status sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -1446,31 +1446,31 @@ pub struct CustomerTierCreateInput { pub struct CustomerTierFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the customer tier display name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub display_name: MaybeUndefined>, + pub display_name: MaybeUndefined, /// Comparator for the customer tier description. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub description: MaybeUndefined>, + pub description: MaybeUndefined, /// Comparator for the customer tier position. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub position: MaybeUndefined>, + pub position: MaybeUndefined, /// Comparator for the customer tier color. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub color: MaybeUndefined>, + pub color: MaybeUndefined, /// Compound filters, all of which need to be matched by the customer tier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which needs to be matched by the customer tier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -1596,61 +1596,61 @@ pub struct CycleCreateInput { pub struct CycleFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the cycle number. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub number: MaybeUndefined>, + pub number: MaybeUndefined, /// Comparator for the cycle name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the cycle start date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub starts_at: MaybeUndefined>, + pub starts_at: MaybeUndefined, /// Comparator for the cycle ends at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub ends_at: MaybeUndefined>, + pub ends_at: MaybeUndefined, /// Comparator for the cycle completed at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub completed_at: MaybeUndefined>, + pub completed_at: MaybeUndefined, /// Comparator for the filtering active cycle. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_active: MaybeUndefined>, + pub is_active: MaybeUndefined, /// Comparator for filtering for whether the cycle is currently in cooldown. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_in_cooldown: MaybeUndefined>, + pub is_in_cooldown: MaybeUndefined, /// Comparator for the filtering next cycle. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_next: MaybeUndefined>, + pub is_next: MaybeUndefined, /// Comparator for the filtering previous cycle. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_previous: MaybeUndefined>, + pub is_previous: MaybeUndefined, /// Comparator for the filtering future cycles. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_future: MaybeUndefined>, + pub is_future: MaybeUndefined, /// Comparator for the filtering past cycles. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_past: MaybeUndefined>, + pub is_past: MaybeUndefined, /// Filters that the cycles team must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub team: MaybeUndefined>, + pub team: MaybeUndefined, /// Filters that the cycles issues must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub issues: MaybeUndefined>, + pub issues: MaybeUndefined, /// Comparator for the inherited cycle ID. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub inherited_from_id: MaybeUndefined>, + pub inherited_from_id: MaybeUndefined, /// Compound filters, all of which need to be matched by the cycle. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the cycle. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Comparator for period when issue was added to a cycle. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -1766,13 +1766,13 @@ pub struct DeleteOrganizationInput { pub struct DocumentContentHistoryFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -1828,19 +1828,19 @@ pub struct DocumentCreateInput { pub struct DocumentFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the document title. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub title: MaybeUndefined>, + pub title: MaybeUndefined, /// Comparator for the document slug ID. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slug_id: MaybeUndefined>, + pub slug_id: MaybeUndefined, /// Filters that the document's creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, @@ -1855,10 +1855,10 @@ pub struct DocumentFilter { pub initiative: MaybeUndefined>, /// Compound filters, all of which need to be matched by the document. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the document. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -2141,10 +2141,10 @@ pub struct EstimateComparator { pub gte: MaybeUndefined, /// Compound filters, all of which need to be matched by the estimate. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Compound filters, one of which need to be matched by the estimate. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, } /// Issue estimate sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -2249,37 +2249,37 @@ pub struct FavoriteUpdateInput { pub struct FeedItemFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Filters that the feed item author must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub author: MaybeUndefined>, + pub author: MaybeUndefined, /// Comparator for the update type: initiative, project, team #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub update_type: MaybeUndefined>, + pub update_type: MaybeUndefined, /// Comparator for the project or initiative update health: onTrack, atRisk, offTrack #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub update_health: MaybeUndefined>, + pub update_health: MaybeUndefined, /// Filters that the feed item's project update must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub project_update: MaybeUndefined>, + pub project_update: MaybeUndefined, /// Filters that the related feed item initiatives must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub related_initiatives: MaybeUndefined>, + pub related_initiatives: MaybeUndefined, /// Filters that the related feed item team must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub related_teams: MaybeUndefined>, + pub related_teams: MaybeUndefined, /// Compound filters, all of which need to be matched by the feed item. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the feed item. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -2374,7 +2374,7 @@ pub struct GitHubImportSettingsInput { /// The avatar URL for the GitHub organization. pub org_avatar_url: String, /// The names of the repositories connected for the GitHub integration. - pub repositories: Vec>, + pub repositories: Vec, /// A map storing all available issue labels per repository #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub labels: MaybeUndefined, @@ -2429,10 +2429,10 @@ pub struct GitHubSettingsInput { pub org_login: String, /// The names of the repositories connected for the GitHub integration. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub repositories: MaybeUndefined>>, + pub repositories: MaybeUndefined>, /// Mapping of team to repository for syncing. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub repositories_mapping: MaybeUndefined>>, + pub repositories_mapping: MaybeUndefined>, /// The type of Github org #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub org_type: MaybeUndefined, @@ -2465,7 +2465,7 @@ pub struct GongRecordingImportConfigInput { pub struct GongSettingsInput { /// Configuration for recording import. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub import_config: MaybeUndefined>, + pub import_config: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -2503,13 +2503,13 @@ pub struct GoogleSheetsSettingsInput { pub updated_issues_at: MaybeUndefined>, /// The export settings for issues. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub issue: MaybeUndefined>, + pub issue: MaybeUndefined, /// The export settings for projects. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub project: MaybeUndefined>, + pub project: MaybeUndefined, /// The export settings for initiatives. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub initiative: MaybeUndefined>, + pub initiative: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -2560,25 +2560,25 @@ pub struct InheritanceEntityMapping { pub struct InitiativeCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the initiative name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the initiative slug ID. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slug_id: MaybeUndefined>, + pub slug_id: MaybeUndefined, /// Filters that the initiative creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, /// Comparator for the initiative status: Planned, Active, Completed #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub status: MaybeUndefined>, + pub status: MaybeUndefined, /// Filters that the initiative teams must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub teams: MaybeUndefined>, @@ -2587,25 +2587,25 @@ pub struct InitiativeCollectionFilter { pub owner: MaybeUndefined>, /// Comparator for the initiative target date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub target_date: MaybeUndefined>, + pub target_date: MaybeUndefined, /// Comparator for the initiative health: onTrack, atRisk, offTrack #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub health: MaybeUndefined>, + pub health: MaybeUndefined, /// Comparator for the initiative health (with age): onTrack, atRisk, offTrack, outdated, noUpdate #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub health_with_age: MaybeUndefined>, + pub health_with_age: MaybeUndefined, /// Comparator for the initiative activity type. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub activity_type: MaybeUndefined>, + pub activity_type: MaybeUndefined, /// Filters that the initiative must be an ancestor of. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub ancestors: MaybeUndefined>, /// Compound filters, all of which need to be matched by the initiative. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the initiative. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some initiatives. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub some: MaybeUndefined>, @@ -2614,7 +2614,7 @@ pub struct InitiativeCollectionFilter { pub every: MaybeUndefined>, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, } /// The properties of the initiative to create. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -2670,25 +2670,25 @@ pub struct InitiativeCreatedAtSort { pub struct InitiativeFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the initiative name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the initiative slug ID. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slug_id: MaybeUndefined>, + pub slug_id: MaybeUndefined, /// Filters that the initiative creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, /// Comparator for the initiative status: Planned, Active, Completed #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub status: MaybeUndefined>, + pub status: MaybeUndefined, /// Filters that the initiative teams must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub teams: MaybeUndefined>, @@ -2697,25 +2697,25 @@ pub struct InitiativeFilter { pub owner: MaybeUndefined>, /// Comparator for the initiative target date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub target_date: MaybeUndefined>, + pub target_date: MaybeUndefined, /// Comparator for the initiative health: onTrack, atRisk, offTrack #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub health: MaybeUndefined>, + pub health: MaybeUndefined, /// Comparator for the initiative health (with age): onTrack, atRisk, offTrack, outdated, noUpdate #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub health_with_age: MaybeUndefined>, + pub health_with_age: MaybeUndefined, /// Comparator for the initiative activity type. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub activity_type: MaybeUndefined>, + pub activity_type: MaybeUndefined, /// Filters that the initiative must be an ancestor of. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub ancestors: MaybeUndefined>, /// Compound filters, all of which need to be matched by the initiative. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the initiative. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Initiative health sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -2800,28 +2800,28 @@ pub struct InitiativeRelationUpdateInput { pub struct InitiativeSortInput { /// Sort by initiative name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Sort by manual order. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub manual: MaybeUndefined>, + pub manual: MaybeUndefined, /// Sort by initiative update date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Sort by initiative creation date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Sort by initiative target date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub target_date: MaybeUndefined>, + pub target_date: MaybeUndefined, /// Sort by initiative health status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub health: MaybeUndefined>, + pub health: MaybeUndefined, /// Sort by initiative health update date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub health_updated_at: MaybeUndefined>, + pub health_updated_at: MaybeUndefined, /// Sort by initiative owner name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub owner: MaybeUndefined>, + pub owner: MaybeUndefined, } /// Initiative target date sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -2884,28 +2884,28 @@ pub struct InitiativeUpdateCreateInput { pub struct InitiativeUpdateFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Filters that the initiative update creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub user: MaybeUndefined>, + pub user: MaybeUndefined, /// Filters that the initiative update initiative must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub initiative: MaybeUndefined>, + pub initiative: MaybeUndefined, /// Filters that the initiative updates reactions must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub reactions: MaybeUndefined>, + pub reactions: MaybeUndefined, /// Compound filters, all of which need to be matched by the InitiativeUpdate. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the InitiativeUpdate. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// The properties of the initiative to update. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -3006,57 +3006,57 @@ pub struct IntegrationRequestInput { #[serde(rename_all = "camelCase")] pub struct IntegrationSettingsInput { #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slack: MaybeUndefined>, + pub slack: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slack_asks: MaybeUndefined>, + pub slack_asks: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slack_post: MaybeUndefined>, + pub slack_post: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slack_project_post: MaybeUndefined>, + pub slack_project_post: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slack_initiative_post: MaybeUndefined>, + pub slack_initiative_post: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slack_custom_view_notifications: MaybeUndefined>, + pub slack_custom_view_notifications: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slack_org_project_updates_post: MaybeUndefined>, + pub slack_org_project_updates_post: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slack_org_initiative_updates_post: MaybeUndefined>, + pub slack_org_initiative_updates_post: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub google_sheets: MaybeUndefined>, + pub google_sheets: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub git_hub: MaybeUndefined>, + pub git_hub: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub git_hub_import: MaybeUndefined>, + pub git_hub_import: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub git_hub_personal: MaybeUndefined>, + pub git_hub_personal: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub git_lab: MaybeUndefined>, + pub git_lab: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub sentry: MaybeUndefined>, + pub sentry: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub zendesk: MaybeUndefined>, + pub zendesk: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub intercom: MaybeUndefined>, + pub intercom: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub front: MaybeUndefined>, + pub front: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub gong: MaybeUndefined>, + pub gong: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub microsoft_teams: MaybeUndefined>, + pub microsoft_teams: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub jira: MaybeUndefined>, + pub jira: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub notion: MaybeUndefined>, + pub notion: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub opsgenie: MaybeUndefined>, + pub opsgenie: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub pager_duty: MaybeUndefined>, + pub pager_duty: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub launch_darkly: MaybeUndefined>, + pub launch_darkly: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub jira_personal: MaybeUndefined>, + pub jira_personal: MaybeUndefined, #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub salesforce: MaybeUndefined>, + pub salesforce: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -3077,7 +3077,7 @@ pub struct IntegrationTemplateCreateInput { pub struct IntegrationUpdateInput { /// The settings to update. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub settings: MaybeUndefined>, + pub settings: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -3212,7 +3212,7 @@ pub struct IntercomSettingsInput { #[serde(rename_all = "camelCase")] pub struct IssueBatchCreateInput { /// The issues to create. - pub issues: Vec>, + pub issues: Vec, } /// Issue filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -3220,64 +3220,64 @@ pub struct IssueBatchCreateInput { pub struct IssueCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the issues number. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub number: MaybeUndefined>, + pub number: MaybeUndefined, /// Comparator for the issues title. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub title: MaybeUndefined>, + pub title: MaybeUndefined, /// Comparator for the issues description. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub description: MaybeUndefined>, + pub description: MaybeUndefined, /// Comparator for the issues priority. 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub priority: MaybeUndefined>, + pub priority: MaybeUndefined, /// Comparator for the issues estimate. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub estimate: MaybeUndefined>, + pub estimate: MaybeUndefined, /// Comparator for the issues started at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub started_at: MaybeUndefined>, + pub started_at: MaybeUndefined, /// Comparator for the issues triaged at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub triaged_at: MaybeUndefined>, + pub triaged_at: MaybeUndefined, /// Comparator for the issues completed at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub completed_at: MaybeUndefined>, + pub completed_at: MaybeUndefined, /// Comparator for the issues canceled at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub canceled_at: MaybeUndefined>, + pub canceled_at: MaybeUndefined, /// Comparator for the issues archived at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub archived_at: MaybeUndefined>, + pub archived_at: MaybeUndefined, /// Comparator for the issues auto closed at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub auto_closed_at: MaybeUndefined>, + pub auto_closed_at: MaybeUndefined, /// Comparator for the issues auto archived at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub auto_archived_at: MaybeUndefined>, + pub auto_archived_at: MaybeUndefined, /// Comparator for the issues added to cycle at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub added_to_cycle_at: MaybeUndefined>, + pub added_to_cycle_at: MaybeUndefined, /// Comparator for the period when issue was added to a cycle. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub added_to_cycle_period: MaybeUndefined>, + pub added_to_cycle_period: MaybeUndefined, /// Comparator for the issues due date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub due_date: MaybeUndefined>, + pub due_date: MaybeUndefined, /// `Internal` Comparator for the issue's accumulatedStateUpdatedAt date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub accumulated_state_updated_at: MaybeUndefined>, + pub accumulated_state_updated_at: MaybeUndefined, /// Comparator for the issues snoozed until date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub snoozed_until_at: MaybeUndefined>, + pub snoozed_until_at: MaybeUndefined, /// Filters that the issues assignee must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub assignee: MaybeUndefined>, @@ -3286,13 +3286,13 @@ pub struct IssueCollectionFilter { pub delegate: MaybeUndefined>, /// Filters that the last applied template must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub last_applied_template: MaybeUndefined>, + pub last_applied_template: MaybeUndefined, /// `ALPHA` Filters that the recurring issue template must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub recurring_issue_template: MaybeUndefined>, + pub recurring_issue_template: MaybeUndefined, /// Filters that the source must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub source_metadata: MaybeUndefined>, + pub source_metadata: MaybeUndefined, /// Filters that the issues creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, @@ -3310,7 +3310,7 @@ pub struct IssueCollectionFilter { pub subscribers: MaybeUndefined>, /// Comparator for filtering issues which have been shared with users outside of the team. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_shared_users: MaybeUndefined>, + pub has_shared_users: MaybeUndefined, /// Filters that users the issue has been shared with must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub shared_with: MaybeUndefined>, @@ -3346,73 +3346,73 @@ pub struct IssueCollectionFilter { pub attachments: MaybeUndefined>, /// `Internal` Comparator for the issues content. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub searchable_content: MaybeUndefined>, + pub searchable_content: MaybeUndefined, /// Comparator for filtering issues with relations. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_related_relations: MaybeUndefined>, + pub has_related_relations: MaybeUndefined, /// Comparator for filtering issues which are duplicates. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_duplicate_relations: MaybeUndefined>, + pub has_duplicate_relations: MaybeUndefined, /// Comparator for filtering issues which are blocked. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_blocked_by_relations: MaybeUndefined>, + pub has_blocked_by_relations: MaybeUndefined, /// Comparator for filtering issues which are blocking. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_blocking_relations: MaybeUndefined>, + pub has_blocking_relations: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested related issues. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_related_issues: MaybeUndefined>, + pub has_suggested_related_issues: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested similar issues. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_similar_issues: MaybeUndefined>, + pub has_suggested_similar_issues: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested assignees. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_assignees: MaybeUndefined>, + pub has_suggested_assignees: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested projects. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_projects: MaybeUndefined>, + pub has_suggested_projects: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested labels. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_labels: MaybeUndefined>, + pub has_suggested_labels: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested teams. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_teams: MaybeUndefined>, + pub has_suggested_teams: MaybeUndefined, /// Comparator for the issues sla status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub sla_status: MaybeUndefined>, + pub sla_status: MaybeUndefined, /// Filters that the issues reactions must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub reactions: MaybeUndefined>, + pub reactions: MaybeUndefined, /// Filters that the issue's customer needs must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub needs: MaybeUndefined>, /// `ALPHA` Filters that the issue's releases must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub releases: MaybeUndefined>, + pub releases: MaybeUndefined, /// Count of customers #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customer_count: MaybeUndefined>, + pub customer_count: MaybeUndefined, /// Count of important customers #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customer_important_count: MaybeUndefined>, + pub customer_important_count: MaybeUndefined, /// `Internal` Lead time (created -> completed) comparator. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub lead_time: MaybeUndefined>, + pub lead_time: MaybeUndefined, /// `Internal` Cycle time (started -> completed) comparator. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub cycle_time: MaybeUndefined>, + pub cycle_time: MaybeUndefined, /// `Internal` Age (created -> now) comparator, defined if the issue is still open. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub age_time: MaybeUndefined>, + pub age_time: MaybeUndefined, /// `Internal` Triage time (entered triaged -> triaged) comparator. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub triage_time: MaybeUndefined>, + pub triage_time: MaybeUndefined, /// Compound filters, all of which need to be matched by the issue. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the issue. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some issues. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub some: MaybeUndefined>, @@ -3421,7 +3421,7 @@ pub struct IssueCollectionFilter { pub every: MaybeUndefined>, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -3534,64 +3534,64 @@ pub struct IssueCreateInput { pub struct IssueFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the issues number. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub number: MaybeUndefined>, + pub number: MaybeUndefined, /// Comparator for the issues title. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub title: MaybeUndefined>, + pub title: MaybeUndefined, /// Comparator for the issues description. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub description: MaybeUndefined>, + pub description: MaybeUndefined, /// Comparator for the issues priority. 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub priority: MaybeUndefined>, + pub priority: MaybeUndefined, /// Comparator for the issues estimate. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub estimate: MaybeUndefined>, + pub estimate: MaybeUndefined, /// Comparator for the issues started at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub started_at: MaybeUndefined>, + pub started_at: MaybeUndefined, /// Comparator for the issues triaged at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub triaged_at: MaybeUndefined>, + pub triaged_at: MaybeUndefined, /// Comparator for the issues completed at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub completed_at: MaybeUndefined>, + pub completed_at: MaybeUndefined, /// Comparator for the issues canceled at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub canceled_at: MaybeUndefined>, + pub canceled_at: MaybeUndefined, /// Comparator for the issues archived at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub archived_at: MaybeUndefined>, + pub archived_at: MaybeUndefined, /// Comparator for the issues auto closed at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub auto_closed_at: MaybeUndefined>, + pub auto_closed_at: MaybeUndefined, /// Comparator for the issues auto archived at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub auto_archived_at: MaybeUndefined>, + pub auto_archived_at: MaybeUndefined, /// Comparator for the issues added to cycle at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub added_to_cycle_at: MaybeUndefined>, + pub added_to_cycle_at: MaybeUndefined, /// Comparator for the period when issue was added to a cycle. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub added_to_cycle_period: MaybeUndefined>, + pub added_to_cycle_period: MaybeUndefined, /// Comparator for the issues due date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub due_date: MaybeUndefined>, + pub due_date: MaybeUndefined, /// `Internal` Comparator for the issue's accumulatedStateUpdatedAt date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub accumulated_state_updated_at: MaybeUndefined>, + pub accumulated_state_updated_at: MaybeUndefined, /// Comparator for the issues snoozed until date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub snoozed_until_at: MaybeUndefined>, + pub snoozed_until_at: MaybeUndefined, /// Filters that the issues assignee must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub assignee: MaybeUndefined>, @@ -3600,13 +3600,13 @@ pub struct IssueFilter { pub delegate: MaybeUndefined>, /// Filters that the last applied template must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub last_applied_template: MaybeUndefined>, + pub last_applied_template: MaybeUndefined, /// `ALPHA` Filters that the recurring issue template must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub recurring_issue_template: MaybeUndefined>, + pub recurring_issue_template: MaybeUndefined, /// Filters that the source must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub source_metadata: MaybeUndefined>, + pub source_metadata: MaybeUndefined, /// Filters that the issues creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, @@ -3624,7 +3624,7 @@ pub struct IssueFilter { pub subscribers: MaybeUndefined>, /// Comparator for filtering issues which have been shared with users outside of the team. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_shared_users: MaybeUndefined>, + pub has_shared_users: MaybeUndefined, /// Filters that users the issue has been shared with must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub shared_with: MaybeUndefined>, @@ -3660,73 +3660,73 @@ pub struct IssueFilter { pub attachments: MaybeUndefined>, /// `Internal` Comparator for the issues content. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub searchable_content: MaybeUndefined>, + pub searchable_content: MaybeUndefined, /// Comparator for filtering issues with relations. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_related_relations: MaybeUndefined>, + pub has_related_relations: MaybeUndefined, /// Comparator for filtering issues which are duplicates. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_duplicate_relations: MaybeUndefined>, + pub has_duplicate_relations: MaybeUndefined, /// Comparator for filtering issues which are blocked. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_blocked_by_relations: MaybeUndefined>, + pub has_blocked_by_relations: MaybeUndefined, /// Comparator for filtering issues which are blocking. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_blocking_relations: MaybeUndefined>, + pub has_blocking_relations: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested related issues. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_related_issues: MaybeUndefined>, + pub has_suggested_related_issues: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested similar issues. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_similar_issues: MaybeUndefined>, + pub has_suggested_similar_issues: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested assignees. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_assignees: MaybeUndefined>, + pub has_suggested_assignees: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested projects. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_projects: MaybeUndefined>, + pub has_suggested_projects: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested labels. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_labels: MaybeUndefined>, + pub has_suggested_labels: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested teams. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_teams: MaybeUndefined>, + pub has_suggested_teams: MaybeUndefined, /// Comparator for the issues sla status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub sla_status: MaybeUndefined>, + pub sla_status: MaybeUndefined, /// Filters that the issues reactions must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub reactions: MaybeUndefined>, + pub reactions: MaybeUndefined, /// Filters that the issue's customer needs must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub needs: MaybeUndefined>, /// `ALPHA` Filters that the issue's releases must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub releases: MaybeUndefined>, + pub releases: MaybeUndefined, /// Count of customers #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customer_count: MaybeUndefined>, + pub customer_count: MaybeUndefined, /// Count of important customers #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customer_important_count: MaybeUndefined>, + pub customer_important_count: MaybeUndefined, /// `Internal` Lead time (created -> completed) comparator. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub lead_time: MaybeUndefined>, + pub lead_time: MaybeUndefined, /// `Internal` Cycle time (started -> completed) comparator. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub cycle_time: MaybeUndefined>, + pub cycle_time: MaybeUndefined, /// `Internal` Age (created -> now) comparator, defined if the issue is still open. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub age_time: MaybeUndefined>, + pub age_time: MaybeUndefined, /// `Internal` Triage time (entered triaged -> triaged) comparator. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub triage_time: MaybeUndefined>, + pub triage_time: MaybeUndefined, /// Compound filters, all of which need to be matched by the issue. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the issue. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Comparator for issue identifiers. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -3757,19 +3757,19 @@ pub struct IssueImportUpdateInput { pub struct IssueLabelCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for whether the label is a group label. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_group: MaybeUndefined>, + pub is_group: MaybeUndefined, /// Filters that the issue labels creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, @@ -3784,10 +3784,10 @@ pub struct IssueLabelCollectionFilter { pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the label. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the label. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some issue labels. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub some: MaybeUndefined>, @@ -3796,7 +3796,7 @@ pub struct IssueLabelCollectionFilter { pub every: MaybeUndefined>, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -3831,19 +3831,19 @@ pub struct IssueLabelCreateInput { pub struct IssueLabelFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for whether the label is a group label. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_group: MaybeUndefined>, + pub is_group: MaybeUndefined, /// Filters that the issue labels creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, @@ -3855,10 +3855,10 @@ pub struct IssueLabelFilter { pub parent: MaybeUndefined>, /// Compound filters, all of which need to be matched by the label. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the label. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -3923,79 +3923,79 @@ pub struct IssueRelationUpdateInput { pub struct IssueSortInput { /// Sort by priority #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub priority: MaybeUndefined>, + pub priority: MaybeUndefined, /// Sort by estimate #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub estimate: MaybeUndefined>, + pub estimate: MaybeUndefined, /// Sort by issue title #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub title: MaybeUndefined>, + pub title: MaybeUndefined, /// Sort by label #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub label: MaybeUndefined>, + pub label: MaybeUndefined, /// Sort by label group #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub label_group: MaybeUndefined>, + pub label_group: MaybeUndefined, /// Sort by SLA status #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub sla_status: MaybeUndefined>, + pub sla_status: MaybeUndefined, /// Sort by issue creation date #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Sort by issue update date #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Sort by issue completion date #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub completed_at: MaybeUndefined>, + pub completed_at: MaybeUndefined, /// Sort by issue due date #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub due_date: MaybeUndefined>, + pub due_date: MaybeUndefined, /// `Internal` Sort by the accumulated time in the current workflow state #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub accumulated_state_updated_at: MaybeUndefined>, + pub accumulated_state_updated_at: MaybeUndefined, /// Sort by Cycle start date #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub cycle: MaybeUndefined>, + pub cycle: MaybeUndefined, /// Sort by Project Milestone target date #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub milestone: MaybeUndefined>, + pub milestone: MaybeUndefined, /// Sort by assignee name #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub assignee: MaybeUndefined>, + pub assignee: MaybeUndefined, /// Sort by delegate name #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub delegate: MaybeUndefined>, + pub delegate: MaybeUndefined, /// Sort by Project name #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub project: MaybeUndefined>, + pub project: MaybeUndefined, /// Sort by Team name #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub team: MaybeUndefined>, + pub team: MaybeUndefined, /// Sort by manual order #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub manual: MaybeUndefined>, + pub manual: MaybeUndefined, /// Sort by workflow state type #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub workflow_state: MaybeUndefined>, + pub workflow_state: MaybeUndefined, /// Sort by customer name #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customer: MaybeUndefined>, + pub customer: MaybeUndefined, /// Sort by customer revenue #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customer_revenue: MaybeUndefined>, + pub customer_revenue: MaybeUndefined, /// Sort by number of customers associated with the issue #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customer_count: MaybeUndefined>, + pub customer_count: MaybeUndefined, /// Sort by number of important customers associated with the issue #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customer_important_count: MaybeUndefined>, + pub customer_important_count: MaybeUndefined, /// Sort by the root issue #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub root_issue: MaybeUndefined>, /// `ALPHA` Sort by number of links associated with the issue #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub link_count: MaybeUndefined>, + pub link_count: MaybeUndefined, } /// IssueSuggestion collection filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -4003,19 +4003,19 @@ pub struct IssueSortInput { pub struct IssueSuggestionCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the suggestion type. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub r#type: MaybeUndefined>, + pub r#type: MaybeUndefined, /// Comparator for the suggestion state. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub state: MaybeUndefined>, + pub state: MaybeUndefined, /// Filters that the suggested user must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub suggested_user: MaybeUndefined>, @@ -4030,10 +4030,10 @@ pub struct IssueSuggestionCollectionFilter { pub suggested_label: MaybeUndefined>, /// Compound filters, all of which need to be matched by the suggestion. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the suggestion. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some suggestions. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub some: MaybeUndefined>, @@ -4042,7 +4042,7 @@ pub struct IssueSuggestionCollectionFilter { pub every: MaybeUndefined>, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, } /// IssueSuggestion filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -4050,19 +4050,19 @@ pub struct IssueSuggestionCollectionFilter { pub struct IssueSuggestionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the suggestion type. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub r#type: MaybeUndefined>, + pub r#type: MaybeUndefined, /// Comparator for the suggestion state. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub state: MaybeUndefined>, + pub state: MaybeUndefined, /// Filters that the suggested user must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub suggested_user: MaybeUndefined>, @@ -4077,10 +4077,10 @@ pub struct IssueSuggestionFilter { pub suggested_label: MaybeUndefined>, /// Compound filters, all of which need to be matched by the suggestion. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the suggestion. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// `ALPHA` The properties of the issueToRelease to create. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -4234,9 +4234,9 @@ pub struct JiraProjectDataInput { pub struct JiraSettingsInput { /// The mapping of Jira project id => Linear team id. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub project_mapping: MaybeUndefined>>, + pub project_mapping: MaybeUndefined>, /// The Jira projects for the organization. - pub projects: Vec>, + pub projects: Vec, /// Whether this integration is for Jira Server or not. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub is_jira_server: MaybeUndefined, @@ -4377,53 +4377,53 @@ pub struct NameSort { pub struct NotificationCategoryPreferencesInput { /// The preferences for notifications about assignments. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub assignments: MaybeUndefined>, + pub assignments: MaybeUndefined, /// The preferences for notifications about status changes. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub status_changes: MaybeUndefined>, + pub status_changes: MaybeUndefined, /// The preferences for notifications about comments and replies. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub comments_and_replies: MaybeUndefined>, + pub comments_and_replies: MaybeUndefined, /// The preferences for notifications about mentions. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub mentions: MaybeUndefined>, + pub mentions: MaybeUndefined, /// The preferences for notifications about reactions. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub reactions: MaybeUndefined>, + pub reactions: MaybeUndefined, /// The preferences for notifications about subscriptions. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub subscriptions: MaybeUndefined>, + pub subscriptions: MaybeUndefined, /// The preferences for notifications about document changes. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub document_changes: MaybeUndefined>, + pub document_changes: MaybeUndefined, /// The preferences for notifications about posts and updates. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub posts_and_updates: MaybeUndefined>, + pub posts_and_updates: MaybeUndefined, /// The preferences for notifications about reminders. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub reminders: MaybeUndefined>, + pub reminders: MaybeUndefined, /// The preferences for notifications about reviews. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub reviews: MaybeUndefined>, + pub reviews: MaybeUndefined, /// The preferences for notifications about apps and integrations. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub apps_and_integrations: MaybeUndefined>, + pub apps_and_integrations: MaybeUndefined, /// The preferences for notifications about triage. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub triage: MaybeUndefined>, + pub triage: MaybeUndefined, /// The preferences for notifications about customers. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customers: MaybeUndefined>, + pub customers: MaybeUndefined, /// The preferences for notifications about feed summaries. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub feed: MaybeUndefined>, + pub feed: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NotificationDeliveryPreferencesChannelInput { /// The schedule for notifications on this channel. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub schedule: MaybeUndefined>, + pub schedule: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -4440,7 +4440,7 @@ pub struct NotificationDeliveryPreferencesDayInput { pub struct NotificationDeliveryPreferencesInput { /// The delivery preferences for the mobile channel. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub mobile: MaybeUndefined>, + pub mobile: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -4449,19 +4449,19 @@ pub struct NotificationDeliveryPreferencesScheduleInput { #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub disabled: MaybeUndefined, /// Delivery preferences for Sunday. - pub sunday: Box, + pub sunday: NotificationDeliveryPreferencesDayInput, /// Delivery preferences for Monday. - pub monday: Box, + pub monday: NotificationDeliveryPreferencesDayInput, /// Delivery preferences for Tuesday. - pub tuesday: Box, + pub tuesday: NotificationDeliveryPreferencesDayInput, /// Delivery preferences for Wednesday. - pub wednesday: Box, + pub wednesday: NotificationDeliveryPreferencesDayInput, /// Delivery preferences for Thursday. - pub thursday: Box, + pub thursday: NotificationDeliveryPreferencesDayInput, /// Delivery preferences for Friday. - pub friday: Box, + pub friday: NotificationDeliveryPreferencesDayInput, /// Delivery preferences for Saturday. - pub saturday: Box, + pub saturday: NotificationDeliveryPreferencesDayInput, } /// Describes the type and id of the entity to target for notifications. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -4495,25 +4495,25 @@ pub struct NotificationEntityInput { pub struct NotificationFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the notification type. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub r#type: MaybeUndefined>, + pub r#type: MaybeUndefined, /// Comparator for the archived at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub archived_at: MaybeUndefined>, + pub archived_at: MaybeUndefined, /// Compound filters, all of which need to be matched by the notification. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the notification. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -4598,16 +4598,16 @@ pub struct NotionSettingsInput { pub struct NullableCommentFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the comment's body. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub body: MaybeUndefined>, + pub body: MaybeUndefined, /// Filters that the comment's creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub user: MaybeUndefined>, @@ -4625,7 +4625,7 @@ pub struct NullableCommentFilter { pub document_content: MaybeUndefined>, /// Filters that the comment's reactions must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub reactions: MaybeUndefined>, + pub reactions: MaybeUndefined, /// Filters that the comment's customer needs must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub needs: MaybeUndefined>, @@ -4634,10 +4634,10 @@ pub struct NullableCommentFilter { pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the comment. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the comment. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Customer filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -4645,25 +4645,25 @@ pub struct NullableCommentFilter { pub struct NullableCustomerFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the customer name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the customer slack channel ID. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slack_channel_id: MaybeUndefined>, + pub slack_channel_id: MaybeUndefined, /// Comparator for the customer's domains. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub domains: MaybeUndefined>, + pub domains: MaybeUndefined, /// Comparator for the customer's external IDs. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub external_ids: MaybeUndefined>, + pub external_ids: MaybeUndefined, /// Filters that the customer owner must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub owner: MaybeUndefined>, @@ -4672,25 +4672,25 @@ pub struct NullableCustomerFilter { pub needs: MaybeUndefined>, /// Comparator for the customer generated revenue. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub revenue: MaybeUndefined>, + pub revenue: MaybeUndefined, /// Comparator for the customer size. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub size: MaybeUndefined>, + pub size: MaybeUndefined, /// Filters that the customer's status must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub status: MaybeUndefined>, + pub status: MaybeUndefined, /// Filters that the customer's tier must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub tier: MaybeUndefined>, + pub tier: MaybeUndefined, /// Filter based on the existence of the relation. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the customer. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the customer. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Cycle filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -4698,46 +4698,46 @@ pub struct NullableCustomerFilter { pub struct NullableCycleFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the cycle number. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub number: MaybeUndefined>, + pub number: MaybeUndefined, /// Comparator for the cycle name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the cycle start date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub starts_at: MaybeUndefined>, + pub starts_at: MaybeUndefined, /// Comparator for the cycle ends at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub ends_at: MaybeUndefined>, + pub ends_at: MaybeUndefined, /// Comparator for the cycle completed at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub completed_at: MaybeUndefined>, + pub completed_at: MaybeUndefined, /// Comparator for the filtering active cycle. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_active: MaybeUndefined>, + pub is_active: MaybeUndefined, /// Comparator for filtering for whether the cycle is currently in cooldown. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_in_cooldown: MaybeUndefined>, + pub is_in_cooldown: MaybeUndefined, /// Comparator for the filtering next cycle. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_next: MaybeUndefined>, + pub is_next: MaybeUndefined, /// Comparator for the filtering previous cycle. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_previous: MaybeUndefined>, + pub is_previous: MaybeUndefined, /// Comparator for the filtering future cycles. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_future: MaybeUndefined>, + pub is_future: MaybeUndefined, /// Comparator for the filtering past cycles. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_past: MaybeUndefined>, + pub is_past: MaybeUndefined, /// Filters that the cycles team must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub team: MaybeUndefined>, @@ -4746,16 +4746,16 @@ pub struct NullableCycleFilter { pub issues: MaybeUndefined>, /// Comparator for the inherited cycle ID. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub inherited_from_id: MaybeUndefined>, + pub inherited_from_id: MaybeUndefined, /// Filter based on the existence of the relation. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the cycle. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the cycle. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Comparator for optional dates. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -4795,16 +4795,16 @@ pub struct NullableDateComparator { pub struct NullableDocumentContentFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the document content. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub content: MaybeUndefined>, + pub content: MaybeUndefined, /// Filters that the document content project must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub project: MaybeUndefined>, @@ -4816,10 +4816,10 @@ pub struct NullableDocumentContentFilter { pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the user. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the user. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Nullable comparator for optional durations. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -4859,64 +4859,64 @@ pub struct NullableDurationComparator { pub struct NullableIssueFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the issues number. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub number: MaybeUndefined>, + pub number: MaybeUndefined, /// Comparator for the issues title. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub title: MaybeUndefined>, + pub title: MaybeUndefined, /// Comparator for the issues description. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub description: MaybeUndefined>, + pub description: MaybeUndefined, /// Comparator for the issues priority. 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub priority: MaybeUndefined>, + pub priority: MaybeUndefined, /// Comparator for the issues estimate. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub estimate: MaybeUndefined>, + pub estimate: MaybeUndefined, /// Comparator for the issues started at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub started_at: MaybeUndefined>, + pub started_at: MaybeUndefined, /// Comparator for the issues triaged at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub triaged_at: MaybeUndefined>, + pub triaged_at: MaybeUndefined, /// Comparator for the issues completed at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub completed_at: MaybeUndefined>, + pub completed_at: MaybeUndefined, /// Comparator for the issues canceled at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub canceled_at: MaybeUndefined>, + pub canceled_at: MaybeUndefined, /// Comparator for the issues archived at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub archived_at: MaybeUndefined>, + pub archived_at: MaybeUndefined, /// Comparator for the issues auto closed at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub auto_closed_at: MaybeUndefined>, + pub auto_closed_at: MaybeUndefined, /// Comparator for the issues auto archived at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub auto_archived_at: MaybeUndefined>, + pub auto_archived_at: MaybeUndefined, /// Comparator for the issues added to cycle at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub added_to_cycle_at: MaybeUndefined>, + pub added_to_cycle_at: MaybeUndefined, /// Comparator for the period when issue was added to a cycle. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub added_to_cycle_period: MaybeUndefined>, + pub added_to_cycle_period: MaybeUndefined, /// Comparator for the issues due date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub due_date: MaybeUndefined>, + pub due_date: MaybeUndefined, /// `Internal` Comparator for the issue's accumulatedStateUpdatedAt date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub accumulated_state_updated_at: MaybeUndefined>, + pub accumulated_state_updated_at: MaybeUndefined, /// Comparator for the issues snoozed until date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub snoozed_until_at: MaybeUndefined>, + pub snoozed_until_at: MaybeUndefined, /// Filters that the issues assignee must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub assignee: MaybeUndefined>, @@ -4925,13 +4925,13 @@ pub struct NullableIssueFilter { pub delegate: MaybeUndefined>, /// Filters that the last applied template must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub last_applied_template: MaybeUndefined>, + pub last_applied_template: MaybeUndefined, /// `ALPHA` Filters that the recurring issue template must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub recurring_issue_template: MaybeUndefined>, + pub recurring_issue_template: MaybeUndefined, /// Filters that the source must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub source_metadata: MaybeUndefined>, + pub source_metadata: MaybeUndefined, /// Filters that the issues creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, @@ -4949,7 +4949,7 @@ pub struct NullableIssueFilter { pub subscribers: MaybeUndefined>, /// Comparator for filtering issues which have been shared with users outside of the team. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_shared_users: MaybeUndefined>, + pub has_shared_users: MaybeUndefined, /// Filters that users the issue has been shared with must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub shared_with: MaybeUndefined>, @@ -4985,76 +4985,76 @@ pub struct NullableIssueFilter { pub attachments: MaybeUndefined>, /// `Internal` Comparator for the issues content. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub searchable_content: MaybeUndefined>, + pub searchable_content: MaybeUndefined, /// Comparator for filtering issues with relations. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_related_relations: MaybeUndefined>, + pub has_related_relations: MaybeUndefined, /// Comparator for filtering issues which are duplicates. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_duplicate_relations: MaybeUndefined>, + pub has_duplicate_relations: MaybeUndefined, /// Comparator for filtering issues which are blocked. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_blocked_by_relations: MaybeUndefined>, + pub has_blocked_by_relations: MaybeUndefined, /// Comparator for filtering issues which are blocking. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_blocking_relations: MaybeUndefined>, + pub has_blocking_relations: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested related issues. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_related_issues: MaybeUndefined>, + pub has_suggested_related_issues: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested similar issues. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_similar_issues: MaybeUndefined>, + pub has_suggested_similar_issues: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested assignees. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_assignees: MaybeUndefined>, + pub has_suggested_assignees: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested projects. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_projects: MaybeUndefined>, + pub has_suggested_projects: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested labels. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_labels: MaybeUndefined>, + pub has_suggested_labels: MaybeUndefined, /// `Internal` Comparator for filtering issues which have suggested teams. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_suggested_teams: MaybeUndefined>, + pub has_suggested_teams: MaybeUndefined, /// Comparator for the issues sla status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub sla_status: MaybeUndefined>, + pub sla_status: MaybeUndefined, /// Filters that the issues reactions must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub reactions: MaybeUndefined>, + pub reactions: MaybeUndefined, /// Filters that the issue's customer needs must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub needs: MaybeUndefined>, /// `ALPHA` Filters that the issue's releases must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub releases: MaybeUndefined>, + pub releases: MaybeUndefined, /// Count of customers #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customer_count: MaybeUndefined>, + pub customer_count: MaybeUndefined, /// Count of important customers #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customer_important_count: MaybeUndefined>, + pub customer_important_count: MaybeUndefined, /// `Internal` Lead time (created -> completed) comparator. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub lead_time: MaybeUndefined>, + pub lead_time: MaybeUndefined, /// `Internal` Cycle time (started -> completed) comparator. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub cycle_time: MaybeUndefined>, + pub cycle_time: MaybeUndefined, /// `Internal` Age (created -> now) comparator, defined if the issue is still open. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub age_time: MaybeUndefined>, + pub age_time: MaybeUndefined, /// `Internal` Triage time (entered triaged -> triaged) comparator. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub triage_time: MaybeUndefined>, + pub triage_time: MaybeUndefined, /// Filter based on the existence of the relation. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the issue. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the issue. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Comparator for optional numbers. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -5094,79 +5094,79 @@ pub struct NullableNumberComparator { pub struct NullableProjectFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the project name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the project slug ID. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slug_id: MaybeUndefined>, + pub slug_id: MaybeUndefined, /// `DEPRECATED` Comparator for the project state. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub state: MaybeUndefined>, + pub state: MaybeUndefined, /// Filters that the project's status must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub status: MaybeUndefined>, /// Comparator for the projects priority. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub priority: MaybeUndefined>, + pub priority: MaybeUndefined, /// Filters that project labels must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub labels: MaybeUndefined>, /// `Internal` Comparator for the project's content. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub searchable_content: MaybeUndefined>, + pub searchable_content: MaybeUndefined, /// Comparator for the project started date (when it was moved to an "In Progress" status). #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub started_at: MaybeUndefined>, + pub started_at: MaybeUndefined, /// Comparator for the project completion date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub completed_at: MaybeUndefined>, + pub completed_at: MaybeUndefined, /// Comparator for the project cancelation date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub canceled_at: MaybeUndefined>, + pub canceled_at: MaybeUndefined, /// Comparator for the project start date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub start_date: MaybeUndefined>, + pub start_date: MaybeUndefined, /// Comparator for the project target date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub target_date: MaybeUndefined>, + pub target_date: MaybeUndefined, /// Comparator for the project health: onTrack, atRisk, offTrack #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub health: MaybeUndefined>, + pub health: MaybeUndefined, /// Comparator for the project health (with age): onTrack, atRisk, offTrack, outdated, noUpdate #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub health_with_age: MaybeUndefined>, + pub health_with_age: MaybeUndefined, /// `ALPHA` Comparator for the project activity type: buzzin, active, some, none #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub activity_type: MaybeUndefined>, + pub activity_type: MaybeUndefined, /// Comparator for filtering projects with relations. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_related_relations: MaybeUndefined>, + pub has_related_relations: MaybeUndefined, /// `Deprecated` Comparator for filtering projects which this is depended on by. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_depended_on_by_relations: MaybeUndefined>, + pub has_depended_on_by_relations: MaybeUndefined, /// `Deprecated`Comparator for filtering projects which this depends on. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_depends_on_relations: MaybeUndefined>, + pub has_depends_on_relations: MaybeUndefined, /// Comparator for filtering projects which are blocked. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_blocked_by_relations: MaybeUndefined>, + pub has_blocked_by_relations: MaybeUndefined, /// Comparator for filtering projects which are blocking. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_blocking_relations: MaybeUndefined>, + pub has_blocking_relations: MaybeUndefined, /// Comparator for filtering projects with violated dependencies. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_violated_relations: MaybeUndefined>, + pub has_violated_relations: MaybeUndefined, /// Comparator for the project updates. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub project_updates: MaybeUndefined>, + pub project_updates: MaybeUndefined, /// Filters that the projects creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, @@ -5199,25 +5199,25 @@ pub struct NullableProjectFilter { pub accessible_teams: MaybeUndefined>, /// Filters that the last applied template must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub last_applied_template: MaybeUndefined>, + pub last_applied_template: MaybeUndefined, /// Filters that the project's customer needs must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub needs: MaybeUndefined>, /// Count of customers #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customer_count: MaybeUndefined>, + pub customer_count: MaybeUndefined, /// Count of important customers #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customer_important_count: MaybeUndefined>, + pub customer_important_count: MaybeUndefined, /// Filter based on the existence of the relation. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the project. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the project. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Project milestone filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -5225,19 +5225,19 @@ pub struct NullableProjectFilter { pub struct NullableProjectMilestoneFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the project milestone name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the project milestone target date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub target_date: MaybeUndefined>, + pub target_date: MaybeUndefined, /// Filters that the project milestone's project must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub project: MaybeUndefined>, @@ -5246,10 +5246,10 @@ pub struct NullableProjectMilestoneFilter { pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the project milestone. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the project milestone. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Nullable project update filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -5257,13 +5257,13 @@ pub struct NullableProjectMilestoneFilter { pub struct NullableProjectUpdateFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Filters that the project update creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub user: MaybeUndefined>, @@ -5272,16 +5272,16 @@ pub struct NullableProjectUpdateFilter { pub project: MaybeUndefined>, /// Filters that the project updates reactions must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub reactions: MaybeUndefined>, + pub reactions: MaybeUndefined, /// Filter based on the existence of the relation. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the project update. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the project update. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Comparator for optional strings. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -5345,25 +5345,25 @@ pub struct NullableStringComparator { pub struct NullableTeamFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the team name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the team key. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub key: MaybeUndefined>, + pub key: MaybeUndefined, /// Comparator for the team description. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub description: MaybeUndefined>, + pub description: MaybeUndefined, /// Comparator for the team privacy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub private: MaybeUndefined>, + pub private: MaybeUndefined, /// Filters that the teams issues must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub issues: MaybeUndefined>, @@ -5375,10 +5375,10 @@ pub struct NullableTeamFilter { pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the team. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the team. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Template filtering options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -5386,31 +5386,31 @@ pub struct NullableTeamFilter { pub struct NullableTemplateFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the template's name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the template's type. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub r#type: MaybeUndefined>, + pub r#type: MaybeUndefined, /// Comparator for the inherited template's ID. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub inherited_from_id: MaybeUndefined>, + pub inherited_from_id: MaybeUndefined, /// Filter based on the existence of the relation. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the template. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the template. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Comparator for optional timeless dates. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -5450,55 +5450,55 @@ pub struct NullableTimelessDateComparator { pub struct NullableUserFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the user's name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the user's display name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub display_name: MaybeUndefined>, + pub display_name: MaybeUndefined, /// Comparator for the user's email. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub email: MaybeUndefined>, + pub email: MaybeUndefined, /// Comparator for the user's activity status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub active: MaybeUndefined>, + pub active: MaybeUndefined, /// Filters that the users assigned issues must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub assigned_issues: MaybeUndefined>, /// Comparator for the user's admin status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub admin: MaybeUndefined>, + pub admin: MaybeUndefined, /// Comparator for the user's owner status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub owner: MaybeUndefined>, + pub owner: MaybeUndefined, /// Comparator for the user's invited status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub invited: MaybeUndefined>, + pub invited: MaybeUndefined, /// Comparator for the user's invited status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_invited: MaybeUndefined>, + pub is_invited: MaybeUndefined, /// Comparator for the user's app status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub app: MaybeUndefined>, + pub app: MaybeUndefined, /// Filter based on the currently authenticated user. Set to true to filter for the authenticated user, false for any other user. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_me: MaybeUndefined>, + pub is_me: MaybeUndefined, /// Filter based on the existence of the relation. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the user. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the user. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Comparator for numbers. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -5720,7 +5720,7 @@ pub struct OrganizationUpdateInput { pub restrict_agent_invocation_to_members: MaybeUndefined, /// IP restriction configurations controlling allowed access the workspace. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub ip_restrictions: MaybeUndefined>>, + pub ip_restrictions: MaybeUndefined>, /// Allowed file upload content types. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub allowed_file_upload_content_types: MaybeUndefined>, @@ -5768,7 +5768,7 @@ pub struct OrganizationUpdateInput { pub hipaa_compliance_enabled: MaybeUndefined, /// The security settings for the organization. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub security_settings: MaybeUndefined>, + pub security_settings: MaybeUndefined, /// `INTERNAL` Configure per-modality AI host providers and model families. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub ai_provider_configuration: MaybeUndefined, @@ -5836,79 +5836,79 @@ pub struct PrioritySort { pub struct ProjectCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the project name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the project slug ID. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slug_id: MaybeUndefined>, + pub slug_id: MaybeUndefined, /// `DEPRECATED` Comparator for the project state. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub state: MaybeUndefined>, + pub state: MaybeUndefined, /// Filters that the project's status must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub status: MaybeUndefined>, /// Comparator for the projects priority. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub priority: MaybeUndefined>, + pub priority: MaybeUndefined, /// Filters that project labels must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub labels: MaybeUndefined>, /// `Internal` Comparator for the project's content. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub searchable_content: MaybeUndefined>, + pub searchable_content: MaybeUndefined, /// Comparator for the project started date (when it was moved to an "In Progress" status). #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub started_at: MaybeUndefined>, + pub started_at: MaybeUndefined, /// Comparator for the project completion date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub completed_at: MaybeUndefined>, + pub completed_at: MaybeUndefined, /// Comparator for the project cancelation date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub canceled_at: MaybeUndefined>, + pub canceled_at: MaybeUndefined, /// Comparator for the project start date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub start_date: MaybeUndefined>, + pub start_date: MaybeUndefined, /// Comparator for the project target date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub target_date: MaybeUndefined>, + pub target_date: MaybeUndefined, /// Comparator for the project health: onTrack, atRisk, offTrack #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub health: MaybeUndefined>, + pub health: MaybeUndefined, /// Comparator for the project health (with age): onTrack, atRisk, offTrack, outdated, noUpdate #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub health_with_age: MaybeUndefined>, + pub health_with_age: MaybeUndefined, /// `ALPHA` Comparator for the project activity type: buzzin, active, some, none #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub activity_type: MaybeUndefined>, + pub activity_type: MaybeUndefined, /// Comparator for filtering projects with relations. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_related_relations: MaybeUndefined>, + pub has_related_relations: MaybeUndefined, /// `Deprecated` Comparator for filtering projects which this is depended on by. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_depended_on_by_relations: MaybeUndefined>, + pub has_depended_on_by_relations: MaybeUndefined, /// `Deprecated`Comparator for filtering projects which this depends on. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_depends_on_relations: MaybeUndefined>, + pub has_depends_on_relations: MaybeUndefined, /// Comparator for filtering projects which are blocked. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_blocked_by_relations: MaybeUndefined>, + pub has_blocked_by_relations: MaybeUndefined, /// Comparator for filtering projects which are blocking. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_blocking_relations: MaybeUndefined>, + pub has_blocking_relations: MaybeUndefined, /// Comparator for filtering projects with violated dependencies. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_violated_relations: MaybeUndefined>, + pub has_violated_relations: MaybeUndefined, /// Comparator for the project updates. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub project_updates: MaybeUndefined>, + pub project_updates: MaybeUndefined, /// Filters that the projects creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, @@ -5941,22 +5941,22 @@ pub struct ProjectCollectionFilter { pub accessible_teams: MaybeUndefined>, /// Filters that the last applied template must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub last_applied_template: MaybeUndefined>, + pub last_applied_template: MaybeUndefined, /// Filters that the project's customer needs must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub needs: MaybeUndefined>, /// Count of customers #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customer_count: MaybeUndefined>, + pub customer_count: MaybeUndefined, /// Count of important customers #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customer_important_count: MaybeUndefined>, + pub customer_important_count: MaybeUndefined, /// Compound filters, all of which need to be matched by the project. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the project. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some projects. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub some: MaybeUndefined>, @@ -5965,7 +5965,7 @@ pub struct ProjectCollectionFilter { pub every: MaybeUndefined>, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -6052,79 +6052,79 @@ pub struct ProjectCreatedAtSort { pub struct ProjectFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the project name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the project slug ID. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slug_id: MaybeUndefined>, + pub slug_id: MaybeUndefined, /// `DEPRECATED` Comparator for the project state. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub state: MaybeUndefined>, + pub state: MaybeUndefined, /// Filters that the project's status must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub status: MaybeUndefined>, /// Comparator for the projects priority. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub priority: MaybeUndefined>, + pub priority: MaybeUndefined, /// Filters that project labels must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub labels: MaybeUndefined>, /// `Internal` Comparator for the project's content. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub searchable_content: MaybeUndefined>, + pub searchable_content: MaybeUndefined, /// Comparator for the project started date (when it was moved to an "In Progress" status). #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub started_at: MaybeUndefined>, + pub started_at: MaybeUndefined, /// Comparator for the project completion date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub completed_at: MaybeUndefined>, + pub completed_at: MaybeUndefined, /// Comparator for the project cancelation date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub canceled_at: MaybeUndefined>, + pub canceled_at: MaybeUndefined, /// Comparator for the project start date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub start_date: MaybeUndefined>, + pub start_date: MaybeUndefined, /// Comparator for the project target date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub target_date: MaybeUndefined>, + pub target_date: MaybeUndefined, /// Comparator for the project health: onTrack, atRisk, offTrack #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub health: MaybeUndefined>, + pub health: MaybeUndefined, /// Comparator for the project health (with age): onTrack, atRisk, offTrack, outdated, noUpdate #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub health_with_age: MaybeUndefined>, + pub health_with_age: MaybeUndefined, /// `ALPHA` Comparator for the project activity type: buzzin, active, some, none #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub activity_type: MaybeUndefined>, + pub activity_type: MaybeUndefined, /// Comparator for filtering projects with relations. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_related_relations: MaybeUndefined>, + pub has_related_relations: MaybeUndefined, /// `Deprecated` Comparator for filtering projects which this is depended on by. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_depended_on_by_relations: MaybeUndefined>, + pub has_depended_on_by_relations: MaybeUndefined, /// `Deprecated`Comparator for filtering projects which this depends on. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_depends_on_relations: MaybeUndefined>, + pub has_depends_on_relations: MaybeUndefined, /// Comparator for filtering projects which are blocked. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_blocked_by_relations: MaybeUndefined>, + pub has_blocked_by_relations: MaybeUndefined, /// Comparator for filtering projects which are blocking. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_blocking_relations: MaybeUndefined>, + pub has_blocking_relations: MaybeUndefined, /// Comparator for filtering projects with violated dependencies. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub has_violated_relations: MaybeUndefined>, + pub has_violated_relations: MaybeUndefined, /// Comparator for the project updates. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub project_updates: MaybeUndefined>, + pub project_updates: MaybeUndefined, /// Filters that the projects creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, @@ -6157,22 +6157,22 @@ pub struct ProjectFilter { pub accessible_teams: MaybeUndefined>, /// Filters that the last applied template must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub last_applied_template: MaybeUndefined>, + pub last_applied_template: MaybeUndefined, /// Filters that the project's customer needs must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub needs: MaybeUndefined>, /// Count of customers #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customer_count: MaybeUndefined>, + pub customer_count: MaybeUndefined, /// Count of important customers #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub customer_important_count: MaybeUndefined>, + pub customer_important_count: MaybeUndefined, /// Compound filters, all of which need to be matched by the project. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the project. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Project health sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -6191,19 +6191,19 @@ pub struct ProjectHealthSort { pub struct ProjectLabelCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for whether the label is a group label. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_group: MaybeUndefined>, + pub is_group: MaybeUndefined, /// Filters that the project labels creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, @@ -6215,10 +6215,10 @@ pub struct ProjectLabelCollectionFilter { pub null: MaybeUndefined, /// Compound filters, all of which need to be matched by the label. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the label. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some project labels. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub some: MaybeUndefined>, @@ -6227,7 +6227,7 @@ pub struct ProjectLabelCollectionFilter { pub every: MaybeUndefined>, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -6259,19 +6259,19 @@ pub struct ProjectLabelCreateInput { pub struct ProjectLabelFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for whether the label is a group label. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_group: MaybeUndefined>, + pub is_group: MaybeUndefined, /// Filters that the project labels creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, @@ -6280,10 +6280,10 @@ pub struct ProjectLabelFilter { pub parent: MaybeUndefined>, /// Compound filters, all of which need to be matched by the label. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the label. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -6335,28 +6335,28 @@ pub struct ProjectManualSort { pub struct ProjectMilestoneCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the project milestone name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the project milestone target date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub target_date: MaybeUndefined>, + pub target_date: MaybeUndefined, /// Filters that the project milestone's project must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub project: MaybeUndefined>, /// Compound filters, all of which need to be matched by the milestone. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the milestone. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some milestones. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub some: MaybeUndefined>, @@ -6365,7 +6365,7 @@ pub struct ProjectMilestoneCollectionFilter { pub every: MaybeUndefined>, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -6396,28 +6396,28 @@ pub struct ProjectMilestoneCreateInput { pub struct ProjectMilestoneFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the project milestone name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the project milestone target date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub target_date: MaybeUndefined>, + pub target_date: MaybeUndefined, /// Filters that the project milestone's project must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub project: MaybeUndefined>, /// Compound filters, all of which need to be matched by the project milestone. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the project milestone. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -6432,10 +6432,10 @@ pub struct ProjectMilestoneMoveInput { pub add_issue_team_to_project: MaybeUndefined, /// A list of issue id to team ids, used for undoing a previous milestone move where the specified issues were moved from the specified teams. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub undo_issue_team_ids: MaybeUndefined>>, + pub undo_issue_team_ids: MaybeUndefined>, /// A mapping of project id to a previous set of team ids, used for undoing a previous milestone move where the specified teams were added to the project. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub undo_project_team_ids: MaybeUndefined>, + pub undo_project_team_ids: MaybeUndefined, } /// `Internal` Used for ProjectMilestoneMoveInput to describe a mapping between an issue and its team. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -6567,34 +6567,34 @@ pub struct ProjectSort { pub struct ProjectSortInput { /// Sort by project name #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Sort by project status #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub status: MaybeUndefined>, + pub status: MaybeUndefined, /// Sort by project priority #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub priority: MaybeUndefined>, + pub priority: MaybeUndefined, /// Sort by manual order #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub manual: MaybeUndefined>, + pub manual: MaybeUndefined, /// Sort by project target date #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub target_date: MaybeUndefined>, + pub target_date: MaybeUndefined, /// Sort by project start date #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub start_date: MaybeUndefined>, + pub start_date: MaybeUndefined, /// Sort by project creation date #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Sort by project update date #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Sort by project health status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub health: MaybeUndefined>, + pub health: MaybeUndefined, /// Sort by project lead name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub lead: MaybeUndefined>, + pub lead: MaybeUndefined, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -6623,34 +6623,34 @@ pub struct ProjectStatusCreateInput { pub struct ProjectStatusFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the project status name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the project status description. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub description: MaybeUndefined>, + pub description: MaybeUndefined, /// Comparator for the project status position. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub position: MaybeUndefined>, + pub position: MaybeUndefined, /// Comparator for the project status type. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub r#type: MaybeUndefined>, + pub r#type: MaybeUndefined, /// Filters that the project status projects must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub projects: MaybeUndefined>, /// Compound filters, all of which need to be matched by the project status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which needs to be matched by the project status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Project status sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -6712,28 +6712,28 @@ pub struct ProjectUpdateCreateInput { pub struct ProjectUpdateFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Filters that the project update creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub user: MaybeUndefined>, + pub user: MaybeUndefined, /// Filters that the project update project must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub project: MaybeUndefined>, + pub project: MaybeUndefined, /// Filters that the project updates reactions must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub reactions: MaybeUndefined>, + pub reactions: MaybeUndefined, /// Compound filters, all of which need to be matched by the ProjectUpdate. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the ProjectUpdate. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -6865,31 +6865,31 @@ pub struct ProjectUpdatedAtSort { pub struct ProjectUpdatesCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the project update health. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub health: MaybeUndefined>, + pub health: MaybeUndefined, /// Compound filters, all of which need to be matched by the project update. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the update. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some updates. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub some: MaybeUndefined>, + pub some: MaybeUndefined, /// Filters that needs to be matched by all updates. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub every: MaybeUndefined>, + pub every: MaybeUndefined, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, } /// Options for filtering projects by project updates. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -6897,22 +6897,22 @@ pub struct ProjectUpdatesCollectionFilter { pub struct ProjectUpdatesFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the project update health. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub health: MaybeUndefined>, + pub health: MaybeUndefined, /// Compound filters, all of which need to be matched by the project updates. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the project updates. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Input for referencing a pull request by repository and number. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -6943,34 +6943,34 @@ pub struct PushSubscriptionCreateInput { pub struct ReactionCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the reactions emoji. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub emoji: MaybeUndefined>, + pub emoji: MaybeUndefined, /// Comparator for the reactions custom emoji. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub custom_emoji_id: MaybeUndefined>, + pub custom_emoji_id: MaybeUndefined, /// Compound filters, all of which need to be matched by the reaction. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the reaction. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some reactions. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub some: MaybeUndefined>, + pub some: MaybeUndefined, /// Filters that needs to be matched by all reactions. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub every: MaybeUndefined>, + pub every: MaybeUndefined, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -7008,25 +7008,25 @@ pub struct ReactionCreateInput { pub struct ReactionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the reactions emoji. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub emoji: MaybeUndefined>, + pub emoji: MaybeUndefined, /// Comparator for the reactions custom emoji. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub custom_emoji_id: MaybeUndefined>, + pub custom_emoji_id: MaybeUndefined, /// Compound filters, all of which need to be matched by the reaction. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the reaction. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Comparator for relation existence. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -7045,34 +7045,34 @@ pub struct RelationExistsComparator { pub struct ReleaseCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Filters that the release's pipeline must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub pipeline: MaybeUndefined>, + pub pipeline: MaybeUndefined, /// Filters that the release's stage must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub stage: MaybeUndefined>, + pub stage: MaybeUndefined, /// Compound filters, all of which need to be matched by the release. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the release. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some releases. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub some: MaybeUndefined>, + pub some: MaybeUndefined, /// Filters that needs to be matched by all releases. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub every: MaybeUndefined>, + pub every: MaybeUndefined, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -7146,25 +7146,25 @@ pub struct ReleaseDebugSinkInput { pub struct ReleaseFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Filters that the release's pipeline must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub pipeline: MaybeUndefined>, + pub pipeline: MaybeUndefined, /// Filters that the release's stage must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub stage: MaybeUndefined>, + pub stage: MaybeUndefined, /// Compound filters, all of which need to be matched by the release. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the release. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -7190,19 +7190,19 @@ pub struct ReleasePipelineCreateInput { pub struct ReleasePipelineFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Compound filters, all of which need to be matched by the pipeline. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the pipeline. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -7246,25 +7246,25 @@ pub struct ReleaseStageCreateInput { pub struct ReleaseStageFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the stage type. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub r#type: MaybeUndefined>, + pub r#type: MaybeUndefined, /// Comparator for the stage name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Compound filters, all of which need to be matched by the stage. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the stage. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// `ALPHA` Comparator for release stage type. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -7316,16 +7316,16 @@ pub struct ReleaseSyncInput { pub commit_sha: String, /// Issue references (e.g. ENG-123) to associate with this release. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub issue_references: MaybeUndefined>>, + pub issue_references: MaybeUndefined>, /// Pull request references to look up. Issues linked to found PRs will be associated with this release. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub pull_request_references: MaybeUndefined>>, + pub pull_request_references: MaybeUndefined>, /// Information about the source repository. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub repository: MaybeUndefined>, + pub repository: MaybeUndefined, /// Debug information for release creation diagnostics. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub debug_sink: MaybeUndefined>, + pub debug_sink: MaybeUndefined, /// The identifier of the pipeline this release belongs to. pub pipeline_id: String, } @@ -7343,16 +7343,16 @@ pub struct ReleaseSyncInputBase { pub commit_sha: String, /// Issue references (e.g. ENG-123) to associate with this release. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub issue_references: MaybeUndefined>>, + pub issue_references: MaybeUndefined>, /// Pull request references to look up. Issues linked to found PRs will be associated with this release. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub pull_request_references: MaybeUndefined>>, + pub pull_request_references: MaybeUndefined>, /// Information about the source repository. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub repository: MaybeUndefined>, + pub repository: MaybeUndefined, /// Debug information for release creation diagnostics. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub debug_sink: MaybeUndefined>, + pub debug_sink: MaybeUndefined, } /// Input for updating a release by pipeline. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -7435,28 +7435,28 @@ pub struct RevenueSort { pub struct RoadmapCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the roadmap name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the roadmap slug ID. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slug_id: MaybeUndefined>, + pub slug_id: MaybeUndefined, /// Filters that the roadmap creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, /// Compound filters, all of which need to be matched by the roadmap. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the roadmap. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some roadmaps. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub some: MaybeUndefined>, @@ -7465,7 +7465,7 @@ pub struct RoadmapCollectionFilter { pub every: MaybeUndefined>, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -7494,28 +7494,28 @@ pub struct RoadmapCreateInput { pub struct RoadmapFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the roadmap name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the roadmap slug ID. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slug_id: MaybeUndefined>, + pub slug_id: MaybeUndefined, /// Filters that the roadmap creator must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub creator: MaybeUndefined>, /// Compound filters, all of which need to be matched by the roadmap. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the roadmap. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -7630,16 +7630,16 @@ pub struct SalesforceSettingsInput { pub struct SemanticSearchFilters { /// Filters applied to issues. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub issues: MaybeUndefined>, + pub issues: MaybeUndefined, /// Filters applied to projects. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub projects: MaybeUndefined>, + pub projects: MaybeUndefined, /// Filters applied to initiatives. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub initiatives: MaybeUndefined>, + pub initiatives: MaybeUndefined, /// Filters applied to documents. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub documents: MaybeUndefined>, + pub documents: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -7721,7 +7721,7 @@ pub struct SlackAsksSettingsInput { pub external_user_actions: MaybeUndefined, /// The mapping of Slack channel ID => Slack channel name for connected channels. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub slack_channel_mapping: MaybeUndefined>>, + pub slack_channel_mapping: MaybeUndefined>, /// The user role type that is allowed to manage Asks settings. pub can_administrate: UserRoleType, /// Controls who can see and set Customers when creating Asks in Slack. @@ -7759,7 +7759,7 @@ pub struct SlackChannelNameMappingInput { #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub bot_added: MaybeUndefined, /// Which teams are connected to the channel and settings for those teams. - pub teams: Vec>, + pub teams: Vec, /// Whether or not top-level messages in this channel should automatically create Asks. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub auto_create_on_message: MaybeUndefined, @@ -7851,10 +7851,10 @@ pub struct SourceMetadataComparator { pub null: MaybeUndefined, /// Comparator for the sub type. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub sub_type: MaybeUndefined>, + pub sub_type: MaybeUndefined, /// `INTERNAL` Comparator for the salesforce metadata. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub salesforce_metadata: MaybeUndefined>, + pub salesforce_metadata: MaybeUndefined, } /// Comparator for `sourceType` field. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -7926,13 +7926,13 @@ pub struct StartDateSort { pub struct StringArrayComparator { /// Length of the array. Matches any values that have the given length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, /// Compound filters, all of which need to be matched. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub every: MaybeUndefined>, + pub every: MaybeUndefined, /// Compound filters, one of which needs to be matched. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub some: MaybeUndefined>, + pub some: MaybeUndefined, } /// Comparator for strings. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -8077,19 +8077,19 @@ pub struct TargetDateSort { pub struct TeamCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Compound filters, all of which need to be matched by the team. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the team. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some teams. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub some: MaybeUndefined>, @@ -8098,7 +8098,7 @@ pub struct TeamCollectionFilter { pub every: MaybeUndefined>, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, /// Filters that the teams parent must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub parent: MaybeUndefined>, @@ -8220,25 +8220,25 @@ pub struct TeamCreateInput { pub struct TeamFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the team name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the team key. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub key: MaybeUndefined>, + pub key: MaybeUndefined, /// Comparator for the team description. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub description: MaybeUndefined>, + pub description: MaybeUndefined, /// Comparator for the team privacy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub private: MaybeUndefined>, + pub private: MaybeUndefined, /// Filters that the teams issues must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub issues: MaybeUndefined>, @@ -8247,10 +8247,10 @@ pub struct TeamFilter { pub parent: MaybeUndefined>, /// Compound filters, all of which need to be matched by the team. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the team. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -8449,7 +8449,7 @@ pub struct TeamUpdateInput { pub product_intelligence_scope: MaybeUndefined, /// The security settings for the team. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub security_settings: MaybeUndefined>, + pub security_settings: MaybeUndefined, /// Whether all members in the workspace can join the team. Only used for public teams. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub all_members_can_join: MaybeUndefined, @@ -8532,7 +8532,7 @@ pub struct TimeScheduleCreateInput { /// The name of the schedule. pub name: String, /// The schedule entries. - pub entries: Vec>, + pub entries: Vec, /// The unique identifier of the external schedule. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub external_id: MaybeUndefined, @@ -8562,7 +8562,7 @@ pub struct TimeScheduleUpdateInput { pub name: MaybeUndefined, /// The schedule entries. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub entries: MaybeUndefined>>, + pub entries: MaybeUndefined>, /// The unique identifier of the external schedule. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub external_id: MaybeUndefined, @@ -8606,7 +8606,7 @@ pub struct TriageResponsibilityCreateInput { pub action: String, /// The manual selection of users responsible for triage. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub manual_selection: MaybeUndefined>, + pub manual_selection: MaybeUndefined, /// The identifier of the time schedule used for scheduling triage responsibility #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub time_schedule_id: MaybeUndefined, @@ -8629,7 +8629,7 @@ pub struct TriageResponsibilityUpdateInput { pub action: MaybeUndefined, /// The manual selection of users responsible for triage. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub manual_selection: MaybeUndefined>, + pub manual_selection: MaybeUndefined, /// The identifier of the time schedule used for scheduling triage responsibility. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub time_schedule_id: MaybeUndefined, @@ -8651,52 +8651,52 @@ pub struct UpdatedAtSort { pub struct UserCollectionFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the user's name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the user's display name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub display_name: MaybeUndefined>, + pub display_name: MaybeUndefined, /// Comparator for the user's email. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub email: MaybeUndefined>, + pub email: MaybeUndefined, /// Comparator for the user's activity status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub active: MaybeUndefined>, + pub active: MaybeUndefined, /// Filters that the users assigned issues must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub assigned_issues: MaybeUndefined>, /// Comparator for the user's admin status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub admin: MaybeUndefined>, + pub admin: MaybeUndefined, /// Comparator for the user's owner status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub owner: MaybeUndefined>, + pub owner: MaybeUndefined, /// Comparator for the user's invited status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub invited: MaybeUndefined>, + pub invited: MaybeUndefined, /// Comparator for the user's invited status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_invited: MaybeUndefined>, + pub is_invited: MaybeUndefined, /// Comparator for the user's app status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub app: MaybeUndefined>, + pub app: MaybeUndefined, /// Filter based on the currently authenticated user. Set to true to filter for the authenticated user, false for any other user. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_me: MaybeUndefined>, + pub is_me: MaybeUndefined, /// Compound filters, all of which need to be matched by the user. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the user. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, /// Filters that needs to be matched by some users. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub some: MaybeUndefined>, @@ -8705,7 +8705,7 @@ pub struct UserCollectionFilter { pub every: MaybeUndefined>, /// Comparator for the collection length. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub length: MaybeUndefined>, + pub length: MaybeUndefined, } /// User display name sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -8724,52 +8724,52 @@ pub struct UserDisplayNameSort { pub struct UserFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the user's name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the user's display name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub display_name: MaybeUndefined>, + pub display_name: MaybeUndefined, /// Comparator for the user's email. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub email: MaybeUndefined>, + pub email: MaybeUndefined, /// Comparator for the user's activity status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub active: MaybeUndefined>, + pub active: MaybeUndefined, /// Filters that the users assigned issues must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub assigned_issues: MaybeUndefined>, /// Comparator for the user's admin status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub admin: MaybeUndefined>, + pub admin: MaybeUndefined, /// Comparator for the user's owner status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub owner: MaybeUndefined>, + pub owner: MaybeUndefined, /// Comparator for the user's invited status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub invited: MaybeUndefined>, + pub invited: MaybeUndefined, /// Comparator for the user's invited status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_invited: MaybeUndefined>, + pub is_invited: MaybeUndefined, /// Comparator for the user's app status. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub app: MaybeUndefined>, + pub app: MaybeUndefined, /// Filter based on the currently authenticated user. Set to true to filter for the authenticated user, false for any other user. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub is_me: MaybeUndefined>, + pub is_me: MaybeUndefined, /// Compound filters, all of which need to be matched by the user. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the user. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// User name sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] @@ -8809,16 +8809,14 @@ pub struct UserSettingsUpdateInput { pub subscribed_to_general_marketing_communications: MaybeUndefined, /// The user's notification category preferences. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub notification_category_preferences: - MaybeUndefined>, + pub notification_category_preferences: MaybeUndefined, /// The user's notification channel preferences. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub notification_channel_preferences: - MaybeUndefined>, + MaybeUndefined, /// The user's notification delivery preferences. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub notification_delivery_preferences: - MaybeUndefined>, + pub notification_delivery_preferences: MaybeUndefined, /// `Internal` The user's usage warning history. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub usage_warning_history: MaybeUndefined, @@ -8835,10 +8833,10 @@ pub struct UserSettingsUpdateInput { pub struct UserSortInput { /// Sort by user name #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Sort by user display name #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub display_name: MaybeUndefined>, + pub display_name: MaybeUndefined, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -8987,25 +8985,25 @@ pub struct WorkflowStateCreateInput { pub struct WorkflowStateFilter { /// Comparator for the identifier. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub id: MaybeUndefined>, + pub id: MaybeUndefined, /// Comparator for the created at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub created_at: MaybeUndefined>, + pub created_at: MaybeUndefined, /// Comparator for the updated at date. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub updated_at: MaybeUndefined>, + pub updated_at: MaybeUndefined, /// Comparator for the workflow state name. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub name: MaybeUndefined>, + pub name: MaybeUndefined, /// Comparator for the workflow state description. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub description: MaybeUndefined>, + pub description: MaybeUndefined, /// Comparator for the workflow state position. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub position: MaybeUndefined>, + pub position: MaybeUndefined, /// Comparator for the workflow state type. Possible values are "triage", "backlog", "unstarted", "started", "completed", "canceled". #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub r#type: MaybeUndefined>, + pub r#type: MaybeUndefined, /// Filters that the workflow states team must satisfy. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub team: MaybeUndefined>, @@ -9014,10 +9012,10 @@ pub struct WorkflowStateFilter { pub issues: MaybeUndefined>, /// Compound filters, all of which need to be matched by the workflow state. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub and: MaybeUndefined>>, + pub and: MaybeUndefined>, /// Compound filters, one of which need to be matched by the workflow state. #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] - pub or: MaybeUndefined>>, + pub or: MaybeUndefined>, } /// Issue workflow state sorting options. #[derive(Debug, Clone, Default, Serialize, Deserialize)] diff --git a/crates/lineark-sdk/src/generated/types.rs b/crates/lineark-sdk/src/generated/types.rs index 72daf75..50f2ba1 100644 --- a/crates/lineark-sdk/src/generated/types.rs +++ b/crates/lineark-sdk/src/generated/types.rs @@ -68,11 +68,11 @@ pub struct AgentActivity { /// The time at which the entity was archived. Null if the entity has not been archived. pub archived_at: Option>, /// The agent session this activity belongs to. - pub agent_session: Option>, + pub agent_session: Option, /// The comment this activity is linked to. - pub source_comment: Option>, + pub source_comment: Option, /// The user who created this agent activity. - pub user: Option>, + pub user: Option, /// Metadata about the external source that created this agent activity. pub source_metadata: Option, /// An optional modifier that provides additional instructions on how the activity should be interpreted. @@ -115,9 +115,9 @@ impl GraphQLFields for AgentActivityActionContent { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct AgentActivityConnection { - pub edges: Option>>, - pub nodes: Option>>, - pub page_info: Option>, + pub edges: Option>, + pub nodes: Option>, + pub page_info: Option, } impl GraphQLFields for AgentActivityConnection { type FullType = Self; @@ -128,7 +128,7 @@ impl GraphQLFields for AgentActivityConnection { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct AgentActivityEdge { - pub node: Option>, + pub node: Option, /// Used in `before` and `after` args pub cursor: Option, } @@ -178,7 +178,7 @@ pub struct AgentActivityPayload { /// The identifier of the last sync operation. pub last_sync_id: Option, /// The agent activity that was created or updated. - pub agent_activity: Option>, + pub agent_activity: Option, /// Whether the operation was successful. pub success: Option, } @@ -273,7 +273,7 @@ pub struct AgentSession { /// The user who dismissed the agent session. pub dismissed_by: Option>, /// Activities associated with this agent session. - pub activities: Option>, + pub activities: Option, /// The URL of an external agent-hosted page associated with this session. pub external_link: Option, /// A summary of the activities in this session. @@ -289,9 +289,9 @@ pub struct AgentSession { /// Agent session URL. pub url: Option, /// `Internal` Pull requests associated with this agent session. - pub pull_requests: Option>, + pub pull_requests: Option, /// External links associated with this session. - pub external_links: Option>>, + pub external_links: Option>, /// URLs of external resources associated with this session. pub external_urls: Option, } @@ -305,9 +305,9 @@ impl GraphQLFields for AgentSession { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct AgentSessionConnection { - pub edges: Option>>, - pub nodes: Option>>, - pub page_info: Option>, + pub edges: Option>, + pub nodes: Option>, + pub page_info: Option, } impl GraphQLFields for AgentSessionConnection { type FullType = Self; @@ -318,7 +318,7 @@ impl GraphQLFields for AgentSessionConnection { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct AgentSessionEdge { - pub node: Option>, + pub node: Option, /// Used in `before` and `after` args pub cursor: Option, } @@ -351,7 +351,7 @@ pub struct AgentSessionPayload { /// Whether the operation was successful. pub success: Option, /// The agent session that was created or updated. - pub agent_session: Option>, + pub agent_session: Option, } impl GraphQLFields for AgentSessionPayload { type FullType = Self; @@ -373,9 +373,9 @@ pub struct AgentSessionToPullRequest { /// The time at which the entity was archived. Null if the entity has not been archived. pub archived_at: Option>, /// The pull request that the agent session is associated with. - pub pull_request: Option>, + pub pull_request: Option, /// The agent session that the pull request is associated with. - pub agent_session: Option>, + pub agent_session: Option, } impl GraphQLFields for AgentSessionToPullRequest { type FullType = Self; @@ -386,9 +386,9 @@ impl GraphQLFields for AgentSessionToPullRequest { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct AgentSessionToPullRequestConnection { - pub edges: Option>>, - pub nodes: Option>>, - pub page_info: Option>, + pub edges: Option>, + pub nodes: Option>, + pub page_info: Option, } impl GraphQLFields for AgentSessionToPullRequestConnection { type FullType = Self; @@ -399,7 +399,7 @@ impl GraphQLFields for AgentSessionToPullRequestConnection { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct AgentSessionToPullRequestEdge { - pub node: Option>, + pub node: Option, /// Used in `before` and `after` args pub cursor: Option, } @@ -481,11 +481,11 @@ pub struct AsksChannelConnectPayload { /// The identifier of the last sync operation. pub last_sync_id: Option, /// The integration that was created or updated. - pub integration: Option>, + pub integration: Option, /// Whether the operation was successful. pub success: Option, /// The new Asks Slack channel mapping for the connected channel. - pub mapping: Option>, + pub mapping: Option, /// Whether the bot needs to be manually added to the channel. pub add_bot: Option, } @@ -509,11 +509,11 @@ pub struct AsksWebPage { /// The time at which the entity was archived. Null if the entity has not been archived. pub archived_at: Option>, /// The organization that the Asks web page belongs to. - pub organization: Option>, + pub organization: Option, /// The Asks web settings this page belongs to. - pub asks_web_settings: Option>, + pub asks_web_settings: Option, /// The user who created the Asks web page. - pub creator: Option>, + pub creator: Option, /// The title of the page. pub title: Option, /// The description of the page. @@ -546,7 +546,7 @@ pub struct AsksWebPagePayload { /// The identifier of the last sync operation. pub last_sync_id: Option, /// The Asks web page that was created or updated. - pub asks_web_page: Option>, + pub asks_web_page: Option, /// Whether the operation was successful. pub success: Option, } @@ -570,15 +570,15 @@ pub struct AsksWebSettings { /// The time at which the entity was archived. Null if the entity has not been archived. pub archived_at: Option>, /// The organization that the Asks web settings are associated with. - pub organization: Option>, + pub organization: Option, /// The user who created the Asks web settings. - pub creator: Option>, + pub creator: Option, /// The custom domain for the Asks web form. If null, the default Linear-hosted domain will be used. pub domain: Option, /// The email intake address associated with these Asks web settings. - pub email_intake_address: Option>, + pub email_intake_address: Option, /// The identity provider for SAML authentication on this Asks web form. - pub identity_provider: Option>, + pub identity_provider: Option, } impl GraphQLFields for AsksWebSettings { type FullType = Self; @@ -592,7 +592,7 @@ pub struct AsksWebSettingsPayload { /// The identifier of the last sync operation. pub last_sync_id: Option, /// The Asks web settings that were created or updated. - pub asks_web_settings: Option>, + pub asks_web_settings: Option, /// Whether the operation was successful. pub success: Option, } @@ -622,9 +622,9 @@ pub struct Attachment { /// Location of the attachment which is also used as an identifier. pub url: Option, /// The creator of the attachment. - pub creator: Option>, + pub creator: Option, /// The non-Linear user who created the attachment. - pub external_user_creator: Option>, + pub external_user_creator: Option, /// Custom metadata related to the attachment. pub metadata: Option, /// Information about the source which created the attachment. @@ -634,9 +634,9 @@ pub struct Attachment { /// Indicates if attachments for the same source application should be grouped in the Linear UI. pub group_by_source: Option, /// The issue this attachment was originally created on. Will be undefined if the attachment hasn't been moved. - pub original_issue: Option>, + pub original_issue: Option, /// The issue this attachment belongs to. - pub issue: Option>, + pub issue: Option, /// The body data of the attachment, if any. pub body_data: Option, } @@ -650,9 +650,9 @@ impl GraphQLFields for Attachment { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct AttachmentConnection { - pub edges: Option>>, - pub nodes: Option>>, - pub page_info: Option>, + pub edges: Option>, + pub nodes: Option>, + pub page_info: Option, } impl GraphQLFields for AttachmentConnection { type FullType = Self; @@ -663,7 +663,7 @@ impl GraphQLFields for AttachmentConnection { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct AttachmentEdge { - pub node: Option>, + pub node: Option, /// Used in `before` and `after` args pub cursor: Option, } @@ -679,7 +679,7 @@ pub struct AttachmentPayload { /// The identifier of the last sync operation. pub last_sync_id: Option, /// The issue attachment that was created. - pub attachment: Option>, + pub attachment: Option, /// Whether the operation was successful. pub success: Option, } @@ -716,9 +716,9 @@ pub struct AuditEntry { pub archived_at: Option>, pub r#type: Option, /// The organization the audit log belongs to. - pub organization: Option>, + pub organization: Option, /// The user that caused the audit entry to be created. - pub actor: Option>, + pub actor: Option, /// The ID of the user that caused the audit entry to be created. pub actor_id: Option, /// IP from actor when entry was recorded. @@ -740,9 +740,9 @@ impl GraphQLFields for AuditEntry { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct AuditEntryConnection { - pub edges: Option>>, - pub nodes: Option>>, - pub page_info: Option>, + pub edges: Option>, + pub nodes: Option>, + pub page_info: Option, } impl GraphQLFields for AuditEntryConnection { type FullType = Self; @@ -753,7 +753,7 @@ impl GraphQLFields for AuditEntryConnection { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct AuditEntryEdge { - pub node: Option>, + pub node: Option, /// Used in `before` and `after` args pub cursor: Option, } @@ -870,13 +870,13 @@ pub struct AuthResolverResponse { /// Should the signup flow allow access for the domain. pub allow_domain_access: Option, /// List of active users that belong to the user account. - pub users: Option>>, + pub users: Option>, /// List of locked users that are locked by login restrictions - pub locked_users: Option>>, + pub locked_users: Option>, /// List of organizations allowing this user account to join automatically. - pub available_organizations: Option>>, + pub available_organizations: Option>, /// List of organization available to this user account but locked due to the current auth method. - pub locked_organizations: Option>>, + pub locked_organizations: Option>, /// ID of the organization last accessed by the user. pub last_used_organization_id: Option, /// The authentication service used for the current session (e.g., google, email, saml). @@ -912,9 +912,9 @@ pub struct AuthUser { /// User account ID the user belongs to. pub user_account_id: Option, /// Organization the user belongs to. - pub organization: Option>, + pub organization: Option, /// `INTERNAL` Identity provider the user is managed by. - pub identity_provider: Option>, + pub identity_provider: Option, } impl GraphQLFields for AuthUser { type FullType = Self; @@ -1035,25 +1035,25 @@ pub struct Comment { /// Comment's URL. pub url: Option, /// The children of the comment. - pub children: Option>, + pub children: Option, /// Agent session associated with this comment. pub agent_session: Option>, /// `Internal` Agent sessions associated with this comment. - pub agent_sessions: Option>, + pub agent_sessions: Option, /// Issues created from this comment. - pub created_issues: Option>, + pub created_issues: Option, /// The bot that created the comment. - pub bot_actor: Option>, + pub bot_actor: Option, /// `Internal` The user on whose behalf the comment was created, e.g. when the Linear assistant creates a comment for a user. pub on_behalf_of: Option>, /// The external thread that the comment is synced with. - pub external_thread: Option>, + pub external_thread: Option, /// `Internal` Whether the comment should be hidden from Linear clients. This is typically used for bot comments that provide redundant information (e.g., Slack Asks confirmation messages). pub hide_in_linear: Option, /// Reactions associated with the comment. - pub reactions: Option>>, + pub reactions: Option>, /// The external services the comment is synced with. - pub synced_with: Option>>, + pub synced_with: Option>, } impl GraphQLFields for Comment { type FullType = Self; @@ -1065,9 +1065,9 @@ impl GraphQLFields for Comment { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct CommentConnection { - pub edges: Option>>, - pub nodes: Option>>, - pub page_info: Option>, + pub edges: Option>, + pub nodes: Option>, + pub page_info: Option, } impl GraphQLFields for CommentConnection { type FullType = Self; @@ -1078,7 +1078,7 @@ impl GraphQLFields for CommentConnection { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct CommentEdge { - pub node: Option>, + pub node: Option, /// Used in `before` and `after` args pub cursor: Option, } @@ -1094,7 +1094,7 @@ pub struct CommentPayload { /// The identifier of the last sync operation. pub last_sync_id: Option, /// The comment that was created or updated. - pub comment: Option>, + pub comment: Option, /// Whether the operation was successful. pub success: Option, } @@ -1131,8 +1131,8 @@ impl GraphQLFields for CreateCsvExportReportPayload { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct CreateOrJoinOrganizationResponse { - pub organization: Option>, - pub user: Option>, + pub organization: Option, + pub user: Option, } impl GraphQLFields for CreateOrJoinOrganizationResponse { type FullType = Self; @@ -1190,19 +1190,19 @@ pub struct CustomView { /// The team associated with the custom view. pub team: Option>, /// Projects associated with the custom view. - pub projects: Option>, + pub projects: Option, /// Issues associated with the custom view. - pub issues: Option>, + pub issues: Option, /// Feed items associated with the custom view. - pub updates: Option>, + pub updates: Option, /// The current users view preferences for this custom view. - pub user_view_preferences: Option>, + pub user_view_preferences: Option, /// The organizations default view preferences for this custom view. - pub organization_view_preferences: Option>, + pub organization_view_preferences: Option, /// The calculated view preferences values for this custom view. - pub view_preferences_values: Option>, + pub view_preferences_values: Option, /// Initiatives associated with the custom view. - pub initiatives: Option>, + pub initiatives: Option, } impl GraphQLFields for CustomView { type FullType = Self; @@ -1214,9 +1214,9 @@ impl GraphQLFields for CustomView { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct CustomViewConnection { - pub edges: Option>>, - pub nodes: Option>>, - pub page_info: Option>, + pub edges: Option>, + pub nodes: Option>, + pub page_info: Option, } impl GraphQLFields for CustomViewConnection { type FullType = Self; @@ -1227,7 +1227,7 @@ impl GraphQLFields for CustomViewConnection { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct CustomViewEdge { - pub node: Option>, + pub node: Option, /// Used in `before` and `after` args pub cursor: Option, } @@ -1263,23 +1263,23 @@ pub struct CustomViewNotificationSubscription { /// The time at which the entity was archived. Null if the entity has not been archived. pub archived_at: Option>, /// The user that subscribed to receive notifications. - pub subscriber: Option>, + pub subscriber: Option, /// The customer associated with the notification subscription. - pub customer: Option>, + pub customer: Option, /// The custom view subscribed to. - pub custom_view: Option>, + pub custom_view: Option, /// The contextual cycle view associated with the notification subscription. - pub cycle: Option>, + pub cycle: Option, /// The contextual label view associated with the notification subscription. - pub label: Option>, + pub label: Option, /// The contextual project view associated with the notification subscription. - pub project: Option>, + pub project: Option, /// The contextual initiative view associated with the notification subscription. - pub initiative: Option>, + pub initiative: Option, /// The team associated with the notification subscription. - pub team: Option>, + pub team: Option, /// The user view associated with the notification subscription. - pub user: Option>, + pub user: Option, /// The type of view to which the notification subscription context is associated with. pub context_view_type: Option, /// The type of user view to which the notification subscription context is associated with. @@ -1302,7 +1302,7 @@ pub struct CustomViewPayload { /// The identifier of the last sync operation. pub last_sync_id: Option, /// The custom view that was created or updated. - pub custom_view: Option>, + pub custom_view: Option, /// Whether the operation was successful. pub success: Option, } @@ -1354,13 +1354,13 @@ pub struct Customer { /// The user who owns the customer. pub owner: Option>, /// The current status of the customer. - pub status: Option>, + pub status: Option, /// The annual revenue generated by the customer. pub revenue: Option, /// The size of the customer. pub size: Option, /// The tier of the customer. - pub tier: Option>, + pub tier: Option, /// The approximate number of needs of the customer. pub approximate_need_count: Option, /// The customer's unique URL slug. @@ -1382,9 +1382,9 @@ impl GraphQLFields for Customer { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct CustomerConnection { - pub edges: Option>>, - pub nodes: Option>>, - pub page_info: Option>, + pub edges: Option>, + pub nodes: Option>, + pub page_info: Option, } impl GraphQLFields for CustomerConnection { type FullType = Self; @@ -1395,7 +1395,7 @@ impl GraphQLFields for CustomerConnection { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct CustomerEdge { - pub node: Option>, + pub node: Option, /// Used in `before` and `after` args pub cursor: Option, } @@ -1419,17 +1419,17 @@ pub struct CustomerNeed { /// The time at which the entity was archived. Null if the entity has not been archived. pub archived_at: Option>, /// The customer that this need is attached to. - pub customer: Option>, + pub customer: Option, /// The issue this need is referencing. - pub issue: Option>, + pub issue: Option, /// The project this need is referencing. - pub project: Option>, + pub project: Option, /// The comment this need is referencing. - pub comment: Option>, + pub comment: Option, /// The attachment this need is referencing. - pub attachment: Option>, + pub attachment: Option, /// The project attachment this need is referencing. - pub project_attachment: Option>, + pub project_attachment: Option, /// Whether the customer need is important or not. 0 = Not important, 1 = Important. pub priority: Option, /// The need content in markdown format. @@ -1437,9 +1437,9 @@ pub struct CustomerNeed { /// `Internal` The content of the need as a Prosemirror document. pub body_data: Option, /// The creator of the customer need. - pub creator: Option>, + pub creator: Option, /// The issue this customer need was originally created on. Will be undefined if the customer need hasn't been moved. - pub original_issue: Option>, + pub original_issue: Option, /// The URL of the underlying attachment, if any pub url: Option, } @@ -1458,7 +1458,7 @@ pub struct CustomerNeedArchivePayload { /// Whether the operation was successful. pub success: Option, /// The archived/unarchived entity. Null if entity was deleted. - pub entity: Option>, + pub entity: Option, } impl GraphQLFields for CustomerNeedArchivePayload { type FullType = Self; @@ -1469,9 +1469,9 @@ impl GraphQLFields for CustomerNeedArchivePayload { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct CustomerNeedConnection { - pub edges: Option>>, - pub nodes: Option>>, - pub page_info: Option>, + pub edges: Option>, + pub nodes: Option>, + pub page_info: Option, } impl GraphQLFields for CustomerNeedConnection { type FullType = Self; @@ -1482,7 +1482,7 @@ impl GraphQLFields for CustomerNeedConnection { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct CustomerNeedEdge { - pub node: Option>, + pub node: Option, /// Used in `before` and `after` args pub cursor: Option, } @@ -1508,11 +1508,11 @@ pub struct CustomerNeedNotification { /// Notification type. pub r#type: Option, /// The user that caused the notification. - pub actor: Option>, + pub actor: Option, /// The external user that caused the notification. - pub external_user_actor: Option>, + pub external_user_actor: Option, /// The user that received the notification. - pub user: Option>, + pub user: Option, /// The time at when the user marked the notification as read. Null, if the the user hasn't read the notification pub read_at: Option>, /// The time at when an email reminder for this notification was sent to the user. Null, if no email @@ -1551,15 +1551,15 @@ pub struct CustomerNeedNotification { /// `Internal` Priority of the notification with the same grouping key. Higher number means higher priority. If priority is the same, notifications should be sorted by `createdAt`. pub grouping_priority: Option, /// The bot that caused the notification. - pub bot_actor: Option>, + pub bot_actor: Option, /// Related customer need. pub customer_need_id: Option, /// The issue related to the notification. - pub related_issue: Option>, + pub related_issue: Option, /// The project related to the notification. - pub related_project: Option>, + pub related_project: Option, /// The customer need related to the notification. - pub customer_need: Option>, + pub customer_need: Option, } impl GraphQLFields for CustomerNeedNotification { type FullType = Self; @@ -1574,7 +1574,7 @@ pub struct CustomerNeedPayload { /// The identifier of the last sync operation. pub last_sync_id: Option, /// The customer need that was created or updated. - pub need: Option>, + pub need: Option, /// Whether the operation was successful. pub success: Option, } @@ -1590,11 +1590,11 @@ pub struct CustomerNeedUpdatePayload { /// The identifier of the last sync operation. pub last_sync_id: Option, /// The customer need that was created or updated. - pub need: Option>, + pub need: Option, /// Whether the operation was successful. pub success: Option, /// The related customer needs that were updated. - pub updated_related_needs: Option>>, + pub updated_related_needs: Option>, } impl GraphQLFields for CustomerNeedUpdatePayload { type FullType = Self; @@ -1618,11 +1618,11 @@ pub struct CustomerNotification { /// Notification type. pub r#type: Option, /// The user that caused the notification. - pub actor: Option>, + pub actor: Option, /// The external user that caused the notification. - pub external_user_actor: Option>, + pub external_user_actor: Option, /// The user that received the notification. - pub user: Option>, + pub user: Option, /// The time at when the user marked the notification as read. Null, if the the user hasn't read the notification pub read_at: Option>, /// The time at when an email reminder for this notification was sent to the user. Null, if no email @@ -1661,11 +1661,11 @@ pub struct CustomerNotification { /// `Internal` Priority of the notification with the same grouping key. Higher number means higher priority. If priority is the same, notifications should be sorted by `createdAt`. pub grouping_priority: Option, /// The bot that caused the notification. - pub bot_actor: Option>, + pub bot_actor: Option, /// Related customer. pub customer_id: Option, /// The customer related to the notification. - pub customer: Option>, + pub customer: Option, } impl GraphQLFields for CustomerNotification { type FullType = Self; @@ -1688,23 +1688,23 @@ pub struct CustomerNotificationSubscription { /// The time at which the entity was archived. Null if the entity has not been archived. pub archived_at: Option>, /// The user that subscribed to receive notifications. - pub subscriber: Option>, + pub subscriber: Option, /// The customer subscribed to. - pub customer: Option>, + pub customer: Option, /// The contextual custom view associated with the notification subscription. - pub custom_view: Option>, + pub custom_view: Option, /// The contextual cycle view associated with the notification subscription. - pub cycle: Option>, + pub cycle: Option, /// The contextual label view associated with the notification subscription. - pub label: Option>, + pub label: Option, /// The contextual project view associated with the notification subscription. - pub project: Option>, + pub project: Option, /// The contextual initiative view associated with the notification subscription. - pub initiative: Option>, + pub initiative: Option, /// The team associated with the notification subscription. - pub team: Option>, + pub team: Option, /// The user view associated with the notification subscription. - pub user: Option>, + pub user: Option, /// The type of view to which the notification subscription context is associated with. pub context_view_type: Option, /// The type of user view to which the notification subscription context is associated with. @@ -1727,7 +1727,7 @@ pub struct CustomerPayload { /// The identifier of the last sync operation. pub last_sync_id: Option, /// The customer that was created or updated. - pub customer: Option>, + pub customer: Option, /// Whether the operation was successful. pub success: Option, } @@ -1772,9 +1772,9 @@ impl GraphQLFields for CustomerStatus { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct CustomerStatusConnection { - pub edges: Option>>, - pub nodes: Option>>, - pub page_info: Option>, + pub edges: Option>, + pub nodes: Option>, + pub page_info: Option, } impl GraphQLFields for CustomerStatusConnection { type FullType = Self; @@ -1785,7 +1785,7 @@ impl GraphQLFields for CustomerStatusConnection { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct CustomerStatusEdge { - pub node: Option>, + pub node: Option, /// Used in `before` and `after` args pub cursor: Option, } @@ -1801,7 +1801,7 @@ pub struct CustomerStatusPayload { /// The identifier of the last sync operation. pub last_sync_id: Option, /// The customer status that was created or updated. - pub status: Option>, + pub status: Option, /// Whether the operation was successful. pub success: Option, } @@ -1844,9 +1844,9 @@ impl GraphQLFields for CustomerTier { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct CustomerTierConnection { - pub edges: Option>>, - pub nodes: Option>>, - pub page_info: Option>, + pub edges: Option>, + pub nodes: Option>, + pub page_info: Option, } impl GraphQLFields for CustomerTierConnection { type FullType = Self; @@ -1857,7 +1857,7 @@ impl GraphQLFields for CustomerTierConnection { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct CustomerTierEdge { - pub node: Option>, + pub node: Option, /// Used in `before` and `after` args pub cursor: Option, } @@ -1873,7 +1873,7 @@ pub struct CustomerTierPayload { /// The identifier of the last sync operation. pub last_sync_id: Option, /// The customer tier that was created or updated. - pub tier: Option>, + pub tier: Option, /// Whether the operation was successful. pub success: Option, } @@ -1935,9 +1935,9 @@ pub struct Cycle { /// Whether the cycle is in the past. pub is_past: Option, /// Issues associated with the cycle. - pub issues: Option>, + pub issues: Option, /// Issues that weren't completed when the cycle was closed. - pub uncompleted_issues_upon_close: Option>, + pub uncompleted_issues_upon_close: Option, /// The overall progress of the cycle. This is the (completed estimate points + 0.25 * in progress estimate points) / total estimate points. pub progress: Option, /// Whether the cycle is the next cycle for the team. @@ -1945,9 +1945,9 @@ pub struct Cycle { /// Whether the cycle is the previous cycle for the team. pub is_previous: Option, /// `Internal` Documents associated with the cycle. - pub documents: Option>, + pub documents: Option, /// `Internal` Links associated with the cycle. - pub links: Option>, + pub links: Option, } impl GraphQLFields for Cycle { type FullType = Self; @@ -1965,7 +1965,7 @@ pub struct CycleArchivePayload { /// Whether the operation was successful. pub success: Option, /// The archived/unarchived entity. Null if entity was deleted. - pub entity: Option>, + pub entity: Option, } impl GraphQLFields for CycleArchivePayload { type FullType = Self; @@ -1976,9 +1976,9 @@ impl GraphQLFields for CycleArchivePayload { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct CycleConnection { - pub edges: Option>>, - pub nodes: Option>>, - pub page_info: Option>, + pub edges: Option>, + pub nodes: Option>, + pub page_info: Option, } impl GraphQLFields for CycleConnection { type FullType = Self; @@ -1989,7 +1989,7 @@ impl GraphQLFields for CycleConnection { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct CycleEdge { - pub node: Option>, + pub node: Option, /// Used in `before` and `after` args pub cursor: Option, } @@ -2013,23 +2013,23 @@ pub struct CycleNotificationSubscription { /// The time at which the entity was archived. Null if the entity has not been archived. pub archived_at: Option>, /// The user that subscribed to receive notifications. - pub subscriber: Option>, + pub subscriber: Option, /// The customer associated with the notification subscription. - pub customer: Option>, + pub customer: Option, /// The contextual custom view associated with the notification subscription. - pub custom_view: Option>, + pub custom_view: Option, /// The cycle subscribed to. - pub cycle: Option>, + pub cycle: Option, /// The contextual label view associated with the notification subscription. - pub label: Option>, + pub label: Option, /// The contextual project view associated with the notification subscription. - pub project: Option>, + pub project: Option, /// The contextual initiative view associated with the notification subscription. - pub initiative: Option>, + pub initiative: Option, /// The team associated with the notification subscription. - pub team: Option>, + pub team: Option, /// The user view associated with the notification subscription. - pub user: Option>, + pub user: Option, /// The type of view to which the notification subscription context is associated with. pub context_view_type: Option, /// The type of user view to which the notification subscription context is associated with. @@ -2052,7 +2052,7 @@ pub struct CyclePayload { /// The identifier of the last sync operation. pub last_sync_id: Option, /// The Cycle that was created or updated. - pub cycle: Option>, + pub cycle: Option, /// Whether the operation was successful. pub success: Option, } @@ -2176,7 +2176,7 @@ pub struct Document { /// The order of the item in the resources list. pub sort_order: Option, /// Comments associated with the document. - pub comments: Option>, + pub comments: Option, /// The documents content in markdown format. pub content: Option, /// `Internal` The documents content as YJS state. @@ -2202,7 +2202,7 @@ pub struct DocumentArchivePayload { /// Whether the operation was successful. pub success: Option, /// The archived/unarchived entity. Null if entity was deleted. - pub entity: Option>, + pub entity: Option, } impl GraphQLFields for DocumentArchivePayload { type FullType = Self; @@ -2213,9 +2213,9 @@ impl GraphQLFields for DocumentArchivePayload { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct DocumentConnection { - pub edges: Option>>, - pub nodes: Option>>, - pub page_info: Option>, + pub edges: Option>, + pub nodes: Option>, + pub page_info: Option, } impl GraphQLFields for DocumentConnection { type FullType = Self; @@ -2259,9 +2259,9 @@ pub struct DocumentContent { /// The time at which the document content was restored from a previous version. pub restored_at: Option>, /// Comments associated with the document content. - pub comments: Option>, + pub comments: Option, /// `ALPHA` The histories of the document content. - pub history: Option>, + pub history: Option, } impl GraphQLFields for DocumentContent { type FullType = Self; @@ -2283,7 +2283,7 @@ pub struct DocumentContentHistory { /// The time at which the entity was archived. Null if the entity has not been archived. pub archived_at: Option>, /// The document content that this history item is associated with. - pub document_content: Option>, + pub document_content: Option, /// `Internal` The document content as a Prosemirror document. pub content_data: Option, /// IDs of actors whose edits went into this history item. @@ -2300,9 +2300,9 @@ impl GraphQLFields for DocumentContentHistory { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct DocumentContentHistoryConnection { - pub edges: Option>>, - pub nodes: Option>>, - pub page_info: Option>, + pub edges: Option>, + pub nodes: Option>, + pub page_info: Option, } impl GraphQLFields for DocumentContentHistoryConnection { type FullType = Self; @@ -2313,7 +2313,7 @@ impl GraphQLFields for DocumentContentHistoryConnection { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct DocumentContentHistoryEdge { - pub node: Option>, + pub node: Option, /// Used in `before` and `after` args pub cursor: Option, } @@ -2327,7 +2327,7 @@ impl GraphQLFields for DocumentContentHistoryEdge { #[serde(rename_all = "camelCase", default)] pub struct DocumentContentHistoryPayload { /// The document content history entries. - pub history: Option>>, + pub history: Option>, /// Whether the operation was successful. pub success: Option, } @@ -2360,7 +2360,7 @@ impl GraphQLFields for DocumentContentHistoryType { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct DocumentEdge { - pub node: Option>, + pub node: Option, /// Used in `before` and `after` args pub cursor: Option, } @@ -2392,11 +2392,11 @@ pub struct DocumentNotification { /// Notification type. pub r#type: Option, /// The user that caused the notification. - pub actor: Option>, + pub actor: Option, /// The external user that caused the notification. - pub external_user_actor: Option>, + pub external_user_actor: Option, /// The user that received the notification. - pub user: Option>, + pub user: Option, /// The time at when the user marked the notification as read. Null, if the the user hasn't read the notification pub read_at: Option>, /// The time at when an email reminder for this notification was sent to the user. Null, if no email @@ -2435,7 +2435,7 @@ pub struct DocumentNotification { /// `Internal` Priority of the notification with the same grouping key. Higher number means higher priority. If priority is the same, notifications should be sorted by `createdAt`. pub grouping_priority: Option, /// The bot that caused the notification. - pub bot_actor: Option>, + pub bot_actor: Option, /// Related document ID. pub document_id: Option, } @@ -2452,7 +2452,7 @@ pub struct DocumentPayload { /// The identifier of the last sync operation. pub last_sync_id: Option, /// The document that was created or updated. - pub document: Option>, + pub document: Option, /// Whether the operation was successful. pub success: Option, } @@ -2465,11 +2465,11 @@ impl GraphQLFields for DocumentPayload { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct DocumentSearchPayload { - pub edges: Option>>, - pub nodes: Option>>, - pub page_info: Option>, + pub edges: Option>, + pub nodes: Option>, + pub page_info: Option, /// Archived entities matching the search term along with all their dependencies. - pub archive_payload: Option>, + pub archive_payload: Option, /// Total number of results for query without filters applied. pub total_count: Option, } @@ -2498,25 +2498,25 @@ pub struct DocumentSearchResult { /// The color of the icon. pub color: Option, /// The user who created the document. - pub creator: Option>, + pub creator: Option, /// The user who last updated the document. - pub updated_by: Option>, + pub updated_by: Option, /// The project that the document is associated with. - pub project: Option>, + pub project: Option, /// The initiative that the document is associated with. - pub initiative: Option>, + pub initiative: Option, /// `Internal` The team that the document is associated with. - pub team: Option>, + pub team: Option, /// The issue that the document is associated with. - pub issue: Option>, + pub issue: Option, /// `Internal` The release that the document is associated with. - pub release: Option>, + pub release: Option, /// `Internal` The cycle that the document is associated with. - pub cycle: Option>, + pub cycle: Option, /// The document's unique URL slug. pub slug_id: Option, /// The last template that was applied to this document. - pub last_applied_template: Option>, + pub last_applied_template: Option