Skip to main content

lineark_sdk/generated/
types.rs

1//! GraphQL object types.
2//!
3//! Generated by lineark-codegen — do not edit.
4use super::enums::*;
5use crate::field_selection::GraphQLFields;
6use serde::{Deserialize, Serialize};
7/// A bot actor representing a non-human entity that performed an action, such as an integration (GitHub, Slack, Zendesk), an AI assistant, or an automated workflow. Bot actors are displayed in activity feeds and history to indicate when changes were made by applications rather than users.
8#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9#[serde(rename_all = "camelCase", default)]
10pub struct ActorBot {
11    /// A unique identifier for the bot actor.
12    pub id: Option<String>,
13    /// The source type of the bot, identifying the application or integration (e.g., 'github', 'slack', 'workflow', 'ai').
14    pub r#type: Option<String>,
15    /// A more specific classification within the bot type, providing additional context about the integration or application variant.
16    pub sub_type: Option<String>,
17    /// The display name of the bot.
18    pub name: Option<String>,
19    /// The display name of the external user on behalf of whom the bot acted. Shown when an integration action was triggered by a specific person in the external system.
20    pub user_display_name: Option<String>,
21    /// A URL pointing to the avatar image representing this bot, typically the integration's logo or icon.
22    pub avatar_url: Option<String>,
23}
24impl GraphQLFields for ActorBot {
25    type FullType = Self;
26    fn selection() -> String {
27        "id type subType name userDisplayName avatarUrl".into()
28    }
29}
30/// An activity performed by or directed at an AI coding agent during a session. Activities represent the observable steps of an agent's work, including thoughts, actions (tool calls), responses, prompts from users, errors, and elicitation requests. Each activity belongs to an agent session and is associated with the user who initiated it.
31#[derive(Debug, Clone, Default, Serialize, Deserialize)]
32#[serde(rename_all = "camelCase", default)]
33pub struct AgentActivity {
34    /// The unique identifier of the entity.
35    pub id: Option<String>,
36    /// The time at which the entity was created.
37    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
38    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
39    /// been updated after creation.
40    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
41    /// The time at which the entity was archived. Null if the entity has not been archived.
42    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
43    /// The agent session this activity belongs to.
44    pub agent_session: Option<AgentSession>,
45    /// The source comment this activity is linked to. Null if the activity was not triggered by a comment.
46    pub source_comment: Option<Comment>,
47    /// The user who created this agent activity.
48    pub user: Option<User>,
49    /// Metadata about the external source that created this agent activity.
50    pub source_metadata: Option<serde_json::Value>,
51    /// An optional modifier that provides additional instructions on how the activity should be interpreted.
52    pub signal: Option<AgentActivitySignal>,
53    /// Whether the activity is ephemeral, and should disappear after the next agent activity.
54    pub ephemeral: Option<bool>,
55    /// `Internal` Metadata about user-provided contextual information for this agent activity.
56    pub contextual_metadata: Option<serde_json::Value>,
57    /// Metadata about this agent activity's signal.
58    pub signal_metadata: Option<serde_json::Value>,
59}
60impl GraphQLFields for AgentActivity {
61    type FullType = Self;
62    fn selection() -> String {
63        "id createdAt updatedAt archivedAt sourceMetadata signal ephemeral contextualMetadata signalMetadata"
64            .into()
65    }
66}
67/// Content for an action activity (tool call or action).
68#[derive(Debug, Clone, Default, Serialize, Deserialize)]
69#[serde(rename_all = "camelCase", default)]
70pub struct AgentActivityActionContent {
71    /// The type of activity.
72    pub r#type: Option<AgentActivityType>,
73    /// The action being performed.
74    pub action: Option<String>,
75    /// The parameters for the action, e.g. a file path, a keyword, etc.
76    pub parameter: Option<String>,
77    /// The result of the action in Markdown format.
78    pub result: Option<String>,
79    /// `Internal` The result content as ProseMirror document.
80    pub result_data: Option<serde_json::Value>,
81}
82impl GraphQLFields for AgentActivityActionContent {
83    type FullType = Self;
84    fn selection() -> String {
85        "type action parameter result resultData".into()
86    }
87}
88#[derive(Debug, Clone, Default, Serialize, Deserialize)]
89#[serde(rename_all = "camelCase", default)]
90pub struct AgentActivityConnection {
91    pub edges: Option<Vec<AgentActivityEdge>>,
92    pub nodes: Option<Vec<AgentActivity>>,
93    pub page_info: Option<PageInfo>,
94}
95impl GraphQLFields for AgentActivityConnection {
96    type FullType = Self;
97    fn selection() -> String {
98        "".into()
99    }
100}
101#[derive(Debug, Clone, Default, Serialize, Deserialize)]
102#[serde(rename_all = "camelCase", default)]
103pub struct AgentActivityEdge {
104    pub node: Option<AgentActivity>,
105    /// Used in `before` and `after` args
106    pub cursor: Option<String>,
107}
108impl GraphQLFields for AgentActivityEdge {
109    type FullType = Self;
110    fn selection() -> String {
111        "cursor".into()
112    }
113}
114/// Content for an elicitation activity.
115#[derive(Debug, Clone, Default, Serialize, Deserialize)]
116#[serde(rename_all = "camelCase", default)]
117pub struct AgentActivityElicitationContent {
118    /// The type of activity.
119    pub r#type: Option<AgentActivityType>,
120    /// The elicitation message in Markdown format.
121    pub body: Option<String>,
122    /// `Internal` The elicitation content as ProseMirror document.
123    pub body_data: Option<serde_json::Value>,
124}
125impl GraphQLFields for AgentActivityElicitationContent {
126    type FullType = Self;
127    fn selection() -> String {
128        "type body bodyData".into()
129    }
130}
131/// Content for an error activity.
132#[derive(Debug, Clone, Default, Serialize, Deserialize)]
133#[serde(rename_all = "camelCase", default)]
134pub struct AgentActivityErrorContent {
135    /// The type of activity.
136    pub r#type: Option<AgentActivityType>,
137    /// The error message in Markdown format.
138    pub body: Option<String>,
139    /// `Internal` The error content as ProseMirror document.
140    pub body_data: Option<serde_json::Value>,
141}
142impl GraphQLFields for AgentActivityErrorContent {
143    type FullType = Self;
144    fn selection() -> String {
145        "type body bodyData".into()
146    }
147}
148/// The result of an agent activity mutation.
149#[derive(Debug, Clone, Default, Serialize, Deserialize)]
150#[serde(rename_all = "camelCase", default)]
151pub struct AgentActivityPayload {
152    /// The identifier of the last sync operation.
153    pub last_sync_id: Option<f64>,
154    /// The agent activity that was created or updated.
155    pub agent_activity: Option<AgentActivity>,
156    /// Whether the operation was successful.
157    pub success: Option<bool>,
158}
159impl GraphQLFields for AgentActivityPayload {
160    type FullType = Self;
161    fn selection() -> String {
162        "lastSyncId success".into()
163    }
164}
165/// Content for a prompt activity.
166#[derive(Debug, Clone, Default, Serialize, Deserialize)]
167#[serde(rename_all = "camelCase", default)]
168pub struct AgentActivityPromptContent {
169    /// The type of activity.
170    pub r#type: Option<AgentActivityType>,
171    /// A message requesting additional information or action from user.
172    pub body: Option<String>,
173    /// `Internal` The prompt content as ProseMirror document.
174    pub body_data: Option<serde_json::Value>,
175}
176impl GraphQLFields for AgentActivityPromptContent {
177    type FullType = Self;
178    fn selection() -> String {
179        "type body bodyData".into()
180    }
181}
182/// Content for a response activity.
183#[derive(Debug, Clone, Default, Serialize, Deserialize)]
184#[serde(rename_all = "camelCase", default)]
185pub struct AgentActivityResponseContent {
186    /// The type of activity.
187    pub r#type: Option<AgentActivityType>,
188    /// The response content in Markdown format.
189    pub body: Option<String>,
190    /// `Internal` The response content as ProseMirror document.
191    pub body_data: Option<serde_json::Value>,
192}
193impl GraphQLFields for AgentActivityResponseContent {
194    type FullType = Self;
195    fn selection() -> String {
196        "type body bodyData".into()
197    }
198}
199/// Content for a thought activity.
200#[derive(Debug, Clone, Default, Serialize, Deserialize)]
201#[serde(rename_all = "camelCase", default)]
202pub struct AgentActivityThoughtContent {
203    /// The type of activity.
204    pub r#type: Option<AgentActivityType>,
205    /// The thought content in Markdown format.
206    pub body: Option<String>,
207    /// `Internal` The thought content as ProseMirror document.
208    pub body_data: Option<serde_json::Value>,
209}
210impl GraphQLFields for AgentActivityThoughtContent {
211    type FullType = Self;
212    fn selection() -> String {
213        "type body bodyData".into()
214    }
215}
216/// A session representing an AI coding agent's work on an issue or conversation. Agent sessions track the lifecycle of an agent's engagement, from creation through active work to completion or dismissal. Each session is associated with an agent user (the bot), optionally a human creator, an issue, and a comment thread where the agent posts updates. Sessions contain activities that record the agent's observable steps and can be linked to pull requests created during the work.
217#[derive(Debug, Clone, Default, Serialize, Deserialize)]
218#[serde(rename_all = "camelCase", default)]
219pub struct AgentSession {
220    /// The unique identifier of the entity.
221    pub id: Option<String>,
222    /// The time at which the entity was created.
223    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
224    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
225    /// been updated after creation.
226    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
227    /// The time at which the entity was archived. Null if the entity has not been archived.
228    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
229    /// The human user responsible for the agent session. Null if the session was initiated via automation or by an agent user, with no responsible human user.
230    pub creator: Option<Box<User>>,
231    /// The agent user that is associated with this agent session.
232    pub app_user: Option<Box<User>>,
233    /// The comment this agent session is associated with.
234    pub comment: Option<Box<Comment>>,
235    /// The comment that this agent session was spawned from, if from a different thread.
236    pub source_comment: Option<Box<Comment>>,
237    /// The issue this agent session is associated with.
238    pub issue: Option<Box<Issue>>,
239    /// The agent session's unique URL slug.
240    pub slug_id: Option<String>,
241    /// The current status of the agent session, such as pending, active, awaiting input, complete, error, or stale.
242    pub status: Option<AgentSessionStatus>,
243    /// The time the agent session transitioned to active status and began work. Null if the session has not yet started.
244    pub started_at: Option<chrono::DateTime<chrono::Utc>>,
245    /// The time the agent session completed. Null if the session is still in progress or was dismissed before completion.
246    pub ended_at: Option<chrono::DateTime<chrono::Utc>>,
247    /// The time a user dismissed this agent session. When dismissed, the agent is removed as delegate from the associated issue. Null if the session has not been dismissed.
248    pub dismissed_at: Option<chrono::DateTime<chrono::Utc>>,
249    /// The user who dismissed the agent session. Automatically set when dismissedAt is updated. Null if the session has not been dismissed.
250    pub dismissed_by: Option<Box<User>>,
251    /// Activities associated with this agent session.
252    pub activities: Option<AgentActivityConnection>,
253    /// The URL of an external agent-hosted page associated with this session.
254    pub external_link: Option<String>,
255    /// A human-readable summary of the work performed in this session. Null if no summary has been generated yet.
256    pub summary: Option<String>,
257    /// Metadata about the external source that created this agent session.
258    pub source_metadata: Option<serde_json::Value>,
259    /// A dynamically updated plan describing the agent's execution strategy, including steps to be taken and their current status. Updated as the agent progresses through its work. Null if no plan has been set.
260    pub plan: Option<serde_json::Value>,
261    /// The entity contexts this session is related to, such as issues or projects referenced in direct chat sessions. Used to provide contextual awareness to the agent.
262    pub context: Option<serde_json::Value>,
263    /// `DEPRECATED` The type of the agent session.
264    pub r#type: Option<AgentSessionType>,
265    /// The URL to the agent session page in the Linear app. Null for direct chat sessions without an associated issue.
266    pub url: Option<String>,
267    /// `Internal` Pull requests associated with this agent session.
268    pub pull_requests: Option<AgentSessionToPullRequestConnection>,
269    /// External links associated with this session.
270    pub external_links: Option<Vec<AgentSessionExternalLink>>,
271    /// URLs of external resources associated with this session.
272    pub external_urls: Option<serde_json::Value>,
273}
274impl GraphQLFields for AgentSession {
275    type FullType = Self;
276    fn selection() -> String {
277        "id createdAt updatedAt archivedAt slugId status startedAt endedAt dismissedAt externalLink summary sourceMetadata plan context type url externalUrls"
278            .into()
279    }
280}
281#[derive(Debug, Clone, Default, Serialize, Deserialize)]
282#[serde(rename_all = "camelCase", default)]
283pub struct AgentSessionConnection {
284    pub edges: Option<Vec<AgentSessionEdge>>,
285    pub nodes: Option<Vec<AgentSession>>,
286    pub page_info: Option<PageInfo>,
287}
288impl GraphQLFields for AgentSessionConnection {
289    type FullType = Self;
290    fn selection() -> String {
291        "".into()
292    }
293}
294#[derive(Debug, Clone, Default, Serialize, Deserialize)]
295#[serde(rename_all = "camelCase", default)]
296pub struct AgentSessionEdge {
297    pub node: Option<AgentSession>,
298    /// Used in `before` and `after` args
299    pub cursor: Option<String>,
300}
301impl GraphQLFields for AgentSessionEdge {
302    type FullType = Self;
303    fn selection() -> String {
304        "cursor".into()
305    }
306}
307/// An external link associated with an agent session.
308#[derive(Debug, Clone, Default, Serialize, Deserialize)]
309#[serde(rename_all = "camelCase", default)]
310pub struct AgentSessionExternalLink {
311    /// The URL of the external resource.
312    pub url: Option<String>,
313    /// Label for the link.
314    pub label: Option<String>,
315}
316impl GraphQLFields for AgentSessionExternalLink {
317    type FullType = Self;
318    fn selection() -> String {
319        "url label".into()
320    }
321}
322#[derive(Debug, Clone, Default, Serialize, Deserialize)]
323#[serde(rename_all = "camelCase", default)]
324pub struct AgentSessionPayload {
325    /// The identifier of the last sync operation.
326    pub last_sync_id: Option<f64>,
327    /// Whether the operation was successful.
328    pub success: Option<bool>,
329    /// The agent session that was created or updated.
330    pub agent_session: Option<AgentSession>,
331}
332impl GraphQLFields for AgentSessionPayload {
333    type FullType = Self;
334    fn selection() -> String {
335        "lastSyncId success".into()
336    }
337}
338/// A link between an agent session and a pull request created or associated during that session. This join entity tracks which pull requests were produced by or connected to a coding agent's work session, and handles backfilling links when pull requests are synced after the agent has already recorded the URL.
339#[derive(Debug, Clone, Default, Serialize, Deserialize)]
340#[serde(rename_all = "camelCase", default)]
341pub struct AgentSessionToPullRequest {
342    /// The unique identifier of the entity.
343    pub id: Option<String>,
344    /// The time at which the entity was created.
345    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
346    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
347    /// been updated after creation.
348    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
349    /// The time at which the entity was archived. Null if the entity has not been archived.
350    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
351    /// The pull request that the agent session is associated with.
352    pub pull_request: Option<PullRequest>,
353    /// The agent session that the pull request is associated with.
354    pub agent_session: Option<AgentSession>,
355}
356impl GraphQLFields for AgentSessionToPullRequest {
357    type FullType = Self;
358    fn selection() -> String {
359        "id createdAt updatedAt archivedAt".into()
360    }
361}
362#[derive(Debug, Clone, Default, Serialize, Deserialize)]
363#[serde(rename_all = "camelCase", default)]
364pub struct AgentSessionToPullRequestConnection {
365    pub edges: Option<Vec<AgentSessionToPullRequestEdge>>,
366    pub nodes: Option<Vec<AgentSessionToPullRequest>>,
367    pub page_info: Option<PageInfo>,
368}
369impl GraphQLFields for AgentSessionToPullRequestConnection {
370    type FullType = Self;
371    fn selection() -> String {
372        "".into()
373    }
374}
375#[derive(Debug, Clone, Default, Serialize, Deserialize)]
376#[serde(rename_all = "camelCase", default)]
377pub struct AgentSessionToPullRequestEdge {
378    pub node: Option<AgentSessionToPullRequest>,
379    /// Used in `before` and `after` args
380    pub cursor: Option<String>,
381}
382impl GraphQLFields for AgentSessionToPullRequestEdge {
383    type FullType = Self;
384    fn selection() -> String {
385        "cursor".into()
386    }
387}
388/// `Internal` A conversation between a user and the Linear AI assistant. Each conversation tracks the full thread state, context references (issues, projects, documents, etc.), and conversation parts (prompts, text responses, tool calls, widgets). Conversations can originate from direct chat, issue comments, Slack threads, Microsoft Teams, or automated workflows.
389#[derive(Debug, Clone, Default, Serialize, Deserialize)]
390#[serde(rename_all = "camelCase", default)]
391pub struct AiConversation {
392    /// The unique identifier of the entity.
393    pub id: Option<String>,
394    /// The time at which the entity was created.
395    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
396    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
397    /// been updated after creation.
398    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
399    /// The time at which the entity was archived. Null if the entity has not been archived.
400    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
401    /// The user who the conversation belongs to.
402    pub user: Option<User>,
403    /// The entity contexts this conversation is related to, such as issues, projects, or documents that provide context for the AI assistant.
404    pub context: Option<serde_json::Value>,
405    /// A summary of the conversation.
406    pub summary: Option<String>,
407    /// The conversation's unique URL slug.
408    pub slug_id: Option<String>,
409    /// `Internal` The workflow definition that created this conversation.
410    pub workflow_definition: Option<WorkflowDefinition>,
411    /// The source from which this conversation was initiated, such as direct chat, an issue comment, a Slack thread, Microsoft Teams, or a workflow automation.
412    pub initial_source: Option<AiConversationInitialSource>,
413    /// The current processing status of the conversation, indicating whether the AI is actively generating a response or has completed its turn.
414    pub status: Option<AiConversationStatus>,
415    /// The time when the user marked the conversation as read. Null if the user hasn't read the conversation.
416    pub read_at: Option<chrono::DateTime<chrono::Utc>>,
417    /// The iteration ID when this conversation is part of an agentic workflow. Used to track multi-step workflow executions. Null for non-workflow conversations.
418    pub iteration_id: Option<String>,
419    /// `Internal` The log ID of the AI response.
420    pub eval_log_id: Option<String>,
421}
422impl GraphQLFields for AiConversation {
423    type FullType = Self;
424    fn selection() -> String {
425        "id createdAt updatedAt archivedAt context summary slugId initialSource status readAt iterationId evalLogId"
426            .into()
427    }
428}
429#[derive(Debug, Clone, Default, Serialize, Deserialize)]
430#[serde(rename_all = "camelCase", default)]
431pub struct AiConversationCodeIntelligenceToolCall {
432    /// The name of the tool that was called.
433    pub name: Option<AiConversationTool>,
434    pub display_info: Option<AiConversationToolDisplayInfo>,
435    /// The arguments of the tool call.
436    pub raw_args: Option<serde_json::Value>,
437    /// The result of the tool call.
438    pub raw_result: Option<serde_json::Value>,
439    /// The arguments to the tool call.
440    pub args: Option<AiConversationCodeIntelligenceToolCallArgs>,
441}
442impl GraphQLFields for AiConversationCodeIntelligenceToolCall {
443    type FullType = Self;
444    fn selection() -> String {
445        "name rawArgs rawResult".into()
446    }
447}
448#[derive(Debug, Clone, Default, Serialize, Deserialize)]
449#[serde(rename_all = "camelCase", default)]
450pub struct AiConversationCodeIntelligenceToolCallArgs {
451    pub question: Option<String>,
452}
453impl GraphQLFields for AiConversationCodeIntelligenceToolCallArgs {
454    type FullType = Self;
455    fn selection() -> String {
456        "question".into()
457    }
458}
459#[derive(Debug, Clone, Default, Serialize, Deserialize)]
460#[serde(rename_all = "camelCase", default)]
461pub struct AiConversationCreateEntityToolCall {
462    /// The name of the tool that was called.
463    pub name: Option<AiConversationTool>,
464    pub display_info: Option<AiConversationToolDisplayInfo>,
465    /// The arguments of the tool call.
466    pub raw_args: Option<serde_json::Value>,
467    /// The result of the tool call.
468    pub raw_result: Option<serde_json::Value>,
469    /// The arguments to the tool call.
470    pub args: Option<AiConversationCreateEntityToolCallArgs>,
471}
472impl GraphQLFields for AiConversationCreateEntityToolCall {
473    type FullType = Self;
474    fn selection() -> String {
475        "name rawArgs rawResult".into()
476    }
477}
478#[derive(Debug, Clone, Default, Serialize, Deserialize)]
479#[serde(rename_all = "camelCase", default)]
480pub struct AiConversationCreateEntityToolCallArgs {
481    pub r#type: Option<String>,
482    pub count: Option<f64>,
483}
484impl GraphQLFields for AiConversationCreateEntityToolCallArgs {
485    type FullType = Self;
486    fn selection() -> String {
487        "type count".into()
488    }
489}
490#[derive(Debug, Clone, Default, Serialize, Deserialize)]
491#[serde(rename_all = "camelCase", default)]
492pub struct AiConversationDeleteEntityToolCall {
493    /// The name of the tool that was called.
494    pub name: Option<AiConversationTool>,
495    pub display_info: Option<AiConversationToolDisplayInfo>,
496    /// The arguments of the tool call.
497    pub raw_args: Option<serde_json::Value>,
498    /// The result of the tool call.
499    pub raw_result: Option<serde_json::Value>,
500    /// The arguments to the tool call.
501    pub args: Option<AiConversationDeleteEntityToolCallArgs>,
502}
503impl GraphQLFields for AiConversationDeleteEntityToolCall {
504    type FullType = Self;
505    fn selection() -> String {
506        "name rawArgs rawResult".into()
507    }
508}
509#[derive(Debug, Clone, Default, Serialize, Deserialize)]
510#[serde(rename_all = "camelCase", default)]
511pub struct AiConversationDeleteEntityToolCallArgs {
512    pub entity: Option<AiConversationSearchEntitiesToolCallResultEntities>,
513}
514impl GraphQLFields for AiConversationDeleteEntityToolCallArgs {
515    type FullType = Self;
516    fn selection() -> String {
517        "".into()
518    }
519}
520#[derive(Debug, Clone, Default, Serialize, Deserialize)]
521#[serde(rename_all = "camelCase", default)]
522pub struct AiConversationEntityCardWidget {
523    /// The name of the widget.
524    pub name: Option<AiConversationWidgetName>,
525    /// The arguments of the widget.
526    pub raw_args: Option<serde_json::Value>,
527    /// Display information for the widget, including ProseMirror and Markdown representations.
528    pub display_info: Option<AiConversationWidgetDisplayInfo>,
529    /// The arguments to the widget.
530    pub args: Option<AiConversationEntityCardWidgetArgs>,
531}
532impl GraphQLFields for AiConversationEntityCardWidget {
533    type FullType = Self;
534    fn selection() -> String {
535        "name rawArgs".into()
536    }
537}
538#[derive(Debug, Clone, Default, Serialize, Deserialize)]
539#[serde(rename_all = "camelCase", default)]
540pub struct AiConversationEntityCardWidgetArgs {
541    /// `Internal` The entity type
542    pub r#type: Option<AiConversationEntityCardWidgetArgsType>,
543    /// The UUID of the entity to display
544    pub id: Option<String>,
545    /// @deprecated Optional note to display about the entity
546    pub note: Option<String>,
547    /// The action performed on the entity (leave empty if just found)
548    pub action: Option<AiConversationEntityCardWidgetArgsAction>,
549}
550impl GraphQLFields for AiConversationEntityCardWidgetArgs {
551    type FullType = Self;
552    fn selection() -> String {
553        "type id note action".into()
554    }
555}
556#[derive(Debug, Clone, Default, Serialize, Deserialize)]
557#[serde(rename_all = "camelCase", default)]
558pub struct AiConversationEntityListWidget {
559    /// The name of the widget.
560    pub name: Option<AiConversationWidgetName>,
561    /// The arguments of the widget.
562    pub raw_args: Option<serde_json::Value>,
563    /// Display information for the widget, including ProseMirror and Markdown representations.
564    pub display_info: Option<AiConversationWidgetDisplayInfo>,
565    /// The arguments to the widget.
566    pub args: Option<AiConversationEntityListWidgetArgs>,
567}
568impl GraphQLFields for AiConversationEntityListWidget {
569    type FullType = Self;
570    fn selection() -> String {
571        "name rawArgs".into()
572    }
573}
574#[derive(Debug, Clone, Default, Serialize, Deserialize)]
575#[serde(rename_all = "camelCase", default)]
576pub struct AiConversationEntityListWidgetArgs {
577    /// Total number of entities in the list
578    pub count: Option<f64>,
579    pub entities: Option<Vec<AiConversationEntityListWidgetArgsEntities>>,
580    /// The action performed on the entities (leave empty if just found)
581    pub action: Option<AiConversationEntityListWidgetArgsAction>,
582}
583impl GraphQLFields for AiConversationEntityListWidgetArgs {
584    type FullType = Self;
585    fn selection() -> String {
586        "count action".into()
587    }
588}
589#[derive(Debug, Clone, Default, Serialize, Deserialize)]
590#[serde(rename_all = "camelCase", default)]
591pub struct AiConversationEntityListWidgetArgsEntities {
592    /// `Internal` The entity type
593    pub r#type: Option<AiConversationEntityListWidgetArgsEntitiesType>,
594    /// Entity UUID
595    pub id: Option<String>,
596    /// @deprecated Optional note to display about the entity
597    pub note: Option<String>,
598}
599impl GraphQLFields for AiConversationEntityListWidgetArgsEntities {
600    type FullType = Self;
601    fn selection() -> String {
602        "type id note".into()
603    }
604}
605#[derive(Debug, Clone, Default, Serialize, Deserialize)]
606#[serde(rename_all = "camelCase", default)]
607pub struct AiConversationGetMicrosoftTeamsConversationHistoryToolCall {
608    /// The name of the tool that was called.
609    pub name: Option<AiConversationTool>,
610    pub display_info: Option<AiConversationToolDisplayInfo>,
611    /// The arguments of the tool call.
612    pub raw_args: Option<serde_json::Value>,
613    /// The result of the tool call.
614    pub raw_result: Option<serde_json::Value>,
615}
616impl GraphQLFields for AiConversationGetMicrosoftTeamsConversationHistoryToolCall {
617    type FullType = Self;
618    fn selection() -> String {
619        "name rawArgs rawResult".into()
620    }
621}
622#[derive(Debug, Clone, Default, Serialize, Deserialize)]
623#[serde(rename_all = "camelCase", default)]
624pub struct AiConversationGetPullRequestDiffToolCall {
625    /// The name of the tool that was called.
626    pub name: Option<AiConversationTool>,
627    pub display_info: Option<AiConversationToolDisplayInfo>,
628    /// The arguments of the tool call.
629    pub raw_args: Option<serde_json::Value>,
630    /// The result of the tool call.
631    pub raw_result: Option<serde_json::Value>,
632    /// The arguments to the tool call.
633    pub args: Option<AiConversationGetPullRequestDiffToolCallArgs>,
634}
635impl GraphQLFields for AiConversationGetPullRequestDiffToolCall {
636    type FullType = Self;
637    fn selection() -> String {
638        "name rawArgs rawResult".into()
639    }
640}
641#[derive(Debug, Clone, Default, Serialize, Deserialize)]
642#[serde(rename_all = "camelCase", default)]
643pub struct AiConversationGetPullRequestDiffToolCallArgs {
644    pub entity: Option<AiConversationSearchEntitiesToolCallResultEntities>,
645}
646impl GraphQLFields for AiConversationGetPullRequestDiffToolCallArgs {
647    type FullType = Self;
648    fn selection() -> String {
649        "".into()
650    }
651}
652#[derive(Debug, Clone, Default, Serialize, Deserialize)]
653#[serde(rename_all = "camelCase", default)]
654pub struct AiConversationGetPullRequestFileToolCall {
655    /// The name of the tool that was called.
656    pub name: Option<AiConversationTool>,
657    pub display_info: Option<AiConversationToolDisplayInfo>,
658    /// The arguments of the tool call.
659    pub raw_args: Option<serde_json::Value>,
660    /// The result of the tool call.
661    pub raw_result: Option<serde_json::Value>,
662    /// The arguments to the tool call.
663    pub args: Option<AiConversationGetPullRequestFileToolCallArgs>,
664}
665impl GraphQLFields for AiConversationGetPullRequestFileToolCall {
666    type FullType = Self;
667    fn selection() -> String {
668        "name rawArgs rawResult".into()
669    }
670}
671#[derive(Debug, Clone, Default, Serialize, Deserialize)]
672#[serde(rename_all = "camelCase", default)]
673pub struct AiConversationGetPullRequestFileToolCallArgs {
674    pub entity: Option<AiConversationSearchEntitiesToolCallResultEntities>,
675    pub path: Option<String>,
676}
677impl GraphQLFields for AiConversationGetPullRequestFileToolCallArgs {
678    type FullType = Self;
679    fn selection() -> String {
680        "path".into()
681    }
682}
683#[derive(Debug, Clone, Default, Serialize, Deserialize)]
684#[serde(rename_all = "camelCase", default)]
685pub struct AiConversationGetSlackConversationHistoryToolCall {
686    /// The name of the tool that was called.
687    pub name: Option<AiConversationTool>,
688    pub display_info: Option<AiConversationToolDisplayInfo>,
689    /// The arguments of the tool call.
690    pub raw_args: Option<serde_json::Value>,
691    /// The result of the tool call.
692    pub raw_result: Option<serde_json::Value>,
693}
694impl GraphQLFields for AiConversationGetSlackConversationHistoryToolCall {
695    type FullType = Self;
696    fn selection() -> String {
697        "name rawArgs rawResult".into()
698    }
699}
700#[derive(Debug, Clone, Default, Serialize, Deserialize)]
701#[serde(rename_all = "camelCase", default)]
702pub struct AiConversationHandoffToCodingSessionToolCall {
703    /// The name of the tool that was called.
704    pub name: Option<AiConversationTool>,
705    pub display_info: Option<AiConversationToolDisplayInfo>,
706    /// The arguments of the tool call.
707    pub raw_args: Option<serde_json::Value>,
708    /// The result of the tool call.
709    pub raw_result: Option<serde_json::Value>,
710    /// The arguments to the tool call.
711    pub args: Option<AiConversationHandoffToCodingSessionToolCallArgs>,
712}
713impl GraphQLFields for AiConversationHandoffToCodingSessionToolCall {
714    type FullType = Self;
715    fn selection() -> String {
716        "name rawArgs rawResult".into()
717    }
718}
719#[derive(Debug, Clone, Default, Serialize, Deserialize)]
720#[serde(rename_all = "camelCase", default)]
721pub struct AiConversationHandoffToCodingSessionToolCallArgs {
722    pub entity: Option<AiConversationSearchEntitiesToolCallResultEntities>,
723    pub instructions: Option<String>,
724}
725impl GraphQLFields for AiConversationHandoffToCodingSessionToolCallArgs {
726    type FullType = Self;
727    fn selection() -> String {
728        "instructions".into()
729    }
730}
731#[derive(Debug, Clone, Default, Serialize, Deserialize)]
732#[serde(rename_all = "camelCase", default)]
733pub struct AiConversationInvokeMcpToolToolCall {
734    /// The name of the tool that was called.
735    pub name: Option<AiConversationTool>,
736    pub display_info: Option<AiConversationToolDisplayInfo>,
737    /// The arguments of the tool call.
738    pub raw_args: Option<serde_json::Value>,
739    /// The result of the tool call.
740    pub raw_result: Option<serde_json::Value>,
741    /// The arguments to the tool call.
742    pub args: Option<AiConversationInvokeMcpToolToolCallArgs>,
743}
744impl GraphQLFields for AiConversationInvokeMcpToolToolCall {
745    type FullType = Self;
746    fn selection() -> String {
747        "name rawArgs rawResult".into()
748    }
749}
750#[derive(Debug, Clone, Default, Serialize, Deserialize)]
751#[serde(rename_all = "camelCase", default)]
752pub struct AiConversationInvokeMcpToolToolCallArgs {
753    pub server: Option<AiConversationInvokeMcpToolToolCallArgsServer>,
754    pub tool: Option<AiConversationInvokeMcpToolToolCallArgsTool>,
755}
756impl GraphQLFields for AiConversationInvokeMcpToolToolCallArgs {
757    type FullType = Self;
758    fn selection() -> String {
759        "".into()
760    }
761}
762#[derive(Debug, Clone, Default, Serialize, Deserialize)]
763#[serde(rename_all = "camelCase", default)]
764pub struct AiConversationInvokeMcpToolToolCallArgsServer {
765    pub integration_id: Option<String>,
766    pub name: Option<String>,
767    pub title: Option<String>,
768}
769impl GraphQLFields for AiConversationInvokeMcpToolToolCallArgsServer {
770    type FullType = Self;
771    fn selection() -> String {
772        "integrationId name title".into()
773    }
774}
775#[derive(Debug, Clone, Default, Serialize, Deserialize)]
776#[serde(rename_all = "camelCase", default)]
777pub struct AiConversationInvokeMcpToolToolCallArgsTool {
778    pub name: Option<String>,
779    pub title: Option<String>,
780}
781impl GraphQLFields for AiConversationInvokeMcpToolToolCallArgsTool {
782    type FullType = Self;
783    fn selection() -> String {
784        "name title".into()
785    }
786}
787#[derive(Debug, Clone, Default, Serialize, Deserialize)]
788#[serde(rename_all = "camelCase", default)]
789pub struct AiConversationNavigateToPageToolCall {
790    /// The name of the tool that was called.
791    pub name: Option<AiConversationTool>,
792    pub display_info: Option<AiConversationToolDisplayInfo>,
793    /// The arguments of the tool call.
794    pub raw_args: Option<serde_json::Value>,
795    /// The result of the tool call.
796    pub raw_result: Option<serde_json::Value>,
797    /// The arguments to the tool call.
798    pub args: Option<AiConversationNavigateToPageToolCallArgs>,
799    /// The result of the tool call.
800    pub result: Option<AiConversationNavigateToPageToolCallResult>,
801}
802impl GraphQLFields for AiConversationNavigateToPageToolCall {
803    type FullType = Self;
804    fn selection() -> String {
805        "name rawArgs rawResult".into()
806    }
807}
808#[derive(Debug, Clone, Default, Serialize, Deserialize)]
809#[serde(rename_all = "camelCase", default)]
810pub struct AiConversationNavigateToPageToolCallArgs {
811    pub entity_type: Option<String>,
812    pub identifier: Option<String>,
813}
814impl GraphQLFields for AiConversationNavigateToPageToolCallArgs {
815    type FullType = Self;
816    fn selection() -> String {
817        "entityType identifier".into()
818    }
819}
820#[derive(Debug, Clone, Default, Serialize, Deserialize)]
821#[serde(rename_all = "camelCase", default)]
822pub struct AiConversationNavigateToPageToolCallResult {
823    pub url: Option<String>,
824    pub new_tab: Option<bool>,
825}
826impl GraphQLFields for AiConversationNavigateToPageToolCallResult {
827    type FullType = Self;
828    fn selection() -> String {
829        "url newTab".into()
830    }
831}
832/// Metadata about a part in an AI conversation.
833#[derive(Debug, Clone, Default, Serialize, Deserialize)]
834#[serde(rename_all = "camelCase", default)]
835pub struct AiConversationPartMetadata {
836    /// The turn ID of the part.
837    pub turn_id: Option<String>,
838    /// The eval log ID of the part.
839    pub eval_log_id: Option<String>,
840    /// The time when the part started, as an ISO 8601 string.
841    pub started_at: Option<String>,
842    /// The time when the part ended, as an ISO 8601 string.
843    pub ended_at: Option<String>,
844    /// The phase during which the part was generated.
845    pub phase: Option<AiConversationPartPhase>,
846    /// AI feedback state for this part.
847    pub feedback: Option<serde_json::Value>,
848}
849impl GraphQLFields for AiConversationPartMetadata {
850    type FullType = Self;
851    fn selection() -> String {
852        "turnId evalLogId startedAt endedAt phase feedback".into()
853    }
854}
855/// A prompt part in an AI conversation.
856#[derive(Debug, Clone, Default, Serialize, Deserialize)]
857#[serde(rename_all = "camelCase", default)]
858pub struct AiConversationPromptPart {
859    /// The ID of the part.
860    pub id: Option<String>,
861    /// The type of the part.
862    pub r#type: Option<AiConversationPartType>,
863    /// The metadata of the part.
864    pub metadata: Option<AiConversationPartMetadata>,
865    /// The data of the prompt part.
866    pub body_data: Option<serde_json::Value>,
867    /// The Markdown body of the prompt part.
868    pub body: Option<String>,
869    /// The user who created the prompt part.
870    pub user: Option<User>,
871}
872impl GraphQLFields for AiConversationPromptPart {
873    type FullType = Self;
874    fn selection() -> String {
875        "id type bodyData body".into()
876    }
877}
878#[derive(Debug, Clone, Default, Serialize, Deserialize)]
879#[serde(rename_all = "camelCase", default)]
880pub struct AiConversationQueryActivityToolCall {
881    /// The name of the tool that was called.
882    pub name: Option<AiConversationTool>,
883    pub display_info: Option<AiConversationToolDisplayInfo>,
884    /// The arguments of the tool call.
885    pub raw_args: Option<serde_json::Value>,
886    /// The result of the tool call.
887    pub raw_result: Option<serde_json::Value>,
888    /// The arguments to the tool call.
889    pub args: Option<AiConversationQueryActivityToolCallArgs>,
890}
891impl GraphQLFields for AiConversationQueryActivityToolCall {
892    type FullType = Self;
893    fn selection() -> String {
894        "name rawArgs rawResult".into()
895    }
896}
897#[derive(Debug, Clone, Default, Serialize, Deserialize)]
898#[serde(rename_all = "camelCase", default)]
899pub struct AiConversationQueryActivityToolCallArgs {
900    pub entities: Option<Vec<AiConversationSearchEntitiesToolCallResultEntities>>,
901}
902impl GraphQLFields for AiConversationQueryActivityToolCallArgs {
903    type FullType = Self;
904    fn selection() -> String {
905        "".into()
906    }
907}
908#[derive(Debug, Clone, Default, Serialize, Deserialize)]
909#[serde(rename_all = "camelCase", default)]
910pub struct AiConversationQueryUpdatesToolCall {
911    /// The name of the tool that was called.
912    pub name: Option<AiConversationTool>,
913    pub display_info: Option<AiConversationToolDisplayInfo>,
914    /// The arguments of the tool call.
915    pub raw_args: Option<serde_json::Value>,
916    /// The result of the tool call.
917    pub raw_result: Option<serde_json::Value>,
918    /// The arguments to the tool call.
919    pub args: Option<AiConversationQueryUpdatesToolCallArgs>,
920}
921impl GraphQLFields for AiConversationQueryUpdatesToolCall {
922    type FullType = Self;
923    fn selection() -> String {
924        "name rawArgs rawResult".into()
925    }
926}
927#[derive(Debug, Clone, Default, Serialize, Deserialize)]
928#[serde(rename_all = "camelCase", default)]
929pub struct AiConversationQueryUpdatesToolCallArgs {
930    pub update_type: Option<AiConversationQueryUpdatesToolCallArgsUpdateType>,
931    pub entity: Option<AiConversationSearchEntitiesToolCallResultEntities>,
932}
933impl GraphQLFields for AiConversationQueryUpdatesToolCallArgs {
934    type FullType = Self;
935    fn selection() -> String {
936        "updateType".into()
937    }
938}
939#[derive(Debug, Clone, Default, Serialize, Deserialize)]
940#[serde(rename_all = "camelCase", default)]
941pub struct AiConversationQueryViewToolCall {
942    /// The name of the tool that was called.
943    pub name: Option<AiConversationTool>,
944    pub display_info: Option<AiConversationToolDisplayInfo>,
945    /// The arguments of the tool call.
946    pub raw_args: Option<serde_json::Value>,
947    /// The result of the tool call.
948    pub raw_result: Option<serde_json::Value>,
949    /// The arguments to the tool call.
950    pub args: Option<AiConversationQueryViewToolCallArgs>,
951}
952impl GraphQLFields for AiConversationQueryViewToolCall {
953    type FullType = Self;
954    fn selection() -> String {
955        "name rawArgs rawResult".into()
956    }
957}
958#[derive(Debug, Clone, Default, Serialize, Deserialize)]
959#[serde(rename_all = "camelCase", default)]
960pub struct AiConversationQueryViewToolCallArgs {
961    pub view: Option<AiConversationQueryViewToolCallArgsView>,
962    pub mode: Option<AiConversationQueryViewToolCallArgsMode>,
963    pub filter: Option<String>,
964}
965impl GraphQLFields for AiConversationQueryViewToolCallArgs {
966    type FullType = Self;
967    fn selection() -> String {
968        "mode filter".into()
969    }
970}
971#[derive(Debug, Clone, Default, Serialize, Deserialize)]
972#[serde(rename_all = "camelCase", default)]
973pub struct AiConversationQueryViewToolCallArgsView {
974    pub r#type: Option<String>,
975    pub group: Option<AiConversationSearchEntitiesToolCallResultEntities>,
976    pub predefined_view: Option<String>,
977}
978impl GraphQLFields for AiConversationQueryViewToolCallArgsView {
979    type FullType = Self;
980    fn selection() -> String {
981        "type predefinedView".into()
982    }
983}
984/// A reasoning part in an AI conversation.
985#[derive(Debug, Clone, Default, Serialize, Deserialize)]
986#[serde(rename_all = "camelCase", default)]
987pub struct AiConversationReasoningPart {
988    /// The ID of the part.
989    pub id: Option<String>,
990    /// The type of the part.
991    pub r#type: Option<AiConversationPartType>,
992    /// The metadata of the part.
993    pub metadata: Option<AiConversationPartMetadata>,
994    /// The title of the reasoning part.
995    pub title: Option<String>,
996    /// The data of the reasoning part.
997    pub body_data: Option<serde_json::Value>,
998    /// The Markdown body of the reasoning part.
999    pub body: Option<String>,
1000}
1001impl GraphQLFields for AiConversationReasoningPart {
1002    type FullType = Self;
1003    fn selection() -> String {
1004        "id type title bodyData body".into()
1005    }
1006}
1007#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1008#[serde(rename_all = "camelCase", default)]
1009pub struct AiConversationResearchToolCall {
1010    /// The name of the tool that was called.
1011    pub name: Option<AiConversationTool>,
1012    pub display_info: Option<AiConversationToolDisplayInfo>,
1013    /// The arguments of the tool call.
1014    pub raw_args: Option<serde_json::Value>,
1015    /// The result of the tool call.
1016    pub raw_result: Option<serde_json::Value>,
1017    /// The arguments to the tool call.
1018    pub args: Option<AiConversationResearchToolCallArgs>,
1019    /// The result of the tool call.
1020    pub result: Option<AiConversationResearchToolCallResult>,
1021}
1022impl GraphQLFields for AiConversationResearchToolCall {
1023    type FullType = Self;
1024    fn selection() -> String {
1025        "name rawArgs rawResult".into()
1026    }
1027}
1028#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1029#[serde(rename_all = "camelCase", default)]
1030pub struct AiConversationResearchToolCallArgs {
1031    pub context: Option<String>,
1032    pub query: Option<String>,
1033    pub subjects: Option<Vec<AiConversationSearchEntitiesToolCallResultEntities>>,
1034}
1035impl GraphQLFields for AiConversationResearchToolCallArgs {
1036    type FullType = Self;
1037    fn selection() -> String {
1038        "context query".into()
1039    }
1040}
1041#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1042#[serde(rename_all = "camelCase", default)]
1043pub struct AiConversationResearchToolCallResult {
1044    pub progress_id: Option<String>,
1045}
1046impl GraphQLFields for AiConversationResearchToolCallResult {
1047    type FullType = Self;
1048    fn selection() -> String {
1049        "progressId".into()
1050    }
1051}
1052#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1053#[serde(rename_all = "camelCase", default)]
1054pub struct AiConversationRestoreEntityToolCall {
1055    /// The name of the tool that was called.
1056    pub name: Option<AiConversationTool>,
1057    pub display_info: Option<AiConversationToolDisplayInfo>,
1058    /// The arguments of the tool call.
1059    pub raw_args: Option<serde_json::Value>,
1060    /// The result of the tool call.
1061    pub raw_result: Option<serde_json::Value>,
1062    /// The arguments to the tool call.
1063    pub args: Option<AiConversationRestoreEntityToolCallArgs>,
1064}
1065impl GraphQLFields for AiConversationRestoreEntityToolCall {
1066    type FullType = Self;
1067    fn selection() -> String {
1068        "name rawArgs rawResult".into()
1069    }
1070}
1071#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1072#[serde(rename_all = "camelCase", default)]
1073pub struct AiConversationRestoreEntityToolCallArgs {
1074    pub entity: Option<AiConversationSearchEntitiesToolCallResultEntities>,
1075}
1076impl GraphQLFields for AiConversationRestoreEntityToolCallArgs {
1077    type FullType = Self;
1078    fn selection() -> String {
1079        "".into()
1080    }
1081}
1082#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1083#[serde(rename_all = "camelCase", default)]
1084pub struct AiConversationRetrieveEntitiesToolCall {
1085    /// The name of the tool that was called.
1086    pub name: Option<AiConversationTool>,
1087    pub display_info: Option<AiConversationToolDisplayInfo>,
1088    /// The arguments of the tool call.
1089    pub raw_args: Option<serde_json::Value>,
1090    /// The result of the tool call.
1091    pub raw_result: Option<serde_json::Value>,
1092    /// The arguments to the tool call.
1093    pub args: Option<AiConversationRetrieveEntitiesToolCallArgs>,
1094}
1095impl GraphQLFields for AiConversationRetrieveEntitiesToolCall {
1096    type FullType = Self;
1097    fn selection() -> String {
1098        "name rawArgs rawResult".into()
1099    }
1100}
1101#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1102#[serde(rename_all = "camelCase", default)]
1103pub struct AiConversationRetrieveEntitiesToolCallArgs {
1104    pub entities: Option<Vec<AiConversationSearchEntitiesToolCallResultEntities>>,
1105}
1106impl GraphQLFields for AiConversationRetrieveEntitiesToolCallArgs {
1107    type FullType = Self;
1108    fn selection() -> String {
1109        "".into()
1110    }
1111}
1112#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1113#[serde(rename_all = "camelCase", default)]
1114pub struct AiConversationSearchDocumentationToolCall {
1115    /// The name of the tool that was called.
1116    pub name: Option<AiConversationTool>,
1117    pub display_info: Option<AiConversationToolDisplayInfo>,
1118    /// The arguments of the tool call.
1119    pub raw_args: Option<serde_json::Value>,
1120    /// The result of the tool call.
1121    pub raw_result: Option<serde_json::Value>,
1122}
1123impl GraphQLFields for AiConversationSearchDocumentationToolCall {
1124    type FullType = Self;
1125    fn selection() -> String {
1126        "name rawArgs rawResult".into()
1127    }
1128}
1129#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1130#[serde(rename_all = "camelCase", default)]
1131pub struct AiConversationSearchEntitiesToolCall {
1132    /// The name of the tool that was called.
1133    pub name: Option<AiConversationTool>,
1134    pub display_info: Option<AiConversationToolDisplayInfo>,
1135    /// The arguments of the tool call.
1136    pub raw_args: Option<serde_json::Value>,
1137    /// The result of the tool call.
1138    pub raw_result: Option<serde_json::Value>,
1139    /// The arguments to the tool call.
1140    pub args: Option<AiConversationSearchEntitiesToolCallArgs>,
1141    /// The result of the tool call.
1142    pub result: Option<AiConversationSearchEntitiesToolCallResult>,
1143}
1144impl GraphQLFields for AiConversationSearchEntitiesToolCall {
1145    type FullType = Self;
1146    fn selection() -> String {
1147        "name rawArgs rawResult".into()
1148    }
1149}
1150#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1151#[serde(rename_all = "camelCase", default)]
1152pub struct AiConversationSearchEntitiesToolCallArgs {
1153    pub r#type: Option<String>,
1154    pub queries: Option<Vec<String>>,
1155}
1156impl GraphQLFields for AiConversationSearchEntitiesToolCallArgs {
1157    type FullType = Self;
1158    fn selection() -> String {
1159        "type queries".into()
1160    }
1161}
1162#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1163#[serde(rename_all = "camelCase", default)]
1164pub struct AiConversationSearchEntitiesToolCallResult {
1165    pub entities: Option<Vec<AiConversationSearchEntitiesToolCallResultEntities>>,
1166}
1167impl GraphQLFields for AiConversationSearchEntitiesToolCallResult {
1168    type FullType = Self;
1169    fn selection() -> String {
1170        "".into()
1171    }
1172}
1173#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1174#[serde(rename_all = "camelCase", default)]
1175pub struct AiConversationSearchEntitiesToolCallResultEntities {
1176    pub r#type: Option<String>,
1177    pub id: Option<String>,
1178}
1179impl GraphQLFields for AiConversationSearchEntitiesToolCallResultEntities {
1180    type FullType = Self;
1181    fn selection() -> String {
1182        "type id".into()
1183    }
1184}
1185#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1186#[serde(rename_all = "camelCase", default)]
1187pub struct AiConversationSuggestValuesToolCall {
1188    /// The name of the tool that was called.
1189    pub name: Option<AiConversationTool>,
1190    pub display_info: Option<AiConversationToolDisplayInfo>,
1191    /// The arguments of the tool call.
1192    pub raw_args: Option<serde_json::Value>,
1193    /// The result of the tool call.
1194    pub raw_result: Option<serde_json::Value>,
1195    /// The arguments to the tool call.
1196    pub args: Option<AiConversationSuggestValuesToolCallArgs>,
1197}
1198impl GraphQLFields for AiConversationSuggestValuesToolCall {
1199    type FullType = Self;
1200    fn selection() -> String {
1201        "name rawArgs rawResult".into()
1202    }
1203}
1204#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1205#[serde(rename_all = "camelCase", default)]
1206pub struct AiConversationSuggestValuesToolCallArgs {
1207    pub field: Option<String>,
1208    pub query: Option<String>,
1209}
1210impl GraphQLFields for AiConversationSuggestValuesToolCallArgs {
1211    type FullType = Self;
1212    fn selection() -> String {
1213        "field query".into()
1214    }
1215}
1216/// A text part in an AI conversation.
1217#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1218#[serde(rename_all = "camelCase", default)]
1219pub struct AiConversationTextPart {
1220    /// The ID of the part.
1221    pub id: Option<String>,
1222    /// The type of the part.
1223    pub r#type: Option<AiConversationPartType>,
1224    /// The metadata of the part.
1225    pub metadata: Option<AiConversationPartMetadata>,
1226    /// The data of the text part.
1227    pub body_data: Option<serde_json::Value>,
1228    /// The Markdown body of the text part.
1229    pub body: Option<String>,
1230}
1231impl GraphQLFields for AiConversationTextPart {
1232    type FullType = Self;
1233    fn selection() -> String {
1234        "id type bodyData body".into()
1235    }
1236}
1237/// A tool call part in an AI conversation.
1238#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1239#[serde(rename_all = "camelCase", default)]
1240pub struct AiConversationToolCallPart {
1241    /// The ID of the part.
1242    pub id: Option<String>,
1243    /// The type of the part.
1244    pub r#type: Option<AiConversationPartType>,
1245    /// The metadata of the part.
1246    pub metadata: Option<AiConversationPartMetadata>,
1247}
1248impl GraphQLFields for AiConversationToolCallPart {
1249    type FullType = Self;
1250    fn selection() -> String {
1251        "id type".into()
1252    }
1253}
1254#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1255#[serde(rename_all = "camelCase", default)]
1256pub struct AiConversationToolDisplayInfo {
1257    pub icon: Option<String>,
1258    pub active_label: Option<String>,
1259    pub inactive_label: Option<String>,
1260    pub detail: Option<String>,
1261    pub result: Option<String>,
1262}
1263impl GraphQLFields for AiConversationToolDisplayInfo {
1264    type FullType = Self;
1265    fn selection() -> String {
1266        "icon activeLabel inactiveLabel detail result".into()
1267    }
1268}
1269#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1270#[serde(rename_all = "camelCase", default)]
1271pub struct AiConversationTranscribeMediaToolCall {
1272    /// The name of the tool that was called.
1273    pub name: Option<AiConversationTool>,
1274    pub display_info: Option<AiConversationToolDisplayInfo>,
1275    /// The arguments of the tool call.
1276    pub raw_args: Option<serde_json::Value>,
1277    /// The result of the tool call.
1278    pub raw_result: Option<serde_json::Value>,
1279}
1280impl GraphQLFields for AiConversationTranscribeMediaToolCall {
1281    type FullType = Self;
1282    fn selection() -> String {
1283        "name rawArgs rawResult".into()
1284    }
1285}
1286#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1287#[serde(rename_all = "camelCase", default)]
1288pub struct AiConversationTranscribeVideoToolCall {
1289    /// The name of the tool that was called.
1290    pub name: Option<AiConversationTool>,
1291    pub display_info: Option<AiConversationToolDisplayInfo>,
1292    /// The arguments of the tool call.
1293    pub raw_args: Option<serde_json::Value>,
1294    /// The result of the tool call.
1295    pub raw_result: Option<serde_json::Value>,
1296}
1297impl GraphQLFields for AiConversationTranscribeVideoToolCall {
1298    type FullType = Self;
1299    fn selection() -> String {
1300        "name rawArgs rawResult".into()
1301    }
1302}
1303#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1304#[serde(rename_all = "camelCase", default)]
1305pub struct AiConversationUpdateEntityToolCall {
1306    /// The name of the tool that was called.
1307    pub name: Option<AiConversationTool>,
1308    pub display_info: Option<AiConversationToolDisplayInfo>,
1309    /// The arguments of the tool call.
1310    pub raw_args: Option<serde_json::Value>,
1311    /// The result of the tool call.
1312    pub raw_result: Option<serde_json::Value>,
1313    /// The arguments to the tool call.
1314    pub args: Option<AiConversationUpdateEntityToolCallArgs>,
1315}
1316impl GraphQLFields for AiConversationUpdateEntityToolCall {
1317    type FullType = Self;
1318    fn selection() -> String {
1319        "name rawArgs rawResult".into()
1320    }
1321}
1322#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1323#[serde(rename_all = "camelCase", default)]
1324pub struct AiConversationUpdateEntityToolCallArgs {
1325    pub entity: Option<AiConversationSearchEntitiesToolCallResultEntities>,
1326    pub entities: Option<Vec<AiConversationSearchEntitiesToolCallResultEntities>>,
1327}
1328impl GraphQLFields for AiConversationUpdateEntityToolCallArgs {
1329    type FullType = Self;
1330    fn selection() -> String {
1331        "".into()
1332    }
1333}
1334#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1335#[serde(rename_all = "camelCase", default)]
1336pub struct AiConversationWebSearchToolCall {
1337    /// The name of the tool that was called.
1338    pub name: Option<AiConversationTool>,
1339    pub display_info: Option<AiConversationToolDisplayInfo>,
1340    /// The arguments of the tool call.
1341    pub raw_args: Option<serde_json::Value>,
1342    /// The result of the tool call.
1343    pub raw_result: Option<serde_json::Value>,
1344    /// The arguments to the tool call.
1345    pub args: Option<AiConversationWebSearchToolCallArgs>,
1346}
1347impl GraphQLFields for AiConversationWebSearchToolCall {
1348    type FullType = Self;
1349    fn selection() -> String {
1350        "name rawArgs rawResult".into()
1351    }
1352}
1353#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1354#[serde(rename_all = "camelCase", default)]
1355pub struct AiConversationWebSearchToolCallArgs {
1356    pub query: Option<String>,
1357    pub url: Option<String>,
1358}
1359impl GraphQLFields for AiConversationWebSearchToolCallArgs {
1360    type FullType = Self;
1361    fn selection() -> String {
1362        "query url".into()
1363    }
1364}
1365#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1366#[serde(rename_all = "camelCase", default)]
1367pub struct AiConversationWidgetDisplayInfo {
1368    /// The ProseMirror data representation of the widget content.
1369    pub body_data: Option<serde_json::Value>,
1370    /// The Markdown representation of the widget content.
1371    pub body: Option<String>,
1372}
1373impl GraphQLFields for AiConversationWidgetDisplayInfo {
1374    type FullType = Self;
1375    fn selection() -> String {
1376        "bodyData body".into()
1377    }
1378}
1379/// A widget part in an AI conversation.
1380#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1381#[serde(rename_all = "camelCase", default)]
1382pub struct AiConversationWidgetPart {
1383    /// The ID of the part.
1384    pub id: Option<String>,
1385    /// The type of the part.
1386    pub r#type: Option<AiConversationPartType>,
1387    /// The metadata of the part.
1388    pub metadata: Option<AiConversationPartMetadata>,
1389}
1390impl GraphQLFields for AiConversationWidgetPart {
1391    type FullType = Self;
1392    fn selection() -> String {
1393        "id type".into()
1394    }
1395}
1396/// `Internal` Tracks the progress and state of an AI prompt workflow execution. Each progress record is associated with an issue or comment and contains the workflow type, current status, metadata about the execution, and optionally the conversation messages exchanged during the workflow. Progress records can form a hierarchy via parent-child relationships for multi-step workflows.
1397#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1398#[serde(rename_all = "camelCase", default)]
1399pub struct AiPromptProgress {
1400    /// The unique identifier of the entity.
1401    pub id: Option<String>,
1402    /// The time at which the entity was created.
1403    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1404    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
1405    /// been updated after creation.
1406    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
1407    /// The time at which the entity was archived. Null if the entity has not been archived.
1408    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
1409    /// `Internal` The type of AI prompt workflow.
1410    pub r#type: Option<AiPromptType>,
1411    /// `Internal` The status of the prompt workflow.
1412    pub status: Option<AiPromptProgressStatus>,
1413    /// `Internal` The metadata for the prompt workflow.
1414    pub metadata: Option<serde_json::Value>,
1415    /// `Internal` The log ID for the prompt workflow, if available.
1416    pub log_id: Option<String>,
1417}
1418impl GraphQLFields for AiPromptProgress {
1419    type FullType = Self;
1420    fn selection() -> String {
1421        "id createdAt updatedAt archivedAt type status metadata logId".into()
1422    }
1423}
1424#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1425#[serde(rename_all = "camelCase", default)]
1426pub struct AiPromptProgressConnection {
1427    pub edges: Option<Vec<AiPromptProgressEdge>>,
1428    pub nodes: Option<Vec<AiPromptProgress>>,
1429    pub page_info: Option<PageInfo>,
1430}
1431impl GraphQLFields for AiPromptProgressConnection {
1432    type FullType = Self;
1433    fn selection() -> String {
1434        "".into()
1435    }
1436}
1437#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1438#[serde(rename_all = "camelCase", default)]
1439pub struct AiPromptProgressEdge {
1440    pub node: Option<AiPromptProgress>,
1441    /// Used in `before` and `after` args
1442    pub cursor: Option<String>,
1443}
1444impl GraphQLFields for AiPromptProgressEdge {
1445    type FullType = Self;
1446    fn selection() -> String {
1447        "cursor".into()
1448    }
1449}
1450/// Custom rules that guide AI behavior for a specific scope. Rules can be defined at the workspace level, team level, integration level, or user level, and are applied hierarchically (workspace rules first, then parent team rules, then team rules). Rules contain structured content that instructs the AI assistant on how to handle specific types of prompts, such as coding agent guidance or triage intelligence configuration.
1451#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1452#[serde(rename_all = "camelCase", default)]
1453pub struct AiPromptRules {
1454    /// The unique identifier of the entity.
1455    pub id: Option<String>,
1456    /// The time at which the entity was created.
1457    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1458    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
1459    /// been updated after creation.
1460    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
1461    /// The time at which the entity was archived. Null if the entity has not been archived.
1462    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
1463    /// The user who last updated the AI prompt rules.
1464    pub updated_by: Option<Box<User>>,
1465}
1466impl GraphQLFields for AiPromptRules {
1467    type FullType = Self;
1468    fn selection() -> String {
1469        "id createdAt updatedAt archivedAt".into()
1470    }
1471}
1472/// Public-facing information about an OAuth application. Contains only the fields that are safe to display to users during the authorization flow, excluding sensitive data like client secrets and internal configuration.
1473#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1474#[serde(rename_all = "camelCase", default)]
1475pub struct Application {
1476    /// OAuth application's ID.
1477    pub id: Option<String>,
1478    /// OAuth application's client ID.
1479    pub client_id: Option<String>,
1480    /// Application name.
1481    pub name: Option<String>,
1482    /// Information about the application.
1483    pub description: Option<String>,
1484    /// Name of the developer.
1485    pub developer: Option<String>,
1486    /// URL of the developer's website, homepage, or documentation.
1487    pub developer_url: Option<String>,
1488    /// Image of the application.
1489    pub image_url: Option<String>,
1490}
1491impl GraphQLFields for Application {
1492    type FullType = Self;
1493    fn selection() -> String {
1494        "id clientId name description developer developerUrl imageUrl".into()
1495    }
1496}
1497/// Contains requested archived model objects.
1498#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1499#[serde(rename_all = "camelCase", default)]
1500pub struct ArchiveResponse {
1501    /// A JSON serialized collection of model objects loaded from the archive
1502    pub archive: Option<String>,
1503    /// The total number of entities in the archive.
1504    pub total_count: Option<f64>,
1505    /// The version of the remote database. Incremented by 1 for each migration run on the database.
1506    pub database_version: Option<f64>,
1507    /// Whether the dependencies for the model objects are included in the archive.
1508    pub includes_dependencies: Option<Vec<String>>,
1509}
1510impl GraphQLFields for ArchiveResponse {
1511    type FullType = Self;
1512    fn selection() -> String {
1513        "archive totalCount databaseVersion includesDependencies".into()
1514    }
1515}
1516#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1517#[serde(rename_all = "camelCase", default)]
1518pub struct AsksChannelConnectPayload {
1519    /// The identifier of the last sync operation.
1520    pub last_sync_id: Option<f64>,
1521    /// The integration that was created or updated.
1522    pub integration: Option<Integration>,
1523    /// Whether the operation was successful.
1524    pub success: Option<bool>,
1525    /// The new Asks Slack channel mapping for the connected channel.
1526    pub mapping: Option<SlackChannelNameMapping>,
1527    /// Whether the bot needs to be manually added to the channel.
1528    pub add_bot: Option<bool>,
1529}
1530impl GraphQLFields for AsksChannelConnectPayload {
1531    type FullType = Self;
1532    fn selection() -> String {
1533        "lastSyncId success addBot".into()
1534    }
1535}
1536/// An attachment linking external content to an issue. Attachments represent connections to external resources such as GitHub pull requests, Slack messages, Zendesk tickets, Figma files, Sentry issues, Intercom conversations, and plain URLs. Each attachment has a title and subtitle displayed in the Linear UI, a URL serving as both the link destination and unique identifier per issue, and optional metadata specific to the source integration.
1537#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1538#[serde(rename_all = "camelCase", default)]
1539pub struct Attachment {
1540    /// The unique identifier of the entity.
1541    pub id: Option<String>,
1542    /// The time at which the entity was created.
1543    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1544    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
1545    /// been updated after creation.
1546    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
1547    /// The time at which the entity was archived. Null if the entity has not been archived.
1548    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
1549    /// Content for the title line in the Linear attachment widget.
1550    pub title: Option<String>,
1551    /// Content for the subtitle line in the Linear attachment widget.
1552    pub subtitle: Option<String>,
1553    /// The URL of the external resource this attachment links to. Also serves as a unique identifier for the attachment within an issue; no two attachments on the same issue can share the same URL.
1554    pub url: Option<String>,
1555    /// The creator of the attachment.
1556    pub creator: Option<User>,
1557    /// The non-Linear user who created the attachment.
1558    pub external_user_creator: Option<ExternalUser>,
1559    /// Integration-specific metadata for this attachment. The schema varies by source type and may include fields such as pull request status, review counts, commit information, ticket status, or other data from the external system.
1560    pub metadata: Option<serde_json::Value>,
1561    /// Information about the source which created the attachment.
1562    pub source: Option<serde_json::Value>,
1563    /// The source type of the attachment, derived from the source metadata. Returns the integration type (e.g., 'github', 'slack', 'zendesk') or 'unknown' if no source is set.
1564    pub source_type: Option<String>,
1565    /// Whether attachments from the same source application should be visually grouped together in the Linear issue detail view.
1566    pub group_by_source: Option<bool>,
1567    /// The issue this attachment was originally created on. Null if the attachment hasn't been moved.
1568    pub original_issue: Option<Issue>,
1569    /// The issue this attachment belongs to.
1570    pub issue: Option<Issue>,
1571    /// The body data of the attachment, if any.
1572    pub body_data: Option<String>,
1573}
1574impl GraphQLFields for Attachment {
1575    type FullType = Self;
1576    fn selection() -> String {
1577        "id createdAt updatedAt archivedAt title subtitle url metadata source sourceType groupBySource bodyData"
1578            .into()
1579    }
1580}
1581#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1582#[serde(rename_all = "camelCase", default)]
1583pub struct AttachmentConnection {
1584    pub edges: Option<Vec<AttachmentEdge>>,
1585    pub nodes: Option<Vec<Attachment>>,
1586    pub page_info: Option<PageInfo>,
1587}
1588impl GraphQLFields for AttachmentConnection {
1589    type FullType = Self;
1590    fn selection() -> String {
1591        "".into()
1592    }
1593}
1594#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1595#[serde(rename_all = "camelCase", default)]
1596pub struct AttachmentEdge {
1597    pub node: Option<Attachment>,
1598    /// Used in `before` and `after` args
1599    pub cursor: Option<String>,
1600}
1601impl GraphQLFields for AttachmentEdge {
1602    type FullType = Self;
1603    fn selection() -> String {
1604        "cursor".into()
1605    }
1606}
1607/// The result of an attachment mutation.
1608#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1609#[serde(rename_all = "camelCase", default)]
1610pub struct AttachmentPayload {
1611    /// The identifier of the last sync operation.
1612    pub last_sync_id: Option<f64>,
1613    /// The issue attachment that was created.
1614    pub attachment: Option<Attachment>,
1615    /// Whether the operation was successful.
1616    pub success: Option<bool>,
1617}
1618impl GraphQLFields for AttachmentPayload {
1619    type FullType = Self;
1620    fn selection() -> String {
1621        "lastSyncId success".into()
1622    }
1623}
1624/// The result of an attachment sources query.
1625#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1626#[serde(rename_all = "camelCase", default)]
1627pub struct AttachmentSourcesPayload {
1628    /// A unique list of all source types used in this workspace.
1629    pub sources: Option<serde_json::Value>,
1630}
1631impl GraphQLFields for AttachmentSourcesPayload {
1632    type FullType = Self;
1633    fn selection() -> String {
1634        "sources".into()
1635    }
1636}
1637/// A workspace audit log entry recording a security or compliance-relevant action. Audit entries capture who performed an action, when, from what IP address and country, and include type-specific metadata. The audit log is partitioned by time for performance and is accessible only to workspace administrators. Examples of audited actions include user authentication events, permission changes, data exports, and workspace setting modifications.
1638#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1639#[serde(rename_all = "camelCase", default)]
1640pub struct AuditEntry {
1641    /// The unique identifier of the entity.
1642    pub id: Option<String>,
1643    /// The time at which the entity was created.
1644    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1645    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
1646    /// been updated after creation.
1647    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
1648    /// The time at which the entity was archived. Null if the entity has not been archived.
1649    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
1650    /// The type of audited action (e.g., user authentication, permission change, data export, setting modification).
1651    pub r#type: Option<String>,
1652    /// The workspace the audit log belongs to.
1653    pub organization: Option<Organization>,
1654    /// The user that caused the audit entry to be created.
1655    pub actor: Option<User>,
1656    /// The ID of the user that caused the audit entry to be created.
1657    pub actor_id: Option<String>,
1658    /// The IP address of the actor at the time the audited action was performed. Null if the IP was not captured.
1659    pub ip: Option<String>,
1660    /// The ISO 3166-1 alpha-2 country code derived from the request IP address. Null if geo-location could not be determined.
1661    pub country_code: Option<String>,
1662    /// Additional metadata related to the audit entry.
1663    pub metadata: Option<serde_json::Value>,
1664    /// Additional information related to the request which performed the action.
1665    pub request_information: Option<serde_json::Value>,
1666}
1667impl GraphQLFields for AuditEntry {
1668    type FullType = Self;
1669    fn selection() -> String {
1670        "id createdAt updatedAt archivedAt type actorId ip countryCode metadata requestInformation"
1671            .into()
1672    }
1673}
1674#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1675#[serde(rename_all = "camelCase", default)]
1676pub struct AuditEntryConnection {
1677    pub edges: Option<Vec<AuditEntryEdge>>,
1678    pub nodes: Option<Vec<AuditEntry>>,
1679    pub page_info: Option<PageInfo>,
1680}
1681impl GraphQLFields for AuditEntryConnection {
1682    type FullType = Self;
1683    fn selection() -> String {
1684        "".into()
1685    }
1686}
1687#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1688#[serde(rename_all = "camelCase", default)]
1689pub struct AuditEntryEdge {
1690    pub node: Option<AuditEntry>,
1691    /// Used in `before` and `after` args
1692    pub cursor: Option<String>,
1693}
1694impl GraphQLFields for AuditEntryEdge {
1695    type FullType = Self;
1696    fn selection() -> String {
1697        "cursor".into()
1698    }
1699}
1700#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1701#[serde(rename_all = "camelCase", default)]
1702pub struct AuditEntryType {
1703    /// The audit entry type.
1704    pub r#type: Option<String>,
1705    /// Description of the audit entry type.
1706    pub description: Option<String>,
1707}
1708impl GraphQLFields for AuditEntryType {
1709    type FullType = Self;
1710    fn selection() -> String {
1711        "type description".into()
1712    }
1713}
1714/// An identity provider.
1715#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1716#[serde(rename_all = "camelCase", default)]
1717pub struct AuthIdentityProvider {
1718    /// The time at which the entity was created.
1719    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1720    /// The unique identifier of the entity.
1721    pub id: Option<String>,
1722    /// Whether the identity provider is the default identity provider migrated from organization level settings.
1723    pub default_migrated: Option<bool>,
1724    /// The type of identity provider.
1725    pub r#type: Option<IdentityProviderType>,
1726    /// Whether SAML authentication is enabled for organization.
1727    pub saml_enabled: Option<bool>,
1728    /// Sign in endpoint URL for the identity provider.
1729    pub sso_endpoint: Option<String>,
1730    /// Binding method for authentication call. Can be either `post` (default) or `redirect`.
1731    pub sso_binding: Option<String>,
1732    /// The algorithm of the Signing Certificate. Can be one of `sha1`, `sha256` (default), or `sha512`.
1733    pub sso_sign_algo: Option<String>,
1734    /// The issuer's custom entity ID.
1735    pub issuer_entity_id: Option<String>,
1736    /// The service provider (Linear) custom entity ID. Defaults to <https://auth.linear.app/sso>
1737    pub sp_entity_id: Option<String>,
1738    /// X.509 Signing Certificate in string form.
1739    pub sso_signing_cert: Option<String>,
1740    /// The SAML priority used to pick default workspace in SAML SP initiated flow, when same domain is claimed for SAML by multiple workspaces. Lower priority value means higher preference.
1741    pub priority: Option<f64>,
1742    /// Whether SCIM provisioning is enabled for organization.
1743    pub scim_enabled: Option<bool>,
1744}
1745impl GraphQLFields for AuthIdentityProvider {
1746    type FullType = Self;
1747    fn selection() -> String {
1748        "createdAt id defaultMigrated type samlEnabled ssoEndpoint ssoBinding ssoSignAlgo issuerEntityId spEntityId ssoSigningCert priority scimEnabled"
1749            .into()
1750    }
1751}
1752/// An organization. Organizations are root-level objects that contain users and teams.
1753#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1754#[serde(rename_all = "camelCase", default)]
1755pub struct AuthOrganization {
1756    /// The time at which the entity was created.
1757    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1758    /// The unique identifier of the entity.
1759    pub id: Option<String>,
1760    /// The organization's name.
1761    pub name: Option<String>,
1762    /// Whether the organization is enabled. Used as a superuser tool to lock down the org.
1763    pub enabled: Option<bool>,
1764    /// The organization's unique URL key.
1765    pub url_key: Option<String>,
1766    /// Previously used URL keys for the organization (last 3 are kept and redirected).
1767    pub previous_url_keys: Option<Vec<String>>,
1768    /// The organization's logo URL.
1769    pub logo_url: Option<String>,
1770    /// The time at which deletion of the organization was requested.
1771    pub deletion_requested_at: Option<chrono::DateTime<chrono::Utc>>,
1772    /// The feature release channel the organization belongs to.
1773    pub release_channel: Option<ReleaseChannel>,
1774    /// Whether SAML authentication is enabled for organization.
1775    pub saml_enabled: Option<bool>,
1776    /// `INTERNAL` SAML settings
1777    pub saml_settings: Option<serde_json::Value>,
1778    /// Allowed authentication providers, empty array means all are allowed
1779    pub allowed_auth_services: Option<Vec<String>>,
1780    /// Authentication settings for the organization.
1781    pub auth_settings: Option<serde_json::Value>,
1782    /// Whether SCIM provisioning is enabled for organization.
1783    pub scim_enabled: Option<bool>,
1784    /// The email domain or URL key for the organization.
1785    pub service_id: Option<String>,
1786    /// The region the organization is hosted in.
1787    pub region: Option<String>,
1788    /// An approximate count of users, updated once per day.
1789    pub approximate_user_count: Option<f64>,
1790    /// Whether to hide other organizations for new users signing up with email domains claimed by this organization.
1791    pub hide_non_primary_organizations: Option<bool>,
1792    pub user_count: Option<f64>,
1793}
1794impl GraphQLFields for AuthOrganization {
1795    type FullType = Self;
1796    fn selection() -> String {
1797        "createdAt id name enabled urlKey previousUrlKeys logoUrl deletionRequestedAt releaseChannel samlEnabled samlSettings allowedAuthServices authSettings scimEnabled serviceId region approximateUserCount hideNonPrimaryOrganizations userCount"
1798            .into()
1799    }
1800}
1801#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1802#[serde(rename_all = "camelCase", default)]
1803pub struct AuthResolverResponse {
1804    /// User account ID.
1805    pub id: Option<String>,
1806    /// Email for the authenticated account.
1807    pub email: Option<String>,
1808    /// Should the signup flow allow access for the domain.
1809    pub allow_domain_access: Option<bool>,
1810    /// List of active users that belong to the user account.
1811    pub users: Option<Vec<AuthUser>>,
1812    /// List of locked users that are locked by login restrictions
1813    pub locked_users: Option<Vec<AuthUser>>,
1814    /// List of organizations allowing this user account to join automatically.
1815    pub available_organizations: Option<Vec<AuthOrganization>>,
1816    /// List of organization available to this user account but locked due to the current auth method.
1817    pub locked_organizations: Option<Vec<AuthOrganization>>,
1818    /// ID of the organization last accessed by the user.
1819    pub last_used_organization_id: Option<String>,
1820    /// The authentication service used for the current session (e.g., google, email, saml).
1821    pub service: Option<String>,
1822    /// Application token.
1823    pub token: Option<String>,
1824}
1825impl GraphQLFields for AuthResolverResponse {
1826    type FullType = Self;
1827    fn selection() -> String {
1828        "id email allowDomainAccess lastUsedOrganizationId service token".into()
1829    }
1830}
1831/// A user that has access to the the resources of an organization.
1832#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1833#[serde(rename_all = "camelCase", default)]
1834pub struct AuthUser {
1835    /// The time at which the entity was created.
1836    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1837    pub id: Option<String>,
1838    /// The user's full name.
1839    pub name: Option<String>,
1840    /// The user's display (nick) name. Unique within each organization.
1841    pub display_name: Option<String>,
1842    /// The user's email address.
1843    pub email: Option<String>,
1844    /// An URL to the user's avatar image.
1845    pub avatar_url: Option<String>,
1846    /// Whether the user is an organization admin or guest on a database level.
1847    pub role: Option<UserRoleType>,
1848    /// Whether the user is active.
1849    pub active: Option<bool>,
1850    /// User account ID the user belongs to.
1851    pub user_account_id: Option<String>,
1852    /// Organization the user belongs to.
1853    pub organization: Option<AuthOrganization>,
1854    /// `INTERNAL` Identity provider the user is managed by.
1855    pub identity_provider: Option<AuthIdentityProvider>,
1856}
1857impl GraphQLFields for AuthUser {
1858    type FullType = Self;
1859    fn selection() -> String {
1860        "createdAt id name displayName email avatarUrl role active userAccountId".into()
1861    }
1862}
1863/// Information about an active authentication session, including the device, location, and timestamps for when it was created and last used.
1864#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1865#[serde(rename_all = "camelCase", default)]
1866pub struct AuthenticationSessionResponse {
1867    /// The time at which the entity was created.
1868    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1869    pub id: Option<String>,
1870    /// Type of application used to authenticate.
1871    pub r#type: Option<AuthenticationSessionType>,
1872    /// IP address.
1873    pub ip: Option<String>,
1874    /// Location country name.
1875    pub location_country: Option<String>,
1876    /// Location country code.
1877    pub location_country_code: Option<String>,
1878    /// Country codes of all seen locations.
1879    pub country_codes: Option<Vec<String>>,
1880    /// Location region code.
1881    pub location_region_code: Option<String>,
1882    /// Location city name.
1883    pub location_city: Option<String>,
1884    /// Session's user-agent.
1885    pub user_agent: Option<String>,
1886    /// Used web browser.
1887    pub browser_type: Option<String>,
1888    /// Service used for logging in.
1889    pub service: Option<String>,
1890    /// When was the session last seen
1891    pub last_active_at: Option<chrono::DateTime<chrono::Utc>>,
1892    /// Date when the session was last updated.
1893    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
1894    /// Human readable location
1895    pub location: Option<String>,
1896    /// Operating system used for the session
1897    pub operating_system: Option<String>,
1898    /// Client used for the session
1899    pub client: Option<String>,
1900    /// Name of the session, derived from the client and operating system
1901    pub name: Option<String>,
1902    /// Detailed name of the session including version information, derived from the user agent.
1903    pub detailed_name: Option<String>,
1904    /// Whether this session is the one used to make the current API request.
1905    pub is_current_session: Option<bool>,
1906}
1907impl GraphQLFields for AuthenticationSessionResponse {
1908    type FullType = Self;
1909    fn selection() -> String {
1910        "createdAt id type ip locationCountry locationCountryCode countryCodes locationRegionCode locationCity userAgent browserType service lastActiveAt updatedAt location operatingSystem client name detailedName isCurrentSession"
1911            .into()
1912    }
1913}
1914/// `Internal` Detailed information about the coding agent sandbox environment associated with an agent session, including cloud infrastructure URLs for debugging and monitoring.
1915#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1916#[serde(rename_all = "camelCase", default)]
1917pub struct CodingAgentSandboxEntry {
1918    /// The sandbox identifier.
1919    pub id: Option<String>,
1920    /// The user who initiated the session.
1921    pub creator_id: Option<String>,
1922    /// The URL of the running sandbox environment. Null when the sandbox is hibernated or destroyed.
1923    pub sandbox_url: Option<String>,
1924    /// URL to the sandbox execution logs in Modal. Null if the sandbox has no URL or is not running on Modal.
1925    pub sandbox_logs_url: Option<String>,
1926    /// The Claude Agent SDK session ID used for resuming multi-turn conversations with the sandbox worker.
1927    pub worker_conversation_id: Option<String>,
1928    /// GitHub repository in owner/repo format.
1929    pub repository: Option<String>,
1930    /// The Git branch name created for this sandbox session. Null if a branch has not yet been assigned.
1931    pub branch_name: Option<String>,
1932    /// The Git ref (branch, tag, or commit) that was checked out as the base for this sandbox. Defaults to the repository's default branch.
1933    pub base_ref: Option<String>,
1934    /// The time at which the sandbox was created.
1935    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1936    /// The time at which the sandbox first became active. Null if not yet started.
1937    pub started_at: Option<chrono::DateTime<chrono::Utc>>,
1938    /// The time at which the session reached a terminal state. Null if still active.
1939    pub ended_at: Option<chrono::DateTime<chrono::Utc>>,
1940}
1941impl GraphQLFields for CodingAgentSandboxEntry {
1942    type FullType = Self;
1943    fn selection() -> String {
1944        "id creatorId sandboxUrl sandboxLogsUrl workerConversationId repository branchName baseRef createdAt startedAt endedAt"
1945            .into()
1946    }
1947}
1948/// `Internal` Coding agent sandbox details for an agent session.
1949#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1950#[serde(rename_all = "camelCase", default)]
1951pub struct CodingAgentSandboxPayload {
1952    /// The agent session identifier.
1953    pub agent_session_id: Option<String>,
1954    /// All sandbox containers for this session, oldest first.
1955    pub sandboxes: Option<Vec<CodingAgentSandboxEntry>>,
1956    /// Datadog logs URL covering all sandboxes in the session.
1957    pub datadog_logs_url: Option<String>,
1958    /// Temporal URL to view workflows for this session.
1959    pub temporal_workflows_url: Option<String>,
1960}
1961impl GraphQLFields for CodingAgentSandboxPayload {
1962    type FullType = Self;
1963    fn selection() -> String {
1964        "agentSessionId datadogLogsUrl temporalWorkflowsUrl".into()
1965    }
1966}
1967/// A comment associated with an issue, project update, initiative update, document content, post, project, or initiative. Comments support rich text (ProseMirror), emoji reactions, and threaded replies via parentId. Comments can be created by workspace users or by external users through integrations (e.g., Slack, Intercom). Each comment belongs to exactly one parent entity.
1968#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1969#[serde(rename_all = "camelCase", default)]
1970pub struct Comment {
1971    /// The unique identifier of the entity.
1972    pub id: Option<String>,
1973    /// The time at which the entity was created.
1974    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
1975    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
1976    /// been updated after creation.
1977    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
1978    /// The time at which the entity was archived. Null if the entity has not been archived.
1979    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
1980    /// The comment content in markdown format. This is a derived representation of the canonical bodyData ProseMirror content.
1981    pub body: Option<String>,
1982    /// The issue that the comment is associated with. Null if the comment belongs to a different parent entity type.
1983    pub issue: Option<Box<Issue>>,
1984    /// The ID of the issue that the comment is associated with. Null if the comment belongs to a different parent entity type.
1985    pub issue_id: Option<String>,
1986    /// The document content that the comment is associated with. Null if the comment belongs to a different parent entity type. Used for inline comments on documents.
1987    pub document_content: Option<Box<DocumentContent>>,
1988    /// The ID of the document content that the comment is associated with. Null if the comment belongs to a different parent entity type.
1989    pub document_content_id: Option<String>,
1990    /// The project update that the comment is associated with. Null if the comment belongs to a different parent entity type.
1991    pub project_update: Option<Box<ProjectUpdate>>,
1992    /// The ID of the project update that the comment is associated with. Null if the comment belongs to a different parent entity type.
1993    pub project_update_id: Option<String>,
1994    /// The initiative update that the comment is associated with. Null if the comment belongs to a different parent entity type.
1995    pub initiative_update: Option<Box<InitiativeUpdate>>,
1996    /// The ID of the initiative update that the comment is associated with. Null if the comment belongs to a different parent entity type.
1997    pub initiative_update_id: Option<String>,
1998    /// The post that the comment is associated with. Null if the comment belongs to a different parent entity type.
1999    pub post: Option<Box<Post>>,
2000    /// `Internal` The project that the comment is associated with. Used for project-level discussion threads. Null if the comment belongs to a different parent entity type.
2001    pub project: Option<Box<Project>>,
2002    /// `Internal` The ID of the project that the comment is associated with. Null if the comment belongs to a different parent entity type.
2003    pub project_id: Option<String>,
2004    /// `Internal` The initiative that the comment is associated with. Null if the comment belongs to a different parent entity type.
2005    pub initiative: Option<Box<Initiative>>,
2006    /// `Internal` The ID of the initiative that the comment is associated with. Null if the comment belongs to a different parent entity type.
2007    pub initiative_id: Option<String>,
2008    /// The parent comment under which the current comment is nested. Null for top-level comments that are not replies.
2009    pub parent: Option<Box<Comment>>,
2010    /// The ID of the parent comment under which the current comment is nested. Null for top-level comments.
2011    pub parent_id: Option<String>,
2012    /// The user that resolved the comment thread. Null if the thread has not been resolved or if this is not a top-level comment.
2013    pub resolving_user: Option<Box<User>>,
2014    /// The time when the comment thread was resolved. Null if the thread is unresolved.
2015    pub resolved_at: Option<chrono::DateTime<chrono::Utc>>,
2016    /// The child comment that resolved this thread. Only set on top-level (parent) comments. Null if the thread is unresolved.
2017    pub resolving_comment: Option<Box<Comment>>,
2018    /// The ID of the child comment that resolved this thread. Null if the thread is unresolved.
2019    pub resolving_comment_id: Option<String>,
2020    /// The user who wrote the comment. Null for comments created by integrations or bots without a user association.
2021    pub user: Option<Box<User>>,
2022    /// The external user who wrote the comment, when the comment was created through an integration such as Slack or Intercom. Null for comments created by workspace users.
2023    pub external_user: Option<Box<ExternalUser>>,
2024    /// The time the comment was last edited by its author. Null if the comment has not been edited since creation.
2025    pub edited_at: Option<chrono::DateTime<chrono::Utc>>,
2026    /// `Internal` The comment content as a ProseMirror document. This is the canonical rich-text representation of the comment body.
2027    pub body_data: Option<String>,
2028    /// The text that this comment references, used for inline comments on documents or issue descriptions. Null for standard comments that do not quote specific text.
2029    pub quoted_text: Option<String>,
2030    /// Emoji reaction summary for this comment, grouped by emoji type. Each entry contains the emoji name, count, and the IDs of users who reacted.
2031    pub reaction_data: Option<serde_json::Value>,
2032    /// `Internal` An AI-generated summary of the comment thread. Null if no summary has been generated or if this is not a top-level comment.
2033    pub thread_summary: Option<serde_json::Value>,
2034    /// `Internal` Whether the comment is an artificial placeholder for an agent session thread created without a comment mention.
2035    pub is_artificial_agent_session_root: Option<bool>,
2036    /// Comment's URL.
2037    pub url: Option<String>,
2038    /// The children of the comment.
2039    pub children: Option<CommentConnection>,
2040    /// Agent session associated with this comment.
2041    pub agent_session: Option<Box<AgentSession>>,
2042    /// `Internal` Agent sessions associated with this comment.
2043    pub agent_sessions: Option<AgentSessionConnection>,
2044    /// `Internal` Agent sessions spawned from this comment.
2045    pub spawned_agent_sessions: Option<AgentSessionConnection>,
2046    /// `Internal` AI prompt progresses associated with this comment.
2047    pub ai_prompt_progresses: Option<AiPromptProgressConnection>,
2048    /// Issues created from this comment.
2049    pub created_issues: Option<IssueConnection>,
2050    /// The bot that created the comment.
2051    pub bot_actor: Option<ActorBot>,
2052    /// `Internal` The user on whose behalf the comment was created, e.g. when the Linear assistant creates a comment for a user.
2053    pub on_behalf_of: Option<Box<User>>,
2054    /// The external thread that the comment is synced with.
2055    pub external_thread: Option<SyncedExternalThread>,
2056    /// `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).
2057    pub hide_in_linear: Option<bool>,
2058    /// Reactions associated with the comment.
2059    pub reactions: Option<Vec<Reaction>>,
2060    /// The external services the comment is synced with.
2061    pub synced_with: Option<Vec<ExternalEntityInfo>>,
2062}
2063impl GraphQLFields for Comment {
2064    type FullType = Self;
2065    fn selection() -> String {
2066        "id createdAt updatedAt archivedAt body issueId documentContentId projectUpdateId initiativeUpdateId projectId initiativeId parentId resolvedAt resolvingCommentId editedAt bodyData quotedText reactionData threadSummary isArtificialAgentSessionRoot url hideInLinear"
2067            .into()
2068    }
2069}
2070#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2071#[serde(rename_all = "camelCase", default)]
2072pub struct CommentConnection {
2073    pub edges: Option<Vec<CommentEdge>>,
2074    pub nodes: Option<Vec<Comment>>,
2075    pub page_info: Option<PageInfo>,
2076}
2077impl GraphQLFields for CommentConnection {
2078    type FullType = Self;
2079    fn selection() -> String {
2080        "".into()
2081    }
2082}
2083#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2084#[serde(rename_all = "camelCase", default)]
2085pub struct CommentEdge {
2086    pub node: Option<Comment>,
2087    /// Used in `before` and `after` args
2088    pub cursor: Option<String>,
2089}
2090impl GraphQLFields for CommentEdge {
2091    type FullType = Self;
2092    fn selection() -> String {
2093        "cursor".into()
2094    }
2095}
2096/// The result of a comment mutation.
2097#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2098#[serde(rename_all = "camelCase", default)]
2099pub struct CommentPayload {
2100    /// The identifier of the last sync operation.
2101    pub last_sync_id: Option<f64>,
2102    /// The comment that was created or updated.
2103    pub comment: Option<Comment>,
2104    /// Whether the operation was successful.
2105    pub success: Option<bool>,
2106}
2107impl GraphQLFields for CommentPayload {
2108    type FullType = Self;
2109    fn selection() -> String {
2110        "lastSyncId success".into()
2111    }
2112}
2113/// Return type for contact mutations.
2114#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2115#[serde(rename_all = "camelCase", default)]
2116pub struct ContactPayload {
2117    /// Whether the operation was successful.
2118    pub success: Option<bool>,
2119}
2120impl GraphQLFields for ContactPayload {
2121    type FullType = Self;
2122    fn selection() -> String {
2123        "success".into()
2124    }
2125}
2126/// The payload returned by the createCsvExportReport mutation.
2127#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2128#[serde(rename_all = "camelCase", default)]
2129pub struct CreateCsvExportReportPayload {
2130    /// Whether the operation was successful.
2131    pub success: Option<bool>,
2132}
2133impl GraphQLFields for CreateCsvExportReportPayload {
2134    type FullType = Self;
2135    fn selection() -> String {
2136        "success".into()
2137    }
2138}
2139/// `INTERNAL` Response from creating or joining a workspace.
2140#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2141#[serde(rename_all = "camelCase", default)]
2142pub struct CreateOrJoinOrganizationResponse {
2143    /// The workspace that was created or joined.
2144    pub organization: Option<AuthOrganization>,
2145    /// The user who created or joined the workspace.
2146    pub user: Option<AuthUser>,
2147}
2148impl GraphQLFields for CreateOrJoinOrganizationResponse {
2149    type FullType = Self;
2150    fn selection() -> String {
2151        "".into()
2152    }
2153}
2154/// A custom view built from a saved filter, sort, and grouping configuration. Views can be personal (visible only to the owner) or shared with the entire workspace. They define which issues, projects, initiatives, or feed items are displayed and how they are organized. Views can optionally be scoped to a team, project, or initiative.
2155#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2156#[serde(rename_all = "camelCase", default)]
2157pub struct CustomView {
2158    /// The unique identifier of the entity.
2159    pub id: Option<String>,
2160    /// The time at which the entity was created.
2161    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2162    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
2163    /// been updated after creation.
2164    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
2165    /// The time at which the entity was archived. Null if the entity has not been archived.
2166    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
2167    /// The name of the custom view, displayed in the sidebar and navigation.
2168    pub name: Option<String>,
2169    /// The description of the custom view.
2170    pub description: Option<String>,
2171    /// The icon of the custom view. Can be an emoji or a decorative icon identifier.
2172    pub icon: Option<String>,
2173    /// The hex color code of the custom view icon.
2174    pub color: Option<String>,
2175    /// The workspace of the custom view.
2176    pub organization: Option<Box<Organization>>,
2177    /// The user who originally created the custom view.
2178    pub creator: Option<Box<User>>,
2179    /// The user who owns the custom view. For personal views, only the owner can see and edit the view.
2180    pub owner: Option<Box<User>>,
2181    /// The user who last updated the custom view. Null if the updater's account has been deleted.
2182    pub updated_by: Option<Box<User>>,
2183    /// The legacy serialized filters applied to issues in the custom view.
2184    pub filters: Option<serde_json::Value>,
2185    /// The structured filter applied to issues in the custom view. Used when the view's modelName is "Issue".
2186    pub filter_data: Option<serde_json::Value>,
2187    /// The filter applied to projects in the custom view. When set, this view displays projects instead of issues.
2188    pub project_filter_data: Option<serde_json::Value>,
2189    /// The filter applied to initiatives in the custom view. When set, this view displays initiatives instead of issues.
2190    pub initiative_filter_data: Option<serde_json::Value>,
2191    /// The filter applied to feed items in the custom view. When set, this view displays feed items (updates) instead of issues.
2192    pub feed_item_filter_data: Option<serde_json::Value>,
2193    /// Whether the custom view is shared with everyone in the organization. Shared views appear in the workspace sidebar for all members. Personal (non-shared) views are only visible to their owner.
2194    pub shared: Option<bool>,
2195    /// The custom view's unique URL slug, used to construct human-readable URLs. Automatically generated on creation.
2196    pub slug_id: Option<String>,
2197    /// The entity type this view displays. Determined by which filter is set: "Project" if projectFilterData is set, "Initiative" if initiativeFilterData is set, "FeedItem" if feedItemFilterData is set, or "Issue" by default.
2198    pub model_name: Option<String>,
2199    /// `INTERNAL` The facet that links this custom view to its parent entity (project, initiative, team page, etc.). Null if the view is not attached to any parent via a facet.
2200    pub facet: Option<Box<Facet>>,
2201    /// The team that the custom view is scoped to. Null if the view is workspace-wide or scoped to a project/initiative instead.
2202    pub team: Option<Box<Team>>,
2203    /// Projects matching the custom view's project filter. Returns an empty connection if the view's modelName is not "Project".
2204    pub projects: Option<ProjectConnection>,
2205    /// Issues matching the custom view's issue filter. Returns an empty connection if the view's modelName is not "Issue".
2206    pub issues: Option<IssueConnection>,
2207    /// Feed items (updates) matching the custom view's feed item filter. Returns an empty connection if the view's modelName is not "FeedItem".
2208    pub updates: Option<FeedItemConnection>,
2209    /// The current user's personal view preferences for this custom view, if they have set any.
2210    pub user_view_preferences: Option<ViewPreferences>,
2211    /// The workspace-level default view preferences for this custom view, if any have been set.
2212    pub organization_view_preferences: Option<ViewPreferences>,
2213    /// The computed view preferences values for this custom view, merging organization defaults with user overrides and system defaults. Use this for the effective display settings rather than reading raw preferences directly.
2214    pub view_preferences_values: Option<ViewPreferencesValues>,
2215    /// Initiatives matching the custom view's initiative filter. Returns an empty connection if the view's modelName is not "Initiative".
2216    pub initiatives: Option<InitiativeConnection>,
2217}
2218impl GraphQLFields for CustomView {
2219    type FullType = Self;
2220    fn selection() -> String {
2221        "id createdAt updatedAt archivedAt name description icon color filters filterData projectFilterData initiativeFilterData feedItemFilterData shared slugId modelName"
2222            .into()
2223    }
2224}
2225#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2226#[serde(rename_all = "camelCase", default)]
2227pub struct CustomViewConnection {
2228    pub edges: Option<Vec<CustomViewEdge>>,
2229    pub nodes: Option<Vec<CustomView>>,
2230    pub page_info: Option<PageInfo>,
2231}
2232impl GraphQLFields for CustomViewConnection {
2233    type FullType = Self;
2234    fn selection() -> String {
2235        "".into()
2236    }
2237}
2238#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2239#[serde(rename_all = "camelCase", default)]
2240pub struct CustomViewEdge {
2241    pub node: Option<CustomView>,
2242    /// Used in `before` and `after` args
2243    pub cursor: Option<String>,
2244}
2245impl GraphQLFields for CustomViewEdge {
2246    type FullType = Self;
2247    fn selection() -> String {
2248        "cursor".into()
2249    }
2250}
2251/// The result of a custom view subscribers check.
2252#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2253#[serde(rename_all = "camelCase", default)]
2254pub struct CustomViewHasSubscribersPayload {
2255    /// Whether the custom view has subscribers.
2256    pub has_subscribers: Option<bool>,
2257}
2258impl GraphQLFields for CustomViewHasSubscribersPayload {
2259    type FullType = Self;
2260    fn selection() -> String {
2261        "hasSubscribers".into()
2262    }
2263}
2264/// A notification subscription scoped to a specific custom view. The subscriber receives notifications for events matching the custom view's filter criteria.
2265#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2266#[serde(rename_all = "camelCase", default)]
2267pub struct CustomViewNotificationSubscription {
2268    /// The unique identifier of the entity.
2269    pub id: Option<String>,
2270    /// The time at which the entity was created.
2271    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2272    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
2273    /// been updated after creation.
2274    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
2275    /// The time at which the entity was archived. Null if the entity has not been archived.
2276    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
2277    /// The user who will receive notifications from this subscription.
2278    pub subscriber: Option<User>,
2279    /// The customer that this notification subscription is scoped to. Null if the subscription targets a different entity type.
2280    pub customer: Option<Customer>,
2281    /// The custom view subscribed to.
2282    pub custom_view: Option<CustomView>,
2283    /// The cycle that this notification subscription is scoped to. Null if the subscription targets a different entity type.
2284    pub cycle: Option<Cycle>,
2285    /// The issue label that this notification subscription is scoped to. Null if the subscription targets a different entity type.
2286    pub label: Option<IssueLabel>,
2287    /// The project that this notification subscription is scoped to. Null if the subscription targets a different entity type.
2288    pub project: Option<Project>,
2289    /// The initiative that this notification subscription is scoped to. Null if the subscription targets a different entity type.
2290    pub initiative: Option<Initiative>,
2291    /// The team that this notification subscription is scoped to. Null if the subscription targets a different entity type.
2292    pub team: Option<Team>,
2293    /// The user that this notification subscription is scoped to, for user-specific view subscriptions. Null if the subscription targets a different entity type.
2294    pub user: Option<User>,
2295    /// The type of contextual view (e.g., active issues, backlog) that further scopes a team notification subscription. Null if the subscription is not associated with a specific view type.
2296    pub context_view_type: Option<ContextViewType>,
2297    /// The type of user-specific view that further scopes a user notification subscription. Null if the subscription is not associated with a user view type.
2298    pub user_context_view_type: Option<UserContextViewType>,
2299    /// Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists.
2300    pub active: Option<bool>,
2301    /// The notification event types that this subscription will deliver to the subscriber.
2302    pub notification_subscription_types: Option<Vec<String>>,
2303}
2304impl GraphQLFields for CustomViewNotificationSubscription {
2305    type FullType = Self;
2306    fn selection() -> String {
2307        "id createdAt updatedAt archivedAt contextViewType userContextViewType active notificationSubscriptionTypes"
2308            .into()
2309    }
2310}
2311/// The result of a custom view mutation.
2312#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2313#[serde(rename_all = "camelCase", default)]
2314pub struct CustomViewPayload {
2315    /// The identifier of the last sync operation.
2316    pub last_sync_id: Option<f64>,
2317    /// The custom view that was created or updated.
2318    pub custom_view: Option<CustomView>,
2319    /// Whether the operation was successful.
2320    pub success: Option<bool>,
2321}
2322impl GraphQLFields for CustomViewPayload {
2323    type FullType = Self;
2324    fn selection() -> String {
2325        "lastSyncId success".into()
2326    }
2327}
2328/// The result of a custom view suggestion query.
2329#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2330#[serde(rename_all = "camelCase", default)]
2331pub struct CustomViewSuggestionPayload {
2332    /// The suggested view name.
2333    pub name: Option<String>,
2334    /// The suggested view description.
2335    pub description: Option<String>,
2336    /// The suggested view icon.
2337    pub icon: Option<String>,
2338}
2339impl GraphQLFields for CustomViewSuggestionPayload {
2340    type FullType = Self;
2341    fn selection() -> String {
2342        "name description icon".into()
2343    }
2344}
2345/// A customer organization tracked in Linear's customer management system. Customers represent external companies or organizations whose product requests and feedback are captured as customer needs, which can be linked to issues and projects. Customers can be associated with domains, external system IDs, Slack channels, and managed by integrations such as Intercom or Salesforce.
2346#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2347#[serde(rename_all = "camelCase", default)]
2348pub struct Customer {
2349    /// The unique identifier of the entity.
2350    pub id: Option<String>,
2351    /// The time at which the entity was created.
2352    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2353    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
2354    /// been updated after creation.
2355    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
2356    /// The time at which the entity was archived. Null if the entity has not been archived.
2357    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
2358    /// The display name of the customer organization.
2359    pub name: Option<String>,
2360    /// URL of the customer's logo image. Null if no logo has been uploaded.
2361    pub logo_url: Option<String>,
2362    /// The email domains associated with this customer (e.g., 'acme.com'). Used to automatically match incoming requests to this customer. Public email domains (e.g., gmail.com) are not allowed. Domains must be unique across all customers in the workspace.
2363    pub domains: Option<Vec<String>>,
2364    /// Identifiers for this customer in external systems (e.g., CRM IDs from Intercom, Salesforce, or HubSpot). Used for matching customers during integration syncs and upsert operations. External IDs must be unique across customers in the workspace.
2365    pub external_ids: Option<Vec<String>>,
2366    /// The ID of the Slack channel linked to this customer for communication. Null if no Slack channel has been associated. Must be unique across all customers in the workspace.
2367    pub slack_channel_id: Option<String>,
2368    /// The workspace member assigned as the owner of this customer. Null if no owner has been assigned. App users cannot be set as customer owners.
2369    pub owner: Option<Box<User>>,
2370    /// The current lifecycle status of the customer. Defaults to the first status by position when a customer is created without an explicit status.
2371    pub status: Option<CustomerStatus>,
2372    /// The annual revenue generated by this customer. Null if revenue data has not been provided. May be synced from an external data source such as a CRM integration.
2373    pub revenue: Option<i64>,
2374    /// The number of employees or seats at the customer organization. Null if size data has not been provided. May be synced from an external data source such as a CRM integration.
2375    pub size: Option<f64>,
2376    /// The tier or segment assigned to this customer for prioritization (e.g., Enterprise, Pro, Free). Null if no tier has been assigned.
2377    pub tier: Option<CustomerTier>,
2378    /// The approximate count of customer needs (requests) associated with this customer. This is a denormalized counter and may not reflect the exact count at all times.
2379    pub approximate_need_count: Option<f64>,
2380    /// A unique, human-readable URL slug for the customer. Automatically generated and used in customer page URLs.
2381    pub slug_id: Option<String>,
2382    /// The primary external source ID when a customer has data from multiple external systems. Must be one of the values in the externalIds array. Null if the customer has zero or one external source.
2383    pub main_source_id: Option<String>,
2384    /// The list of customer needs (product requests and feedback) associated with this customer.
2385    pub needs: Option<Vec<CustomerNeed>>,
2386    /// The integration that manages this customer's data (e.g., Intercom, Salesforce). Null if the customer is not managed by any data source integration.
2387    pub integration: Option<Box<Integration>>,
2388    /// The URL of the customer's page in the Linear application.
2389    pub url: Option<String>,
2390}
2391impl GraphQLFields for Customer {
2392    type FullType = Self;
2393    fn selection() -> String {
2394        "id createdAt updatedAt archivedAt name logoUrl domains externalIds slackChannelId revenue size approximateNeedCount slugId mainSourceId url"
2395            .into()
2396    }
2397}
2398#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2399#[serde(rename_all = "camelCase", default)]
2400pub struct CustomerConnection {
2401    pub edges: Option<Vec<CustomerEdge>>,
2402    pub nodes: Option<Vec<Customer>>,
2403    pub page_info: Option<PageInfo>,
2404}
2405impl GraphQLFields for CustomerConnection {
2406    type FullType = Self;
2407    fn selection() -> String {
2408        "".into()
2409    }
2410}
2411#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2412#[serde(rename_all = "camelCase", default)]
2413pub struct CustomerEdge {
2414    pub node: Option<Customer>,
2415    /// Used in `before` and `after` args
2416    pub cursor: Option<String>,
2417}
2418impl GraphQLFields for CustomerEdge {
2419    type FullType = Self;
2420    fn selection() -> String {
2421        "cursor".into()
2422    }
2423}
2424/// A customer need represents a specific product request or piece of feedback from a customer. Customer needs serve as the bridge between customer feedback and engineering work by linking a customer to an issue or project, optionally with a comment or attachment providing additional context. Needs can be created manually, from integrations, or from intake sources like email.
2425#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2426#[serde(rename_all = "camelCase", default)]
2427pub struct CustomerNeed {
2428    /// The unique identifier of the entity.
2429    pub id: Option<String>,
2430    /// The time at which the entity was created.
2431    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2432    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
2433    /// been updated after creation.
2434    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
2435    /// The time at which the entity was archived. Null if the entity has not been archived.
2436    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
2437    /// The customer organization this need belongs to. Null if the need has not yet been associated with a customer.
2438    pub customer: Option<Customer>,
2439    /// The issue this need is linked to. Either issueId or projectId must be set. When set, the need's projectId is denormalized from the issue's project.
2440    pub issue: Option<Issue>,
2441    /// The project this need is linked to. For issue-based needs, this is denormalized from the issue's project. For project-only needs, this is set directly.
2442    pub project: Option<Project>,
2443    /// An optional comment providing additional context for this need. Null if the need was not created from or associated with a specific comment.
2444    pub comment: Option<Comment>,
2445    /// The issue attachment linked to this need. Populated when the need originates from an intake source (e.g., Slack, Intercom) or when a URL is manually provided. Provides a link back to the original source of the customer feedback. Mutually exclusive with projectAttachment.
2446    pub attachment: Option<Attachment>,
2447    /// The project attachment linked to this need. Populated when the need originates from an intake source or when a URL is manually provided for a project-level need. Provides a link back to the original source of the customer feedback. Mutually exclusive with attachment.
2448    pub project_attachment: Option<ProjectAttachment>,
2449    /// Whether the customer need is important or not. 0 = Not important, 1 = Important.
2450    pub priority: Option<f64>,
2451    /// The body content of the need in Markdown format. Used to capture manual input about needs that cannot be directly tied to an attachment. Null if the need's content comes from an attached source.
2452    pub body: Option<String>,
2453    /// `Internal` The body content of the need as a Prosemirror document JSON string. This is the structured representation of the body field, used for rich text rendering in the editor.
2454    pub body_data: Option<String>,
2455    /// The user who manually created this customer need. Null for needs created automatically by integrations or intake sources.
2456    pub creator: Option<User>,
2457    /// The issue this customer need was originally created on, before being moved to a different issue or project. Null if the customer need has not been moved from its original location.
2458    pub original_issue: Option<Issue>,
2459    /// The URL of the source attachment linked to this need, if any. Returns the URL from either the issue attachment or project attachment. Null if the need has no attached source.
2460    pub url: Option<String>,
2461}
2462impl GraphQLFields for CustomerNeed {
2463    type FullType = Self;
2464    fn selection() -> String {
2465        "id createdAt updatedAt archivedAt priority body bodyData url".into()
2466    }
2467}
2468/// A generic payload return from entity archive mutations.
2469#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2470#[serde(rename_all = "camelCase", default)]
2471pub struct CustomerNeedArchivePayload {
2472    /// The identifier of the last sync operation.
2473    pub last_sync_id: Option<f64>,
2474    /// Whether the operation was successful.
2475    pub success: Option<bool>,
2476    /// The archived/unarchived entity. Null if entity was deleted.
2477    pub entity: Option<CustomerNeed>,
2478}
2479impl GraphQLFields for CustomerNeedArchivePayload {
2480    type FullType = Self;
2481    fn selection() -> String {
2482        "lastSyncId success".into()
2483    }
2484}
2485#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2486#[serde(rename_all = "camelCase", default)]
2487pub struct CustomerNeedConnection {
2488    pub edges: Option<Vec<CustomerNeedEdge>>,
2489    pub nodes: Option<Vec<CustomerNeed>>,
2490    pub page_info: Option<PageInfo>,
2491}
2492impl GraphQLFields for CustomerNeedConnection {
2493    type FullType = Self;
2494    fn selection() -> String {
2495        "".into()
2496    }
2497}
2498#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2499#[serde(rename_all = "camelCase", default)]
2500pub struct CustomerNeedEdge {
2501    pub node: Option<CustomerNeed>,
2502    /// Used in `before` and `after` args
2503    pub cursor: Option<String>,
2504}
2505impl GraphQLFields for CustomerNeedEdge {
2506    type FullType = Self;
2507    fn selection() -> String {
2508        "cursor".into()
2509    }
2510}
2511/// A notification related to a customer need (request), such as creation, resolution, or being marked as important.
2512#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2513#[serde(rename_all = "camelCase", default)]
2514pub struct CustomerNeedNotification {
2515    /// The unique identifier of the entity.
2516    pub id: Option<String>,
2517    /// The time at which the entity was created.
2518    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2519    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
2520    /// been updated after creation.
2521    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
2522    /// The time at which the entity was archived. Null if the entity has not been archived.
2523    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
2524    /// Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated.
2525    pub r#type: Option<String>,
2526    /// The user that caused the notification. Null if the notification was triggered by a non-user actor such as an integration, external user, or system event.
2527    pub actor: Option<User>,
2528    /// The external user that caused the notification. Populated when the notification was triggered by an external user (e.g., a commenter from a connected integration like Slack or GitHub) rather than a Linear workspace member.
2529    pub external_user_actor: Option<ExternalUser>,
2530    /// The recipient user of this notification.
2531    pub user: Option<User>,
2532    /// The time at which the user marked the notification as read. Null if the notification is unread.
2533    pub read_at: Option<chrono::DateTime<chrono::Utc>>,
2534    /// The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent.
2535    pub emailed_at: Option<chrono::DateTime<chrono::Utc>>,
2536    /// The time until which a notification is snoozed. After this time, the notification reappears in the user's inbox. Null if the notification is not currently snoozed.
2537    pub snoozed_until_at: Option<chrono::DateTime<chrono::Utc>>,
2538    /// The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed.
2539    pub unsnoozed_at: Option<chrono::DateTime<chrono::Utc>>,
2540    /// The category of the notification.
2541    pub category: Option<NotificationCategory>,
2542    /// `Internal` URL to the target of the notification.
2543    pub url: Option<String>,
2544    /// `Internal` Inbox URL for the notification.
2545    pub inbox_url: Option<String>,
2546    /// `Internal` Notification title.
2547    pub title: Option<String>,
2548    /// `Internal` Notification subtitle.
2549    pub subtitle: Option<String>,
2550    /// `Internal` If notification actor was Linear.
2551    pub is_linear_actor: Option<bool>,
2552    /// `Internal` Notification avatar URL.
2553    pub actor_avatar_url: Option<String>,
2554    /// `Internal` Notification actor initials if avatar is not available.
2555    pub actor_initials: Option<String>,
2556    /// `Internal` Notification actor initials if avatar is not available.
2557    pub actor_avatar_color: Option<String>,
2558    /// `Internal` Issue's status type for issue notifications.
2559    pub issue_status_type: Option<String>,
2560    /// `Internal` Project update health for new updates.
2561    pub project_update_health: Option<String>,
2562    /// `Internal` Initiative update health for new updates.
2563    pub initiative_update_health: Option<String>,
2564    /// `Internal` Notifications with the same grouping key will be grouped together in the UI.
2565    pub grouping_key: Option<String>,
2566    /// `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`.
2567    pub grouping_priority: Option<f64>,
2568    /// The bot that caused the notification.
2569    pub bot_actor: Option<ActorBot>,
2570    /// Related customer need.
2571    pub customer_need_id: Option<String>,
2572    /// The issue related to the notification.
2573    pub related_issue: Option<Issue>,
2574    /// The project related to the notification.
2575    pub related_project: Option<Project>,
2576    /// The customer need related to the notification.
2577    pub customer_need: Option<CustomerNeed>,
2578}
2579impl GraphQLFields for CustomerNeedNotification {
2580    type FullType = Self;
2581    fn selection() -> String {
2582        "id createdAt updatedAt archivedAt type readAt emailedAt snoozedUntilAt unsnoozedAt category url inboxUrl title subtitle isLinearActor actorAvatarUrl actorInitials actorAvatarColor issueStatusType projectUpdateHealth initiativeUpdateHealth groupingKey groupingPriority customerNeedId"
2583            .into()
2584    }
2585}
2586/// Return type for customer need mutations.
2587#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2588#[serde(rename_all = "camelCase", default)]
2589pub struct CustomerNeedPayload {
2590    /// The identifier of the last sync operation.
2591    pub last_sync_id: Option<f64>,
2592    /// The customer need entity that was created or updated by the mutation.
2593    pub need: Option<CustomerNeed>,
2594    /// Whether the operation was successful.
2595    pub success: Option<bool>,
2596}
2597impl GraphQLFields for CustomerNeedPayload {
2598    type FullType = Self;
2599    fn selection() -> String {
2600        "lastSyncId success".into()
2601    }
2602}
2603/// Return type for customer need update mutations, including any related needs that were also updated.
2604#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2605#[serde(rename_all = "camelCase", default)]
2606pub struct CustomerNeedUpdatePayload {
2607    /// The identifier of the last sync operation.
2608    pub last_sync_id: Option<f64>,
2609    /// The customer need entity that was created or updated by the mutation.
2610    pub need: Option<CustomerNeed>,
2611    /// Whether the operation was successful.
2612    pub success: Option<bool>,
2613    /// Additional customer needs from the same customer on the same issue/project that were updated when applyPriorityToRelatedNeeds was set.
2614    pub updated_related_needs: Option<Vec<CustomerNeed>>,
2615}
2616impl GraphQLFields for CustomerNeedUpdatePayload {
2617    type FullType = Self;
2618    fn selection() -> String {
2619        "lastSyncId success".into()
2620    }
2621}
2622/// A notification related to a customer, such as being added as the customer owner.
2623#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2624#[serde(rename_all = "camelCase", default)]
2625pub struct CustomerNotification {
2626    /// The unique identifier of the entity.
2627    pub id: Option<String>,
2628    /// The time at which the entity was created.
2629    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2630    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
2631    /// been updated after creation.
2632    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
2633    /// The time at which the entity was archived. Null if the entity has not been archived.
2634    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
2635    /// Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated.
2636    pub r#type: Option<String>,
2637    /// The user that caused the notification. Null if the notification was triggered by a non-user actor such as an integration, external user, or system event.
2638    pub actor: Option<User>,
2639    /// The external user that caused the notification. Populated when the notification was triggered by an external user (e.g., a commenter from a connected integration like Slack or GitHub) rather than a Linear workspace member.
2640    pub external_user_actor: Option<ExternalUser>,
2641    /// The recipient user of this notification.
2642    pub user: Option<User>,
2643    /// The time at which the user marked the notification as read. Null if the notification is unread.
2644    pub read_at: Option<chrono::DateTime<chrono::Utc>>,
2645    /// The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent.
2646    pub emailed_at: Option<chrono::DateTime<chrono::Utc>>,
2647    /// The time until which a notification is snoozed. After this time, the notification reappears in the user's inbox. Null if the notification is not currently snoozed.
2648    pub snoozed_until_at: Option<chrono::DateTime<chrono::Utc>>,
2649    /// The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed.
2650    pub unsnoozed_at: Option<chrono::DateTime<chrono::Utc>>,
2651    /// The category of the notification.
2652    pub category: Option<NotificationCategory>,
2653    /// `Internal` URL to the target of the notification.
2654    pub url: Option<String>,
2655    /// `Internal` Inbox URL for the notification.
2656    pub inbox_url: Option<String>,
2657    /// `Internal` Notification title.
2658    pub title: Option<String>,
2659    /// `Internal` Notification subtitle.
2660    pub subtitle: Option<String>,
2661    /// `Internal` If notification actor was Linear.
2662    pub is_linear_actor: Option<bool>,
2663    /// `Internal` Notification avatar URL.
2664    pub actor_avatar_url: Option<String>,
2665    /// `Internal` Notification actor initials if avatar is not available.
2666    pub actor_initials: Option<String>,
2667    /// `Internal` Notification actor initials if avatar is not available.
2668    pub actor_avatar_color: Option<String>,
2669    /// `Internal` Issue's status type for issue notifications.
2670    pub issue_status_type: Option<String>,
2671    /// `Internal` Project update health for new updates.
2672    pub project_update_health: Option<String>,
2673    /// `Internal` Initiative update health for new updates.
2674    pub initiative_update_health: Option<String>,
2675    /// `Internal` Notifications with the same grouping key will be grouped together in the UI.
2676    pub grouping_key: Option<String>,
2677    /// `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`.
2678    pub grouping_priority: Option<f64>,
2679    /// The bot that caused the notification.
2680    pub bot_actor: Option<ActorBot>,
2681    /// Related customer.
2682    pub customer_id: Option<String>,
2683    /// The customer related to the notification.
2684    pub customer: Option<Customer>,
2685}
2686impl GraphQLFields for CustomerNotification {
2687    type FullType = Self;
2688    fn selection() -> String {
2689        "id createdAt updatedAt archivedAt type readAt emailedAt snoozedUntilAt unsnoozedAt category url inboxUrl title subtitle isLinearActor actorAvatarUrl actorInitials actorAvatarColor issueStatusType projectUpdateHealth initiativeUpdateHealth groupingKey groupingPriority customerId"
2690            .into()
2691    }
2692}
2693/// A notification subscription scoped to a specific customer. The subscriber receives notifications for events related to this customer, such as new customer needs or ownership changes.
2694#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2695#[serde(rename_all = "camelCase", default)]
2696pub struct CustomerNotificationSubscription {
2697    /// The unique identifier of the entity.
2698    pub id: Option<String>,
2699    /// The time at which the entity was created.
2700    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2701    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
2702    /// been updated after creation.
2703    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
2704    /// The time at which the entity was archived. Null if the entity has not been archived.
2705    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
2706    /// The user who will receive notifications from this subscription.
2707    pub subscriber: Option<User>,
2708    /// The customer subscribed to.
2709    pub customer: Option<Customer>,
2710    /// The custom view that this notification subscription is scoped to. Null if the subscription targets a different entity type.
2711    pub custom_view: Option<CustomView>,
2712    /// The cycle that this notification subscription is scoped to. Null if the subscription targets a different entity type.
2713    pub cycle: Option<Cycle>,
2714    /// The issue label that this notification subscription is scoped to. Null if the subscription targets a different entity type.
2715    pub label: Option<IssueLabel>,
2716    /// The project that this notification subscription is scoped to. Null if the subscription targets a different entity type.
2717    pub project: Option<Project>,
2718    /// The initiative that this notification subscription is scoped to. Null if the subscription targets a different entity type.
2719    pub initiative: Option<Initiative>,
2720    /// The team that this notification subscription is scoped to. Null if the subscription targets a different entity type.
2721    pub team: Option<Team>,
2722    /// The user that this notification subscription is scoped to, for user-specific view subscriptions. Null if the subscription targets a different entity type.
2723    pub user: Option<User>,
2724    /// The type of contextual view (e.g., active issues, backlog) that further scopes a team notification subscription. Null if the subscription is not associated with a specific view type.
2725    pub context_view_type: Option<ContextViewType>,
2726    /// The type of user-specific view that further scopes a user notification subscription. Null if the subscription is not associated with a user view type.
2727    pub user_context_view_type: Option<UserContextViewType>,
2728    /// Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists.
2729    pub active: Option<bool>,
2730    /// The notification event types that this subscription will deliver to the subscriber.
2731    pub notification_subscription_types: Option<Vec<String>>,
2732}
2733impl GraphQLFields for CustomerNotificationSubscription {
2734    type FullType = Self;
2735    fn selection() -> String {
2736        "id createdAt updatedAt archivedAt contextViewType userContextViewType active notificationSubscriptionTypes"
2737            .into()
2738    }
2739}
2740/// Return type for customer mutations.
2741#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2742#[serde(rename_all = "camelCase", default)]
2743pub struct CustomerPayload {
2744    /// The identifier of the last sync operation.
2745    pub last_sync_id: Option<f64>,
2746    /// The customer entity that was created or updated by the mutation.
2747    pub customer: Option<Customer>,
2748    /// Whether the operation was successful.
2749    pub success: Option<bool>,
2750}
2751impl GraphQLFields for CustomerPayload {
2752    type FullType = Self;
2753    fn selection() -> String {
2754        "lastSyncId success".into()
2755    }
2756}
2757/// A workspace-defined lifecycle status for customers (e.g., Active, Churned, Trial). Customer statuses are ordered by position and displayed with a color in the UI. Every workspace has at least one status, and a default status is assigned to new customers when none is specified.
2758#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2759#[serde(rename_all = "camelCase", default)]
2760pub struct CustomerStatus {
2761    /// The unique identifier of the entity.
2762    pub id: Option<String>,
2763    /// The time at which the entity was created.
2764    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2765    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
2766    /// been updated after creation.
2767    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
2768    /// The time at which the entity was archived. Null if the entity has not been archived.
2769    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
2770    /// The internal name of the status. Used as the default display name if no displayName is explicitly set.
2771    pub name: Option<String>,
2772    /// The color of the status indicator in the UI, as a HEX string (e.g., '#ff0000').
2773    pub color: Option<String>,
2774    /// An optional description explaining what this status represents in the customer lifecycle.
2775    pub description: Option<String>,
2776    /// The sort position of the status in the workspace's customer lifecycle flow. Lower values appear first. Collisions are automatically resolved by redistributing positions.
2777    pub position: Option<f64>,
2778    /// The user-facing display name of the status shown in the UI. Defaults to the internal name if not explicitly set.
2779    pub display_name: Option<String>,
2780    /// `Deprecated` The type of the customer status. Always returns null as statuses are no longer grouped by type.
2781    pub r#type: Option<CustomerStatusType>,
2782}
2783impl GraphQLFields for CustomerStatus {
2784    type FullType = Self;
2785    fn selection() -> String {
2786        "id createdAt updatedAt archivedAt name color description position displayName type".into()
2787    }
2788}
2789#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2790#[serde(rename_all = "camelCase", default)]
2791pub struct CustomerStatusConnection {
2792    pub edges: Option<Vec<CustomerStatusEdge>>,
2793    pub nodes: Option<Vec<CustomerStatus>>,
2794    pub page_info: Option<PageInfo>,
2795}
2796impl GraphQLFields for CustomerStatusConnection {
2797    type FullType = Self;
2798    fn selection() -> String {
2799        "".into()
2800    }
2801}
2802#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2803#[serde(rename_all = "camelCase", default)]
2804pub struct CustomerStatusEdge {
2805    pub node: Option<CustomerStatus>,
2806    /// Used in `before` and `after` args
2807    pub cursor: Option<String>,
2808}
2809impl GraphQLFields for CustomerStatusEdge {
2810    type FullType = Self;
2811    fn selection() -> String {
2812        "cursor".into()
2813    }
2814}
2815/// Return type for customer status mutations.
2816#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2817#[serde(rename_all = "camelCase", default)]
2818pub struct CustomerStatusPayload {
2819    /// The identifier of the last sync operation.
2820    pub last_sync_id: Option<f64>,
2821    /// The customer status entity that was created or updated by the mutation.
2822    pub status: Option<CustomerStatus>,
2823    /// Whether the operation was successful.
2824    pub success: Option<bool>,
2825}
2826impl GraphQLFields for CustomerStatusPayload {
2827    type FullType = Self;
2828    fn selection() -> String {
2829        "lastSyncId success".into()
2830    }
2831}
2832/// A workspace-defined tier or segment for categorizing customers (e.g., Enterprise, Pro, Free). Customer tiers are used for prioritization and filtering, are ordered by position, and displayed with a color in the UI. Tier names are unique within a workspace.
2833#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2834#[serde(rename_all = "camelCase", default)]
2835pub struct CustomerTier {
2836    /// The unique identifier of the entity.
2837    pub id: Option<String>,
2838    /// The time at which the entity was created.
2839    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2840    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
2841    /// been updated after creation.
2842    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
2843    /// The time at which the entity was archived. Null if the entity has not been archived.
2844    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
2845    /// The internal name of the tier. Must be unique within the workspace. Used as the default display name if no displayName is explicitly set.
2846    pub name: Option<String>,
2847    /// The color of the tier indicator in the UI, as a HEX string (e.g., '#ff0000').
2848    pub color: Option<String>,
2849    /// An optional description explaining what this tier represents and its intended use for customer segmentation.
2850    pub description: Option<String>,
2851    /// The sort position of the tier in the workspace's customer tier ordering. Lower values appear first. Collisions are automatically resolved by redistributing positions.
2852    pub position: Option<f64>,
2853    /// The user-facing display name of the tier shown in the UI. Defaults to the internal name if not explicitly set.
2854    pub display_name: Option<String>,
2855}
2856impl GraphQLFields for CustomerTier {
2857    type FullType = Self;
2858    fn selection() -> String {
2859        "id createdAt updatedAt archivedAt name color description position displayName".into()
2860    }
2861}
2862#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2863#[serde(rename_all = "camelCase", default)]
2864pub struct CustomerTierConnection {
2865    pub edges: Option<Vec<CustomerTierEdge>>,
2866    pub nodes: Option<Vec<CustomerTier>>,
2867    pub page_info: Option<PageInfo>,
2868}
2869impl GraphQLFields for CustomerTierConnection {
2870    type FullType = Self;
2871    fn selection() -> String {
2872        "".into()
2873    }
2874}
2875#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2876#[serde(rename_all = "camelCase", default)]
2877pub struct CustomerTierEdge {
2878    pub node: Option<CustomerTier>,
2879    /// Used in `before` and `after` args
2880    pub cursor: Option<String>,
2881}
2882impl GraphQLFields for CustomerTierEdge {
2883    type FullType = Self;
2884    fn selection() -> String {
2885        "cursor".into()
2886    }
2887}
2888/// Return type for customer tier mutations.
2889#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2890#[serde(rename_all = "camelCase", default)]
2891pub struct CustomerTierPayload {
2892    /// The identifier of the last sync operation.
2893    pub last_sync_id: Option<f64>,
2894    /// The customer tier entity that was created or updated by the mutation.
2895    pub tier: Option<CustomerTier>,
2896    /// Whether the operation was successful.
2897    pub success: Option<bool>,
2898}
2899impl GraphQLFields for CustomerTierPayload {
2900    type FullType = Self;
2901    fn selection() -> String {
2902        "lastSyncId success".into()
2903    }
2904}
2905/// A time-boxed iteration (similar to a sprint) used for planning and tracking work. Cycles belong to a team and have defined start and end dates. Issues are assigned to cycles for time-based planning, and progress is tracked via completed, in-progress, and total scope. Cycles are automatically completed when their end date passes, and uncompleted issues can be carried over to the next cycle.
2906#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2907#[serde(rename_all = "camelCase", default)]
2908pub struct Cycle {
2909    /// The unique identifier of the entity.
2910    pub id: Option<String>,
2911    /// The time at which the entity was created.
2912    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
2913    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
2914    /// been updated after creation.
2915    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
2916    /// The time at which the entity was archived. Null if the entity has not been archived.
2917    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
2918    /// The auto-incrementing number of the cycle, unique within its team. This value is assigned automatically by the database and cannot be set on creation.
2919    pub number: Option<f64>,
2920    /// The custom name of the cycle. If not set, the cycle is displayed using its number (e.g., "Cycle 5").
2921    pub name: Option<String>,
2922    /// The description of the cycle.
2923    pub description: Option<String>,
2924    /// The start date and time of the cycle.
2925    pub starts_at: Option<chrono::DateTime<chrono::Utc>>,
2926    /// The end date and time of the cycle. When a cycle is completed prematurely, this is updated to match the completion time. When cycles are disabled, both endsAt and completedAt are set to the current time.
2927    pub ends_at: Option<chrono::DateTime<chrono::Utc>>,
2928    /// The completion time of the cycle. If null, the cycle has not been completed yet. A cycle is completed either when its end date passes or when it is manually completed early.
2929    pub completed_at: Option<chrono::DateTime<chrono::Utc>>,
2930    /// The time at which the cycle was automatically archived by the auto-pruning process. Null if the cycle has not been auto-archived.
2931    pub auto_archived_at: Option<chrono::DateTime<chrono::Utc>>,
2932    /// The total number of issues in the cycle after each day. Each entry represents a snapshot at the end of that day, forming the basis for burndown charts.
2933    pub issue_count_history: Option<Vec<f64>>,
2934    /// The number of completed issues in the cycle after each day. Each entry corresponds to the same day index as issueCountHistory.
2935    pub completed_issue_count_history: Option<Vec<f64>>,
2936    /// The total number of estimation points (scope) in the cycle after each day. Used for scope-based burndown charts.
2937    pub scope_history: Option<Vec<f64>>,
2938    /// The number of completed estimation points after each day. Used together with scopeHistory for burndown charts.
2939    pub completed_scope_history: Option<Vec<f64>>,
2940    /// The number of in-progress estimation points after each day. Tracks work that has been started but not yet completed.
2941    pub in_progress_scope_history: Option<Vec<f64>>,
2942    /// The team that the cycle belongs to. Each cycle is scoped to exactly one team.
2943    pub team: Option<Box<Team>>,
2944    /// `Internal` The detailed progress history of the cycle, including per-status breakdowns over time.
2945    pub progress_history: Option<serde_json::Value>,
2946    /// `Internal` The current progress snapshot of the cycle, broken down by issue status categories.
2947    pub current_progress: Option<serde_json::Value>,
2948    /// The parent cycle this cycle was inherited from. When a parent team creates cycles, sub-teams automatically receive corresponding inherited cycles.
2949    pub inherited_from: Option<Box<Cycle>>,
2950    /// Whether the cycle is currently active. A cycle is active if the current time is between its start and end dates and it has not been completed.
2951    pub is_active: Option<bool>,
2952    /// Whether the cycle has not yet started. True if the cycle's start date is in the future.
2953    pub is_future: Option<bool>,
2954    /// Whether the cycle's end date has passed.
2955    pub is_past: Option<bool>,
2956    /// Issues that are currently assigned to this cycle.
2957    pub issues: Option<IssueConnection>,
2958    /// Issues that were still open (not completed) when the cycle was closed. These issues may have been moved to the next cycle.
2959    pub uncompleted_issues_upon_close: Option<IssueConnection>,
2960    /// The overall progress of the cycle as a number between 0 and 1. Calculated as (completed estimate points + 0.25 * in-progress estimate points) / total estimate points. Returns 0 if no estimate points exist.
2961    pub progress: Option<f64>,
2962    /// Whether this cycle is the next upcoming (not yet started) cycle for the team.
2963    pub is_next: Option<bool>,
2964    /// Whether this cycle is the most recently completed cycle for the team.
2965    pub is_previous: Option<bool>,
2966    /// `Internal` Documents associated with the cycle.
2967    pub documents: Option<DocumentConnection>,
2968    /// `Internal` Links associated with the cycle.
2969    pub links: Option<EntityExternalLinkConnection>,
2970}
2971impl GraphQLFields for Cycle {
2972    type FullType = Self;
2973    fn selection() -> String {
2974        "id createdAt updatedAt archivedAt number name description startsAt endsAt completedAt autoArchivedAt issueCountHistory completedIssueCountHistory scopeHistory completedScopeHistory inProgressScopeHistory progressHistory currentProgress isActive isFuture isPast progress isNext isPrevious"
2975            .into()
2976    }
2977}
2978/// A generic payload return from entity archive mutations.
2979#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2980#[serde(rename_all = "camelCase", default)]
2981pub struct CycleArchivePayload {
2982    /// The identifier of the last sync operation.
2983    pub last_sync_id: Option<f64>,
2984    /// Whether the operation was successful.
2985    pub success: Option<bool>,
2986    /// The archived/unarchived entity. Null if entity was deleted.
2987    pub entity: Option<Cycle>,
2988}
2989impl GraphQLFields for CycleArchivePayload {
2990    type FullType = Self;
2991    fn selection() -> String {
2992        "lastSyncId success".into()
2993    }
2994}
2995#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2996#[serde(rename_all = "camelCase", default)]
2997pub struct CycleConnection {
2998    pub edges: Option<Vec<CycleEdge>>,
2999    pub nodes: Option<Vec<Cycle>>,
3000    pub page_info: Option<PageInfo>,
3001}
3002impl GraphQLFields for CycleConnection {
3003    type FullType = Self;
3004    fn selection() -> String {
3005        "".into()
3006    }
3007}
3008#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3009#[serde(rename_all = "camelCase", default)]
3010pub struct CycleEdge {
3011    pub node: Option<Cycle>,
3012    /// Used in `before` and `after` args
3013    pub cursor: Option<String>,
3014}
3015impl GraphQLFields for CycleEdge {
3016    type FullType = Self;
3017    fn selection() -> String {
3018        "cursor".into()
3019    }
3020}
3021/// A notification subscription scoped to a specific cycle. The subscriber receives notifications for events related to issues in this cycle.
3022#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3023#[serde(rename_all = "camelCase", default)]
3024pub struct CycleNotificationSubscription {
3025    /// The unique identifier of the entity.
3026    pub id: Option<String>,
3027    /// The time at which the entity was created.
3028    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3029    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
3030    /// been updated after creation.
3031    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
3032    /// The time at which the entity was archived. Null if the entity has not been archived.
3033    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
3034    /// The user who will receive notifications from this subscription.
3035    pub subscriber: Option<User>,
3036    /// The customer that this notification subscription is scoped to. Null if the subscription targets a different entity type.
3037    pub customer: Option<Customer>,
3038    /// The custom view that this notification subscription is scoped to. Null if the subscription targets a different entity type.
3039    pub custom_view: Option<CustomView>,
3040    /// The cycle subscribed to.
3041    pub cycle: Option<Cycle>,
3042    /// The issue label that this notification subscription is scoped to. Null if the subscription targets a different entity type.
3043    pub label: Option<IssueLabel>,
3044    /// The project that this notification subscription is scoped to. Null if the subscription targets a different entity type.
3045    pub project: Option<Project>,
3046    /// The initiative that this notification subscription is scoped to. Null if the subscription targets a different entity type.
3047    pub initiative: Option<Initiative>,
3048    /// The team that this notification subscription is scoped to. Null if the subscription targets a different entity type.
3049    pub team: Option<Team>,
3050    /// The user that this notification subscription is scoped to, for user-specific view subscriptions. Null if the subscription targets a different entity type.
3051    pub user: Option<User>,
3052    /// The type of contextual view (e.g., active issues, backlog) that further scopes a team notification subscription. Null if the subscription is not associated with a specific view type.
3053    pub context_view_type: Option<ContextViewType>,
3054    /// The type of user-specific view that further scopes a user notification subscription. Null if the subscription is not associated with a user view type.
3055    pub user_context_view_type: Option<UserContextViewType>,
3056    /// Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists.
3057    pub active: Option<bool>,
3058    /// The notification event types that this subscription will deliver to the subscriber.
3059    pub notification_subscription_types: Option<Vec<String>>,
3060}
3061impl GraphQLFields for CycleNotificationSubscription {
3062    type FullType = Self;
3063    fn selection() -> String {
3064        "id createdAt updatedAt archivedAt contextViewType userContextViewType active notificationSubscriptionTypes"
3065            .into()
3066    }
3067}
3068/// The payload returned by cycle mutations.
3069#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3070#[serde(rename_all = "camelCase", default)]
3071pub struct CyclePayload {
3072    /// The identifier of the last sync operation.
3073    pub last_sync_id: Option<f64>,
3074    /// The cycle that was created or updated.
3075    pub cycle: Option<Cycle>,
3076    /// Whether the operation was successful.
3077    pub success: Option<bool>,
3078}
3079impl GraphQLFields for CyclePayload {
3080    type FullType = Self;
3081    fn selection() -> String {
3082        "lastSyncId success".into()
3083    }
3084}
3085/// `Internal` A configurable dashboard composed of widgets that display analytics, metrics, and insights. Dashboards can be personal or shared with the workspace, and optionally scoped to one or more teams. Each dashboard contains a set of widget configurations that define what data is visualized.
3086#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3087#[serde(rename_all = "camelCase", default)]
3088pub struct Dashboard {
3089    /// The unique identifier of the entity.
3090    pub id: Option<String>,
3091    /// The time at which the entity was created.
3092    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3093    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
3094    /// been updated after creation.
3095    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
3096    /// The time at which the entity was archived. Null if the entity has not been archived.
3097    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
3098    /// The dashboard's unique URL slug, used to construct human-readable URLs. Automatically generated on creation.
3099    pub slug_id: Option<String>,
3100    /// The name of the dashboard.
3101    pub name: Option<String>,
3102    /// The description of the dashboard.
3103    pub description: Option<String>,
3104    /// The icon of the dashboard. Can be an emoji or a decorative icon identifier.
3105    pub icon: Option<String>,
3106    /// The hex color code of the dashboard icon.
3107    pub color: Option<String>,
3108    /// The sort order of the dashboard within the workspace or its team. Lower values appear first.
3109    pub sort_order: Option<f64>,
3110    /// Whether the dashboard is shared with everyone in the workspace. Shared dashboards are visible to all members; unshared dashboards are only visible to the owner.
3111    pub shared: Option<bool>,
3112    /// The organization that the dashboard belongs to.
3113    pub organization: Option<Box<Organization>>,
3114    /// The user who created the dashboard. Null if the creator's account has been deleted.
3115    pub creator: Option<Box<User>>,
3116    /// The user who last updated the dashboard. Null if no user has updated it or the updater's account has been deleted.
3117    pub updated_by: Option<Box<User>>,
3118    /// The owner of the dashboard. For personal dashboards, only the owner can view them. Null if the owner's account has been deleted.
3119    pub owner: Option<Box<User>>,
3120    /// A global issue filter applied to all dashboard widgets that display issue data. Individual widgets may apply additional filters on top of this.
3121    pub issue_filter: Option<serde_json::Value>,
3122    /// A global project filter applied to all dashboard widgets that display project data. Individual widgets may apply additional filters on top of this.
3123    pub project_filter: Option<serde_json::Value>,
3124    /// The widget configuration for the dashboard, defining the layout grid of rows and the widgets within each row, including their type, size, and data settings.
3125    pub widgets: Option<serde_json::Value>,
3126}
3127impl GraphQLFields for Dashboard {
3128    type FullType = Self;
3129    fn selection() -> String {
3130        "id createdAt updatedAt archivedAt slugId name description icon color sortOrder shared issueFilter projectFilter widgets"
3131            .into()
3132    }
3133}
3134/// A generic payload return from entity deletion mutations.
3135#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3136#[serde(rename_all = "camelCase", default)]
3137pub struct DeletePayload {
3138    /// The identifier of the last sync operation.
3139    pub last_sync_id: Option<f64>,
3140    /// Whether the operation was successful.
3141    pub success: Option<bool>,
3142    /// The identifier of the deleted entity.
3143    pub entity_id: Option<String>,
3144}
3145impl GraphQLFields for DeletePayload {
3146    type FullType = Self;
3147    fn selection() -> String {
3148        "lastSyncId success entityId".into()
3149    }
3150}
3151/// A rich-text document that lives within a project, initiative, team, issue, release, or cycle. Documents support collaborative editing via ProseMirror/Yjs and store their content in a separate DocumentContent entity. Each document is associated with exactly one parent entity.
3152#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3153#[serde(rename_all = "camelCase", default)]
3154pub struct Document {
3155    /// The unique identifier of the entity.
3156    pub id: Option<String>,
3157    /// The time at which the entity was created.
3158    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3159    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
3160    /// been updated after creation.
3161    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
3162    /// The time at which the entity was archived. Null if the entity has not been archived.
3163    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
3164    /// The title of the document. An empty string indicates an untitled document.
3165    pub title: Option<String>,
3166    /// `Internal` A one-sentence AI-generated summary of the document content. Null if no summary has been generated.
3167    pub summary: Option<String>,
3168    /// The icon of the document, either a decorative icon type or an emoji string. Null if no icon has been set.
3169    pub icon: Option<String>,
3170    /// The hex color of the document icon. Null if no custom color has been set.
3171    pub color: Option<String>,
3172    /// The user who created the document. Null if the creator's account has been deleted.
3173    pub creator: Option<Box<User>>,
3174    /// The user who last updated the document. Null if the user's account has been deleted.
3175    pub updated_by: Option<Box<User>>,
3176    /// The project that the document is associated with. Null if the document belongs to a different parent entity type.
3177    pub project: Option<Box<Project>>,
3178    /// The initiative that the document is associated with. Null if the document belongs to a different parent entity type.
3179    pub initiative: Option<Box<Initiative>>,
3180    /// `Internal` The team that the document is associated with. Null if the document belongs to a different parent entity type.
3181    pub team: Option<Box<Team>>,
3182    /// The issue that the document is associated with. Null if the document belongs to a different parent entity type.
3183    pub issue: Option<Box<Issue>>,
3184    /// `Internal` The release that the document is associated with. Null if the document belongs to a different parent entity type.
3185    pub release: Option<Box<Release>>,
3186    /// `Internal` The cycle that the document is associated with. Null if the document belongs to a different parent entity type.
3187    pub cycle: Option<Box<Cycle>>,
3188    /// The document's unique URL slug, used to construct human-readable URLs.
3189    pub slug_id: Option<String>,
3190    /// The last template that was applied to this document. Null if no template has been applied.
3191    pub last_applied_template: Option<Box<Template>>,
3192    /// The time at which the document was hidden from the default view. Null if the document has not been hidden.
3193    pub hidden_at: Option<chrono::DateTime<chrono::Utc>>,
3194    /// A flag that indicates whether the document is in the trash bin. Trashed documents are archived and can be restored.
3195    pub trashed: Option<bool>,
3196    /// The sort order of the document in its parent entity's resources list. This order is shared with other resource types such as external links.
3197    pub sort_order: Option<f64>,
3198    /// Comments associated with the document.
3199    pub comments: Option<CommentConnection>,
3200    /// The document's content in markdown format.
3201    pub content: Option<String>,
3202    /// `Internal` The document's content as a base64-encoded Yjs state update.
3203    pub content_state: Option<String>,
3204    /// The ID of the document content associated with the document.
3205    pub document_content_id: Option<String>,
3206    /// The canonical url for the document.
3207    pub url: Option<String>,
3208}
3209impl GraphQLFields for Document {
3210    type FullType = Self;
3211    fn selection() -> String {
3212        "id createdAt updatedAt archivedAt title summary icon color slugId hiddenAt trashed sortOrder content contentState documentContentId url"
3213            .into()
3214    }
3215}
3216/// A generic payload return from entity archive mutations.
3217#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3218#[serde(rename_all = "camelCase", default)]
3219pub struct DocumentArchivePayload {
3220    /// The identifier of the last sync operation.
3221    pub last_sync_id: Option<f64>,
3222    /// Whether the operation was successful.
3223    pub success: Option<bool>,
3224    /// The archived/unarchived entity. Null if entity was deleted.
3225    pub entity: Option<Document>,
3226}
3227impl GraphQLFields for DocumentArchivePayload {
3228    type FullType = Self;
3229    fn selection() -> String {
3230        "lastSyncId success".into()
3231    }
3232}
3233#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3234#[serde(rename_all = "camelCase", default)]
3235pub struct DocumentConnection {
3236    pub edges: Option<Vec<DocumentEdge>>,
3237    pub nodes: Option<Vec<Document>>,
3238    pub page_info: Option<PageInfo>,
3239}
3240impl GraphQLFields for DocumentConnection {
3241    type FullType = Self;
3242    fn selection() -> String {
3243        "".into()
3244    }
3245}
3246/// The rich-text content body of a document, issue, project, initiative, project milestone, pull request, release note, AI prompt rules, or welcome message. Content is stored as a base64-encoded Yjs state and can be converted to Markdown or ProseMirror JSON. Each DocumentContent belongs to exactly one parent entity and supports real-time collaborative editing.
3247#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3248#[serde(rename_all = "camelCase", default)]
3249pub struct DocumentContent {
3250    /// The unique identifier of the entity.
3251    pub id: Option<String>,
3252    /// The time at which the entity was created.
3253    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3254    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
3255    /// been updated after creation.
3256    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
3257    /// The time at which the entity was archived. Null if the entity has not been archived.
3258    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
3259    /// The document content in markdown format. This is a derived representation of the canonical Yjs content state.
3260    pub content: Option<String>,
3261    /// The document content state as a base64-encoded Yjs state update. This is the canonical representation of the document content used for collaborative editing.
3262    pub content_state: Option<String>,
3263    /// The issue that the content is associated with. Null if the content belongs to a different parent entity type.
3264    pub issue: Option<Box<Issue>>,
3265    /// `Internal` The pull request that the content is associated with. Null if the content belongs to a different parent entity type.
3266    pub pull_request: Option<Box<PullRequest>>,
3267    /// The project that the content is associated with. Null if the content belongs to a different parent entity type.
3268    pub project: Option<Box<Project>>,
3269    /// The initiative that the content is associated with. Null if the content belongs to a different parent entity type.
3270    pub initiative: Option<Box<Initiative>>,
3271    /// The project milestone that the content is associated with. Null if the content belongs to a different parent entity type.
3272    pub project_milestone: Option<Box<ProjectMilestone>>,
3273    /// The document that the content is associated with. Null if the content belongs to a different parent entity type.
3274    pub document: Option<Box<Document>>,
3275    /// The AI prompt rules that the content is associated with. Null if the content belongs to a different parent entity type.
3276    pub ai_prompt_rules: Option<Box<AiPromptRules>>,
3277    /// The welcome message that the content is associated with. Null if the content belongs to a different parent entity type.
3278    pub welcome_message: Option<Box<WelcomeMessage>>,
3279    /// The time at which the document content was restored from a previous version in the content history. Null if the content has never been restored.
3280    pub restored_at: Option<chrono::DateTime<chrono::Utc>>,
3281}
3282impl GraphQLFields for DocumentContent {
3283    type FullType = Self;
3284    fn selection() -> String {
3285        "id createdAt updatedAt archivedAt content contentState restoredAt".into()
3286    }
3287}
3288/// A draft revision of document content, pending user review. Each user can have at most one draft per document content. Drafts are seeded from the live document state and stored as base64-encoded Yjs state updates, allowing independent editing without affecting the published document until the user explicitly applies their changes.
3289#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3290#[serde(rename_all = "camelCase", default)]
3291pub struct DocumentContentDraft {
3292    /// The unique identifier of the entity.
3293    pub id: Option<String>,
3294    /// The time at which the entity was created.
3295    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3296    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
3297    /// been updated after creation.
3298    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
3299    /// The time at which the entity was archived. Null if the entity has not been archived.
3300    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
3301    /// The document content that this draft is a revision of.
3302    pub document_content: Option<DocumentContent>,
3303    /// The identifier of the document content that this draft is a revision of.
3304    pub document_content_id: Option<String>,
3305    /// The draft content state as a base64-encoded Yjs state update. This represents the user's in-progress edits that have not yet been applied to the live document.
3306    pub content_state: Option<String>,
3307    /// The user who created or owns this draft.
3308    pub user: Option<User>,
3309    /// The identifier of the user who owns this draft.
3310    pub user_id: Option<String>,
3311}
3312impl GraphQLFields for DocumentContentDraft {
3313    type FullType = Self;
3314    fn selection() -> String {
3315        "id createdAt updatedAt archivedAt documentContentId contentState userId".into()
3316    }
3317}
3318#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3319#[serde(rename_all = "camelCase", default)]
3320pub struct DocumentContentHistoryPayload {
3321    /// The document content history entries.
3322    pub history: Option<Vec<DocumentContentHistoryType>>,
3323    /// Whether the operation was successful.
3324    pub success: Option<bool>,
3325}
3326impl GraphQLFields for DocumentContentHistoryPayload {
3327    type FullType = Self;
3328    fn selection() -> String {
3329        "success".into()
3330    }
3331}
3332#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3333#[serde(rename_all = "camelCase", default)]
3334pub struct DocumentContentHistoryType {
3335    /// The unique identifier of the document content history entry.
3336    pub id: Option<String>,
3337    /// The date when this document content history entry record was created.
3338    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3339    /// The timestamp of the document content state when this snapshot was captured. This can differ from createdAt because the content is captured from its state at the previously known updatedAt timestamp in the case of an update. On document creation, these timestamps can be identical.
3340    pub content_data_snapshot_at: Option<chrono::DateTime<chrono::Utc>>,
3341    /// `Internal` The document content as a ProseMirror document at the time this history entry was captured.
3342    pub content_data: Option<serde_json::Value>,
3343    /// IDs of users whose edits are included in this history entry.
3344    pub actor_ids: Option<Vec<String>>,
3345    /// Metadata associated with the history entry, including content diffs and AI-generated change summaries.
3346    pub metadata: Option<serde_json::Value>,
3347}
3348impl GraphQLFields for DocumentContentHistoryType {
3349    type FullType = Self;
3350    fn selection() -> String {
3351        "id createdAt contentDataSnapshotAt contentData actorIds metadata".into()
3352    }
3353}
3354#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3355#[serde(rename_all = "camelCase", default)]
3356pub struct DocumentEdge {
3357    pub node: Option<Document>,
3358    /// Used in `before` and `after` args
3359    pub cursor: Option<String>,
3360}
3361impl GraphQLFields for DocumentEdge {
3362    type FullType = Self;
3363    fn selection() -> String {
3364        "cursor".into()
3365    }
3366}
3367/// A notification related to a document, such as comments, mentions, content changes, or document lifecycle events.
3368#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3369#[serde(rename_all = "camelCase", default)]
3370pub struct DocumentNotification {
3371    /// Related comment ID. Null if the notification is not related to a comment.
3372    pub comment_id: Option<String>,
3373    /// Related parent comment ID. Null if the notification is not related to a comment.
3374    pub parent_comment_id: Option<String>,
3375    /// Name of the reaction emoji related to the notification.
3376    pub reaction_emoji: Option<String>,
3377    /// The unique identifier of the entity.
3378    pub id: Option<String>,
3379    /// The time at which the entity was created.
3380    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3381    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
3382    /// been updated after creation.
3383    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
3384    /// The time at which the entity was archived. Null if the entity has not been archived.
3385    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
3386    /// Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated.
3387    pub r#type: Option<String>,
3388    /// The user that caused the notification. Null if the notification was triggered by a non-user actor such as an integration, external user, or system event.
3389    pub actor: Option<User>,
3390    /// The external user that caused the notification. Populated when the notification was triggered by an external user (e.g., a commenter from a connected integration like Slack or GitHub) rather than a Linear workspace member.
3391    pub external_user_actor: Option<ExternalUser>,
3392    /// The recipient user of this notification.
3393    pub user: Option<User>,
3394    /// The time at which the user marked the notification as read. Null if the notification is unread.
3395    pub read_at: Option<chrono::DateTime<chrono::Utc>>,
3396    /// The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent.
3397    pub emailed_at: Option<chrono::DateTime<chrono::Utc>>,
3398    /// The time until which a notification is snoozed. After this time, the notification reappears in the user's inbox. Null if the notification is not currently snoozed.
3399    pub snoozed_until_at: Option<chrono::DateTime<chrono::Utc>>,
3400    /// The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed.
3401    pub unsnoozed_at: Option<chrono::DateTime<chrono::Utc>>,
3402    /// The category of the notification.
3403    pub category: Option<NotificationCategory>,
3404    /// `Internal` URL to the target of the notification.
3405    pub url: Option<String>,
3406    /// `Internal` Inbox URL for the notification.
3407    pub inbox_url: Option<String>,
3408    /// `Internal` Notification title.
3409    pub title: Option<String>,
3410    /// `Internal` Notification subtitle.
3411    pub subtitle: Option<String>,
3412    /// `Internal` If notification actor was Linear.
3413    pub is_linear_actor: Option<bool>,
3414    /// `Internal` Notification avatar URL.
3415    pub actor_avatar_url: Option<String>,
3416    /// `Internal` Notification actor initials if avatar is not available.
3417    pub actor_initials: Option<String>,
3418    /// `Internal` Notification actor initials if avatar is not available.
3419    pub actor_avatar_color: Option<String>,
3420    /// `Internal` Issue's status type for issue notifications.
3421    pub issue_status_type: Option<String>,
3422    /// `Internal` Project update health for new updates.
3423    pub project_update_health: Option<String>,
3424    /// `Internal` Initiative update health for new updates.
3425    pub initiative_update_health: Option<String>,
3426    /// `Internal` Notifications with the same grouping key will be grouped together in the UI.
3427    pub grouping_key: Option<String>,
3428    /// `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`.
3429    pub grouping_priority: Option<f64>,
3430    /// The bot that caused the notification.
3431    pub bot_actor: Option<ActorBot>,
3432    /// Related document ID.
3433    pub document_id: Option<String>,
3434}
3435impl GraphQLFields for DocumentNotification {
3436    type FullType = Self;
3437    fn selection() -> String {
3438        "commentId parentCommentId reactionEmoji id createdAt updatedAt archivedAt type readAt emailedAt snoozedUntilAt unsnoozedAt category url inboxUrl title subtitle isLinearActor actorAvatarUrl actorInitials actorAvatarColor issueStatusType projectUpdateHealth initiativeUpdateHealth groupingKey groupingPriority documentId"
3439            .into()
3440    }
3441}
3442/// The result of a document mutation.
3443#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3444#[serde(rename_all = "camelCase", default)]
3445pub struct DocumentPayload {
3446    /// The identifier of the last sync operation.
3447    pub last_sync_id: Option<f64>,
3448    /// The document that was created or updated.
3449    pub document: Option<Document>,
3450    /// Whether the operation was successful.
3451    pub success: Option<bool>,
3452}
3453impl GraphQLFields for DocumentPayload {
3454    type FullType = Self;
3455    fn selection() -> String {
3456        "lastSyncId success".into()
3457    }
3458}
3459#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3460#[serde(rename_all = "camelCase", default)]
3461pub struct DocumentSearchPayload {
3462    pub edges: Option<Vec<DocumentSearchResultEdge>>,
3463    pub nodes: Option<Vec<DocumentSearchResult>>,
3464    pub page_info: Option<PageInfo>,
3465    /// Archived entities matching the search term along with all their dependencies, serialized for the client sync engine.
3466    pub archive_payload: Option<ArchiveResponse>,
3467    /// Total number of matching results before pagination is applied.
3468    pub total_count: Option<f64>,
3469}
3470impl GraphQLFields for DocumentSearchPayload {
3471    type FullType = Self;
3472    fn selection() -> String {
3473        "totalCount".into()
3474    }
3475}
3476#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3477#[serde(rename_all = "camelCase", default)]
3478pub struct DocumentSearchResult {
3479    /// The unique identifier of the entity.
3480    pub id: Option<String>,
3481    /// The time at which the entity was created.
3482    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3483    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
3484    /// been updated after creation.
3485    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
3486    /// The time at which the entity was archived. Null if the entity has not been archived.
3487    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
3488    /// The title of the document. An empty string indicates an untitled document.
3489    pub title: Option<String>,
3490    /// `Internal` A one-sentence AI-generated summary of the document content. Null if no summary has been generated.
3491    pub summary: Option<String>,
3492    /// The icon of the document, either a decorative icon type or an emoji string. Null if no icon has been set.
3493    pub icon: Option<String>,
3494    /// The hex color of the document icon. Null if no custom color has been set.
3495    pub color: Option<String>,
3496    /// The user who created the document. Null if the creator's account has been deleted.
3497    pub creator: Option<User>,
3498    /// The user who last updated the document. Null if the user's account has been deleted.
3499    pub updated_by: Option<User>,
3500    /// The project that the document is associated with. Null if the document belongs to a different parent entity type.
3501    pub project: Option<Project>,
3502    /// The initiative that the document is associated with. Null if the document belongs to a different parent entity type.
3503    pub initiative: Option<Initiative>,
3504    /// `Internal` The team that the document is associated with. Null if the document belongs to a different parent entity type.
3505    pub team: Option<Team>,
3506    /// The issue that the document is associated with. Null if the document belongs to a different parent entity type.
3507    pub issue: Option<Issue>,
3508    /// `Internal` The release that the document is associated with. Null if the document belongs to a different parent entity type.
3509    pub release: Option<Release>,
3510    /// `Internal` The cycle that the document is associated with. Null if the document belongs to a different parent entity type.
3511    pub cycle: Option<Cycle>,
3512    /// The document's unique URL slug, used to construct human-readable URLs.
3513    pub slug_id: Option<String>,
3514    /// The last template that was applied to this document. Null if no template has been applied.
3515    pub last_applied_template: Option<Template>,
3516    /// The time at which the document was hidden from the default view. Null if the document has not been hidden.
3517    pub hidden_at: Option<chrono::DateTime<chrono::Utc>>,
3518    /// A flag that indicates whether the document is in the trash bin. Trashed documents are archived and can be restored.
3519    pub trashed: Option<bool>,
3520    /// The sort order of the document in its parent entity's resources list. This order is shared with other resource types such as external links.
3521    pub sort_order: Option<f64>,
3522    /// Comments associated with the document.
3523    pub comments: Option<CommentConnection>,
3524    /// The document's content in markdown format.
3525    pub content: Option<String>,
3526    /// `Internal` The document's content as a base64-encoded Yjs state update.
3527    pub content_state: Option<String>,
3528    /// The ID of the document content associated with the document.
3529    pub document_content_id: Option<String>,
3530    /// The canonical url for the document.
3531    pub url: Option<String>,
3532    /// Metadata related to search result.
3533    pub metadata: Option<serde_json::Value>,
3534}
3535impl GraphQLFields for DocumentSearchResult {
3536    type FullType = Self;
3537    fn selection() -> String {
3538        "id createdAt updatedAt archivedAt title summary icon color slugId hiddenAt trashed sortOrder content contentState documentContentId url metadata"
3539            .into()
3540    }
3541}
3542#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3543#[serde(rename_all = "camelCase", default)]
3544pub struct DocumentSearchResultEdge {
3545    pub node: Option<DocumentSearchResult>,
3546    /// Used in `before` and `after` args
3547    pub cursor: Option<String>,
3548}
3549impl GraphQLFields for DocumentSearchResultEdge {
3550    type FullType = Self;
3551    fn selection() -> String {
3552        "cursor".into()
3553    }
3554}
3555/// A general-purpose draft for unsaved content. Drafts store in-progress text for comments, project updates, initiative updates, posts, pull request comments, and customer needs. Each draft belongs to a user and is associated with exactly one parent entity. Drafts are automatically deleted when the user publishes the corresponding comment or update.
3556#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3557#[serde(rename_all = "camelCase", default)]
3558pub struct Draft {
3559    /// The unique identifier of the entity.
3560    pub id: Option<String>,
3561    /// The time at which the entity was created.
3562    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3563    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
3564    /// been updated after creation.
3565    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
3566    /// The time at which the entity was archived. Null if the entity has not been archived.
3567    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
3568    /// The draft text content as a ProseMirror document.
3569    pub body_data: Option<serde_json::Value>,
3570    /// Additional properties for the draft, such as generation metadata for AI-generated drafts, health status for project updates, or post titles.
3571    pub data: Option<serde_json::Value>,
3572    /// Whether the draft was autogenerated for the user.
3573    pub is_autogenerated: Option<bool>,
3574    /// `INTERNAL` Whether the draft was ported from a local draft.
3575    pub was_local_draft: Option<bool>,
3576    /// The user who created the draft.
3577    pub user: Option<User>,
3578    /// The issue for which this is a draft comment. Null if the draft belongs to a different parent entity type.
3579    pub issue: Option<Issue>,
3580    /// The project for which this is a draft comment or project update. Null if the draft belongs to a different parent entity type.
3581    pub project: Option<Project>,
3582    /// The project update for which this is a draft comment. Null if the draft belongs to a different parent entity type.
3583    pub project_update: Option<ProjectUpdate>,
3584    /// The initiative for which this is a draft comment or initiative update. Null if the draft belongs to a different parent entity type.
3585    pub initiative: Option<Initiative>,
3586    /// The initiative update for which this is a draft comment. Null if the draft belongs to a different parent entity type.
3587    pub initiative_update: Option<InitiativeUpdate>,
3588    /// The post for which this is a draft comment. Null if the draft belongs to a different parent entity type.
3589    pub post: Option<Post>,
3590    /// The parent comment for which this is a draft reply. Null if the draft is a top-level comment or belongs to a different parent entity type.
3591    pub parent_comment: Option<Comment>,
3592    /// The customer need that this draft is referencing. Null if the draft belongs to a different parent entity type.
3593    pub customer_need: Option<CustomerNeed>,
3594    /// `INTERNAL` Allows for multiple drafts per entity (currently constrained to Pull Requests).
3595    pub anchor: Option<String>,
3596    /// The team for which this is a draft post. Null if the draft belongs to a different parent entity type.
3597    pub team: Option<Team>,
3598}
3599impl GraphQLFields for Draft {
3600    type FullType = Self;
3601    fn selection() -> String {
3602        "id createdAt updatedAt archivedAt bodyData data isAutogenerated wasLocalDraft anchor"
3603            .into()
3604    }
3605}
3606#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3607#[serde(rename_all = "camelCase", default)]
3608pub struct DraftConnection {
3609    pub edges: Option<Vec<DraftEdge>>,
3610    pub nodes: Option<Vec<Draft>>,
3611    pub page_info: Option<PageInfo>,
3612}
3613impl GraphQLFields for DraftConnection {
3614    type FullType = Self;
3615    fn selection() -> String {
3616        "".into()
3617    }
3618}
3619#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3620#[serde(rename_all = "camelCase", default)]
3621pub struct DraftEdge {
3622    pub node: Option<Draft>,
3623    /// Used in `before` and `after` args
3624    pub cursor: Option<String>,
3625}
3626impl GraphQLFields for DraftEdge {
3627    type FullType = Self;
3628    fn selection() -> String {
3629        "cursor".into()
3630    }
3631}
3632/// An email address that creates Linear issues when emails are sent to it. Email intake addresses can be scoped to a specific team or issue template, and support configurable auto-reply messages for issue creation, completion, and cancellation events. They can also be configured for the Asks web form feature, enabling external users to submit requests via email.
3633#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3634#[serde(rename_all = "camelCase", default)]
3635pub struct EmailIntakeAddress {
3636    /// The unique identifier of the entity.
3637    pub id: Option<String>,
3638    /// The time at which the entity was created.
3639    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3640    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
3641    /// been updated after creation.
3642    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
3643    /// The time at which the entity was archived. Null if the entity has not been archived.
3644    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
3645    /// The unique local part (before the @) of the intake email address, used to route incoming emails to the correct intake handler.
3646    pub address: Option<String>,
3647    /// The type of the email address.
3648    pub r#type: Option<EmailIntakeAddressType>,
3649    /// The email address used to forward emails to the intake address.
3650    pub forwarding_email_address: Option<String>,
3651    /// The name to be used for outgoing emails.
3652    pub sender_name: Option<String>,
3653    /// Whether the email address is enabled.
3654    pub enabled: Option<bool>,
3655    /// Whether email replies are enabled.
3656    pub replies_enabled: Option<bool>,
3657    /// Whether the commenter's name is included in the email replies.
3658    pub use_user_names_in_replies: Option<bool>,
3659    /// The template that the email address is associated with.
3660    pub template: Option<Template>,
3661    /// The team that the email address is associated with.
3662    pub team: Option<Team>,
3663    /// The workspace that the email address is associated with.
3664    pub organization: Option<Organization>,
3665    /// The SES domain identity that the email address is associated with.
3666    pub ses_domain_identity: Option<SesDomainIdentity>,
3667    /// The user who created the email intake address.
3668    pub creator: Option<User>,
3669    /// Whether issues created from emails sent to this address are automatically converted into customer requests, linking the sender as a customer contact.
3670    pub customer_requests_enabled: Option<bool>,
3671    /// The auto-reply message for issue created. If not set, the default reply will be used.
3672    pub issue_created_auto_reply: Option<String>,
3673    /// Whether the auto-reply for issue created is enabled.
3674    pub issue_created_auto_reply_enabled: Option<bool>,
3675    /// Whether the auto-reply for issue completed is enabled.
3676    pub issue_completed_auto_reply_enabled: Option<bool>,
3677    /// The auto-reply message for issue completed. If not set, the default reply will be used.
3678    pub issue_completed_auto_reply: Option<String>,
3679    /// Whether the auto-reply for issue canceled is enabled.
3680    pub issue_canceled_auto_reply_enabled: Option<bool>,
3681    /// The auto-reply message for issue canceled. If not set, the default reply will be used.
3682    pub issue_canceled_auto_reply: Option<String>,
3683    /// Whether to reopen completed or canceled issues when a substantive email reply is received.
3684    pub reopen_on_reply: Option<bool>,
3685}
3686impl GraphQLFields for EmailIntakeAddress {
3687    type FullType = Self;
3688    fn selection() -> String {
3689        "id createdAt updatedAt archivedAt address type forwardingEmailAddress senderName enabled repliesEnabled useUserNamesInReplies customerRequestsEnabled issueCreatedAutoReply issueCreatedAutoReplyEnabled issueCompletedAutoReplyEnabled issueCompletedAutoReply issueCanceledAutoReplyEnabled issueCanceledAutoReply reopenOnReply"
3690            .into()
3691    }
3692}
3693/// The result of an email intake address mutation.
3694#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3695#[serde(rename_all = "camelCase", default)]
3696pub struct EmailIntakeAddressPayload {
3697    /// The identifier of the last sync operation.
3698    pub last_sync_id: Option<f64>,
3699    /// The email address that was created or updated.
3700    pub email_intake_address: Option<EmailIntakeAddress>,
3701    /// Whether the operation was successful.
3702    pub success: Option<bool>,
3703}
3704impl GraphQLFields for EmailIntakeAddressPayload {
3705    type FullType = Self;
3706    fn selection() -> String {
3707        "lastSyncId success".into()
3708    }
3709}
3710/// The result of an email unsubscribe mutation.
3711#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3712#[serde(rename_all = "camelCase", default)]
3713pub struct EmailUnsubscribePayload {
3714    /// Whether the operation was successful.
3715    pub success: Option<bool>,
3716}
3717impl GraphQLFields for EmailUnsubscribePayload {
3718    type FullType = Self;
3719    fn selection() -> String {
3720        "success".into()
3721    }
3722}
3723#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3724#[serde(rename_all = "camelCase", default)]
3725pub struct EmailUserAccountAuthChallengeResponse {
3726    /// Whether the operation was successful.
3727    pub success: Option<bool>,
3728    /// Supported challenge for this user account. Can be either verificationCode or password.
3729    pub auth_type: Option<String>,
3730}
3731impl GraphQLFields for EmailUserAccountAuthChallengeResponse {
3732    type FullType = Self;
3733    fn selection() -> String {
3734        "success authType".into()
3735    }
3736}
3737/// A custom emoji defined in the workspace. Custom emojis are uploaded by users and can be used in reactions and other places where standard emojis are supported. Each emoji has a unique name within the workspace.
3738#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3739#[serde(rename_all = "camelCase", default)]
3740pub struct Emoji {
3741    /// The unique identifier of the entity.
3742    pub id: Option<String>,
3743    /// The time at which the entity was created.
3744    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3745    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
3746    /// been updated after creation.
3747    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
3748    /// The time at which the entity was archived. Null if the entity has not been archived.
3749    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
3750    /// The unique name of the custom emoji within the workspace.
3751    pub name: Option<String>,
3752    /// The URL of the uploaded image for this custom emoji.
3753    pub url: Option<String>,
3754    /// The source of the emoji, indicating how it was created (e.g., uploaded by a user or imported).
3755    pub source: Option<String>,
3756    /// The user who created the emoji.
3757    pub creator: Option<User>,
3758    /// The workspace that the emoji belongs to.
3759    pub organization: Option<Organization>,
3760}
3761impl GraphQLFields for Emoji {
3762    type FullType = Self;
3763    fn selection() -> String {
3764        "id createdAt updatedAt archivedAt name url source".into()
3765    }
3766}
3767#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3768#[serde(rename_all = "camelCase", default)]
3769pub struct EmojiConnection {
3770    pub edges: Option<Vec<EmojiEdge>>,
3771    pub nodes: Option<Vec<Emoji>>,
3772    pub page_info: Option<PageInfo>,
3773}
3774impl GraphQLFields for EmojiConnection {
3775    type FullType = Self;
3776    fn selection() -> String {
3777        "".into()
3778    }
3779}
3780#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3781#[serde(rename_all = "camelCase", default)]
3782pub struct EmojiEdge {
3783    pub node: Option<Emoji>,
3784    /// Used in `before` and `after` args
3785    pub cursor: Option<String>,
3786}
3787impl GraphQLFields for EmojiEdge {
3788    type FullType = Self;
3789    fn selection() -> String {
3790        "cursor".into()
3791    }
3792}
3793/// The result of a custom emoji mutation.
3794#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3795#[serde(rename_all = "camelCase", default)]
3796pub struct EmojiPayload {
3797    /// The identifier of the last sync operation.
3798    pub last_sync_id: Option<f64>,
3799    /// The emoji that was created.
3800    pub emoji: Option<Emoji>,
3801    /// Whether the operation was successful.
3802    pub success: Option<bool>,
3803}
3804impl GraphQLFields for EmojiPayload {
3805    type FullType = Self;
3806    fn selection() -> String {
3807        "lastSyncId success".into()
3808    }
3809}
3810/// An external link attached to a Linear entity such as an initiative, project, team, release, or cycle. External links provide a way to reference related resources outside of Linear (e.g., documentation, design files, dashboards) directly from the entity's resources section. Each link has a URL, display label, and sort order within its parent entity.
3811#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3812#[serde(rename_all = "camelCase", default)]
3813pub struct EntityExternalLink {
3814    /// The unique identifier of the entity.
3815    pub id: Option<String>,
3816    /// The time at which the entity was created.
3817    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3818    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
3819    /// been updated after creation.
3820    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
3821    /// The time at which the entity was archived. Null if the entity has not been archived.
3822    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
3823    /// The link's URL.
3824    pub url: Option<String>,
3825    /// The link's label.
3826    pub label: Option<String>,
3827    /// The sort order of this link within the parent entity's resources list. Links are sorted together with documents and other resources attached to the entity.
3828    pub sort_order: Option<f64>,
3829    /// The user who created the link.
3830    pub creator: Option<User>,
3831    /// The initiative that the link is associated with.
3832    pub initiative: Option<Initiative>,
3833}
3834impl GraphQLFields for EntityExternalLink {
3835    type FullType = Self;
3836    fn selection() -> String {
3837        "id createdAt updatedAt archivedAt url label sortOrder".into()
3838    }
3839}
3840#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3841#[serde(rename_all = "camelCase", default)]
3842pub struct EntityExternalLinkConnection {
3843    pub edges: Option<Vec<EntityExternalLinkEdge>>,
3844    pub nodes: Option<Vec<EntityExternalLink>>,
3845    pub page_info: Option<PageInfo>,
3846}
3847impl GraphQLFields for EntityExternalLinkConnection {
3848    type FullType = Self;
3849    fn selection() -> String {
3850        "".into()
3851    }
3852}
3853#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3854#[serde(rename_all = "camelCase", default)]
3855pub struct EntityExternalLinkEdge {
3856    pub node: Option<EntityExternalLink>,
3857    /// Used in `before` and `after` args
3858    pub cursor: Option<String>,
3859}
3860impl GraphQLFields for EntityExternalLinkEdge {
3861    type FullType = Self;
3862    fn selection() -> String {
3863        "cursor".into()
3864    }
3865}
3866/// The result of an entity external link mutation.
3867#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3868#[serde(rename_all = "camelCase", default)]
3869pub struct EntityExternalLinkPayload {
3870    /// The identifier of the last sync operation.
3871    pub last_sync_id: Option<f64>,
3872    /// The link that was created or updated.
3873    pub entity_external_link: Option<EntityExternalLink>,
3874    /// Whether the operation was successful.
3875    pub success: Option<bool>,
3876}
3877impl GraphQLFields for EntityExternalLinkPayload {
3878    type FullType = Self;
3879    fn selection() -> String {
3880        "lastSyncId success".into()
3881    }
3882}
3883#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3884#[serde(rename_all = "camelCase", default)]
3885pub struct EventTrackingPayload {
3886    /// Whether the operation was successful.
3887    pub success: Option<bool>,
3888}
3889impl GraphQLFields for EventTrackingPayload {
3890    type FullType = Self;
3891    fn selection() -> String {
3892        "success".into()
3893    }
3894}
3895/// Information about an entity in an external system that is linked to a Linear entity. Provides the external ID, the service it belongs to, and optional service-specific metadata.
3896#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3897#[serde(rename_all = "camelCase", default)]
3898pub struct ExternalEntityInfo {
3899    /// The unique identifier of the entity in the external system (e.g., the Jira issue ID, GitHub issue node ID, or Slack message timestamp).
3900    pub id: Option<String>,
3901    /// The external service that this entity belongs to (e.g., jira, github, slack).
3902    pub service: Option<ExternalSyncService>,
3903}
3904impl GraphQLFields for ExternalEntityInfo {
3905    type FullType = Self;
3906    fn selection() -> String {
3907        "id service".into()
3908    }
3909}
3910/// Metadata about the external GitHub entity.
3911#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3912#[serde(rename_all = "camelCase", default)]
3913pub struct ExternalEntityInfoGithubMetadata {
3914    /// The repository name.
3915    pub repo: Option<String>,
3916    /// The owner of the repository.
3917    pub owner: Option<String>,
3918    /// The number of the issue.
3919    pub number: Option<f64>,
3920}
3921impl GraphQLFields for ExternalEntityInfoGithubMetadata {
3922    type FullType = Self;
3923    fn selection() -> String {
3924        "repo owner number".into()
3925    }
3926}
3927/// Metadata about the external Jira entity.
3928#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3929#[serde(rename_all = "camelCase", default)]
3930pub struct ExternalEntityInfoJiraMetadata {
3931    /// The key of the Jira issue.
3932    pub issue_key: Option<String>,
3933    /// The id of the Jira project.
3934    pub project_id: Option<String>,
3935    /// The id of the Jira issue type.
3936    pub issue_type_id: Option<String>,
3937}
3938impl GraphQLFields for ExternalEntityInfoJiraMetadata {
3939    type FullType = Self;
3940    fn selection() -> String {
3941        "issueKey projectId issueTypeId".into()
3942    }
3943}
3944/// Metadata about the external Slack entity.
3945#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3946#[serde(rename_all = "camelCase", default)]
3947pub struct ExternalEntitySlackMetadata {
3948    /// Whether the entity originated from Slack (not Linear).
3949    pub is_from_slack: Option<bool>,
3950    /// The id of the Slack channel.
3951    pub channel_id: Option<String>,
3952    /// The name of the Slack channel.
3953    pub channel_name: Option<String>,
3954    /// The URL of the Slack message.
3955    pub message_url: Option<String>,
3956}
3957impl GraphQLFields for ExternalEntitySlackMetadata {
3958    type FullType = Self;
3959    fn selection() -> String {
3960        "isFromSlack channelId channelName messageUrl".into()
3961    }
3962}
3963/// An external user who interacts with Linear through an integrated external service (such as Slack, Jira, GitHub, GitLab, Salesforce, or Microsoft Teams) but does not have a Linear account. External users can create issues, post comments, and add reactions from their respective platforms. They are identified by service-specific user IDs and may optionally have an email address. External users are scoped to a single workspace.
3964#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3965#[serde(rename_all = "camelCase", default)]
3966pub struct ExternalUser {
3967    /// The unique identifier of the entity.
3968    pub id: Option<String>,
3969    /// The time at which the entity was created.
3970    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
3971    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
3972    /// been updated after creation.
3973    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
3974    /// The time at which the entity was archived. Null if the entity has not been archived.
3975    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
3976    /// The external user's full name.
3977    pub name: Option<String>,
3978    /// The external user's display name. Unique within each workspace. Can match the display name of an actual user.
3979    pub display_name: Option<String>,
3980    /// The external user's email address.
3981    pub email: Option<String>,
3982    /// A URL to the external user's avatar image. Null if no avatar is available from the external service.
3983    pub avatar_url: Option<String>,
3984    /// The workspace that the external user belongs to.
3985    pub organization: Option<Box<Organization>>,
3986    /// The last time the external user was seen interacting with Linear through their external service. Defaults to the creation time and is updated on subsequent interactions.
3987    pub last_seen: Option<chrono::DateTime<chrono::Utc>>,
3988}
3989impl GraphQLFields for ExternalUser {
3990    type FullType = Self;
3991    fn selection() -> String {
3992        "id createdAt updatedAt archivedAt name displayName email avatarUrl lastSeen".into()
3993    }
3994}
3995#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3996#[serde(rename_all = "camelCase", default)]
3997pub struct ExternalUserConnection {
3998    pub edges: Option<Vec<ExternalUserEdge>>,
3999    pub nodes: Option<Vec<ExternalUser>>,
4000    pub page_info: Option<PageInfo>,
4001}
4002impl GraphQLFields for ExternalUserConnection {
4003    type FullType = Self;
4004    fn selection() -> String {
4005        "".into()
4006    }
4007}
4008#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4009#[serde(rename_all = "camelCase", default)]
4010pub struct ExternalUserEdge {
4011    pub node: Option<ExternalUser>,
4012    /// Used in `before` and `after` args
4013    pub cursor: Option<String>,
4014}
4015impl GraphQLFields for ExternalUserEdge {
4016    type FullType = Self;
4017    fn selection() -> String {
4018        "cursor".into()
4019    }
4020}
4021/// A facet representing a join between entities. Facets connect a custom view to an owning entity such as a project, initiative, team page, workspace page, or user feed. They control the order of views within their parent via the sortOrder field. Exactly one source entity and one target entity must be set.
4022#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4023#[serde(rename_all = "camelCase", default)]
4024pub struct Facet {
4025    /// The unique identifier of the entity.
4026    pub id: Option<String>,
4027    /// The time at which the entity was created.
4028    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4029    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
4030    /// been updated after creation.
4031    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4032    /// The time at which the entity was archived. Null if the entity has not been archived.
4033    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
4034    /// The sort order of the facet within its owning entity scope. Lower values appear first. Sort order is scoped by the source entity (e.g., all facets on a project are sorted independently from facets on an initiative).
4035    pub sort_order: Option<f64>,
4036    /// The owning organization. Set for workspace-level facets that are not scoped to a specific team, project, or initiative.
4037    pub source_organization: Option<Box<Organization>>,
4038    /// The owning team. Set when this facet represents a view on a team-level page.
4039    pub source_team: Option<Box<Team>>,
4040    /// The owning project. Set when this facet represents a view tab on a project.
4041    pub source_project: Option<Box<Project>>,
4042    /// The owning initiative. Set when this facet represents a view tab on an initiative.
4043    pub source_initiative: Option<Box<Initiative>>,
4044    /// The user whose feed this facet belongs to. Set when this facet represents a view in a user's personal feed.
4045    pub source_feed_user: Option<Box<User>>,
4046    /// The fixed page type (e.g., projects, issues) that this facet is displayed on. Used together with sourceOrganizationId or sourceTeamId to place a view on a specific page at the workspace or team level.
4047    pub source_page: Option<FacetPageSource>,
4048    /// The custom view that this facet points to. Each facet targets exactly one custom view, establishing a one-to-one relationship.
4049    pub target_custom_view: Option<Box<CustomView>>,
4050}
4051impl GraphQLFields for Facet {
4052    type FullType = Self;
4053    fn selection() -> String {
4054        "id createdAt updatedAt archivedAt sortOrder sourcePage".into()
4055    }
4056}
4057#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4058#[serde(rename_all = "camelCase", default)]
4059pub struct FacetConnection {
4060    pub edges: Option<Vec<FacetEdge>>,
4061    pub nodes: Option<Vec<Facet>>,
4062    pub page_info: Option<PageInfo>,
4063}
4064impl GraphQLFields for FacetConnection {
4065    type FullType = Self;
4066    fn selection() -> String {
4067        "".into()
4068    }
4069}
4070#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4071#[serde(rename_all = "camelCase", default)]
4072pub struct FacetEdge {
4073    pub node: Option<Facet>,
4074    /// Used in `before` and `after` args
4075    pub cursor: Option<String>,
4076}
4077impl GraphQLFields for FacetEdge {
4078    type FullType = Self;
4079    fn selection() -> String {
4080        "cursor".into()
4081    }
4082}
4083/// A user's bookmarked item that appears in their sidebar for quick access. Favorites can reference various entity types including issues, projects, cycles, views, documents, initiatives, labels, users, customers, dashboards, and pull requests. Favorites can be organized into folders and ordered by the user. Each favorite is owned by a single user and links to exactly one target entity (or is a folder containing other favorites).
4084#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4085#[serde(rename_all = "camelCase", default)]
4086pub struct Favorite {
4087    /// The unique identifier of the entity.
4088    pub id: Option<String>,
4089    /// The time at which the entity was created.
4090    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4091    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
4092    /// been updated after creation.
4093    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4094    /// The time at which the entity was archived. Null if the entity has not been archived.
4095    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
4096    /// The type of entity this favorite references, such as 'issue', 'project', 'cycle', 'customView', 'document', 'folder', etc. Determines which associated entity field is populated.
4097    pub r#type: Option<String>,
4098    /// The parent folder of the favorite. Null if the favorite is at the top level of the sidebar. Only favorites of type 'folder' can be parents.
4099    pub parent: Option<Box<Favorite>>,
4100    /// The name of the folder. Only applies to favorites of type folder.
4101    pub folder_name: Option<String>,
4102    /// The targeted tab of the project.
4103    pub project_tab: Option<ProjectTab>,
4104    /// The type of favorited predefined view (e.g., 'allIssues', 'activeCycle', 'backlog', 'triage'). Only populated when the favorite type is 'predefinedView'.
4105    pub predefined_view_type: Option<String>,
4106    /// The targeted tab of the initiative.
4107    pub initiative_tab: Option<InitiativeTab>,
4108    /// The user who owns this favorite. Favorites are personal and only visible to their owner.
4109    pub owner: Option<Box<User>>,
4110    /// The position of this item in the user's favorites list. Lower values appear first. Used to maintain user-defined ordering within the sidebar.
4111    pub sort_order: Option<f64>,
4112    /// Children of the favorite. Only applies to favorites of type folder.
4113    pub children: Option<FavoriteConnection>,
4114    /// The favorited issue.
4115    pub issue: Option<Box<Issue>>,
4116    /// The favorited project.
4117    pub project: Option<Box<Project>>,
4118    /// `INTERNAL` The favorited facet.
4119    pub facet: Option<Box<Facet>>,
4120    /// `DEPRECATED` The favorited team of the project.
4121    pub project_team: Option<Box<Team>>,
4122    /// The favorited cycle.
4123    pub cycle: Option<Box<Cycle>>,
4124    /// The favorited custom view.
4125    pub custom_view: Option<Box<CustomView>>,
4126    /// The team of the favorited predefined view.
4127    pub predefined_view_team: Option<Box<Team>>,
4128    /// The favorited document.
4129    pub document: Option<Box<Document>>,
4130    /// The favorited initiative.
4131    pub initiative: Option<Box<Initiative>>,
4132    /// The favorited label.
4133    pub label: Option<Box<IssueLabel>>,
4134    /// The favorited project label.
4135    pub project_label: Option<Box<ProjectLabel>>,
4136    /// The favorited user.
4137    pub user: Option<Box<User>>,
4138    /// The favorited customer.
4139    pub customer: Option<Box<Customer>>,
4140    /// The favorited dashboard.
4141    pub dashboard: Option<Box<Dashboard>>,
4142    /// The favorited pull request.
4143    pub pull_request: Option<Box<PullRequest>>,
4144    /// `ALPHA` The favorited release.
4145    pub release: Option<Box<Release>>,
4146    /// `ALPHA` The favorited release pipeline.
4147    pub release_pipeline: Option<ReleasePipeline>,
4148    /// URL of the favorited entity. Folders return 'null' value.
4149    pub url: Option<String>,
4150    /// `Internal` Favorite's title text (name of the favorite'd object or folder).
4151    pub title: Option<String>,
4152    /// `Internal` Detail text for favorite's `title` (e.g. team's name for a project).
4153    pub detail: Option<String>,
4154    /// `Internal` Returns the color of the favorite's icon. Unavailable for avatars and views with fixed icons (e.g. cycle).
4155    pub color: Option<String>,
4156    /// `Internal` Name of the favorite's icon. Unavailable for standard views, issues, and avatars
4157    pub icon: Option<String>,
4158}
4159impl GraphQLFields for Favorite {
4160    type FullType = Self;
4161    fn selection() -> String {
4162        "id createdAt updatedAt archivedAt type folderName projectTab predefinedViewType initiativeTab sortOrder url title detail color icon"
4163            .into()
4164    }
4165}
4166#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4167#[serde(rename_all = "camelCase", default)]
4168pub struct FavoriteConnection {
4169    pub edges: Option<Vec<FavoriteEdge>>,
4170    pub nodes: Option<Vec<Favorite>>,
4171    pub page_info: Option<PageInfo>,
4172}
4173impl GraphQLFields for FavoriteConnection {
4174    type FullType = Self;
4175    fn selection() -> String {
4176        "".into()
4177    }
4178}
4179#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4180#[serde(rename_all = "camelCase", default)]
4181pub struct FavoriteEdge {
4182    pub node: Option<Favorite>,
4183    /// Used in `before` and `after` args
4184    pub cursor: Option<String>,
4185}
4186impl GraphQLFields for FavoriteEdge {
4187    type FullType = Self;
4188    fn selection() -> String {
4189        "cursor".into()
4190    }
4191}
4192/// Return type for favorite mutations.
4193#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4194#[serde(rename_all = "camelCase", default)]
4195pub struct FavoritePayload {
4196    /// The identifier of the last sync operation.
4197    pub last_sync_id: Option<f64>,
4198    /// The favorite that was created or updated.
4199    pub favorite: Option<Favorite>,
4200    /// Whether the operation was successful.
4201    pub success: Option<bool>,
4202}
4203impl GraphQLFields for FavoritePayload {
4204    type FullType = Self;
4205    fn selection() -> String {
4206        "lastSyncId success".into()
4207    }
4208}
4209/// `Internal` An item in a user's activity feed. Feed items represent project updates, initiative updates, or posts that appear in a user's personalized feed based on their team memberships and feed subscriptions. Each feed item references exactly one content entity. Feed items older than 6 months are automatically archived.
4210#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4211#[serde(rename_all = "camelCase", default)]
4212pub struct FeedItem {
4213    /// The unique identifier of the entity.
4214    pub id: Option<String>,
4215    /// The time at which the entity was created.
4216    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4217    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
4218    /// been updated after creation.
4219    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4220    /// The time at which the entity was archived. Null if the entity has not been archived.
4221    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
4222    /// The organization this feed item belongs to.
4223    pub organization: Option<Organization>,
4224    /// The specific user this feed item is targeted to. Null if the feed item is targeted to a team or organization rather than an individual user.
4225    pub user: Option<User>,
4226    /// The team this feed item is associated with. Null if the feed item is not team-scoped.
4227    pub team: Option<Team>,
4228    /// The project update referenced by this feed item. Null if the feed item references a different content type.
4229    pub project_update: Option<ProjectUpdate>,
4230    /// The initiative update referenced by this feed item. Null if the feed item references a different content type.
4231    pub initiative_update: Option<InitiativeUpdate>,
4232    /// The post referenced by this feed item. Null if the feed item references a different content type.
4233    pub post: Option<Post>,
4234}
4235impl GraphQLFields for FeedItem {
4236    type FullType = Self;
4237    fn selection() -> String {
4238        "id createdAt updatedAt archivedAt".into()
4239    }
4240}
4241#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4242#[serde(rename_all = "camelCase", default)]
4243pub struct FeedItemConnection {
4244    pub edges: Option<Vec<FeedItemEdge>>,
4245    pub nodes: Option<Vec<FeedItem>>,
4246    pub page_info: Option<PageInfo>,
4247}
4248impl GraphQLFields for FeedItemConnection {
4249    type FullType = Self;
4250    fn selection() -> String {
4251        "".into()
4252    }
4253}
4254#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4255#[serde(rename_all = "camelCase", default)]
4256pub struct FeedItemEdge {
4257    pub node: Option<FeedItem>,
4258    /// Used in `before` and `after` args
4259    pub cursor: Option<String>,
4260}
4261impl GraphQLFields for FeedItemEdge {
4262    type FullType = Self;
4263    fn selection() -> String {
4264        "cursor".into()
4265    }
4266}
4267/// The result of a data fetch query using natural language.
4268#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4269#[serde(rename_all = "camelCase", default)]
4270pub struct FetchDataPayload {
4271    /// The fetched data as a JSON object. The shape depends on the natural language query and the resolved GraphQL query. Null if the query returned no results.
4272    pub data: Option<serde_json::Value>,
4273    /// The GraphQL query that was generated from the natural language input and executed to produce the data. Useful for debugging or reusing the query directly.
4274    pub query: Option<String>,
4275    /// The filter variables that were generated and applied to the GraphQL query. Null if no filters were needed.
4276    pub filters: Option<serde_json::Value>,
4277    /// Whether the fetch operation was successful.
4278    pub success: Option<bool>,
4279}
4280impl GraphQLFields for FetchDataPayload {
4281    type FullType = Self;
4282    fn selection() -> String {
4283        "data query filters success".into()
4284    }
4285}
4286#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4287#[serde(rename_all = "camelCase", default)]
4288pub struct FileUploadDeletePayload {
4289    /// Whether the operation was successful.
4290    pub success: Option<bool>,
4291}
4292impl GraphQLFields for FileUploadDeletePayload {
4293    type FullType = Self;
4294    fn selection() -> String {
4295        "success".into()
4296    }
4297}
4298/// The result of a Front attachment mutation.
4299#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4300#[serde(rename_all = "camelCase", default)]
4301pub struct FrontAttachmentPayload {
4302    /// The identifier of the last sync operation.
4303    pub last_sync_id: Option<f64>,
4304    /// The issue attachment that was created.
4305    pub attachment: Option<Attachment>,
4306    /// Whether the operation was successful.
4307    pub success: Option<bool>,
4308}
4309impl GraphQLFields for FrontAttachmentPayload {
4310    type FullType = Self;
4311    fn selection() -> String {
4312        "lastSyncId success".into()
4313    }
4314}
4315/// A Git automation rule that automatically transitions issues to a specified workflow state when a Git event occurs (e.g., when a PR is opened, move the linked issue to 'In Review'). Each rule is scoped to a team and optionally to a specific target branch. When no target branch is specified, the rule acts as the default for all branches. Target-branch-specific rules override the defaults.
4316#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4317#[serde(rename_all = "camelCase", default)]
4318pub struct GitAutomationState {
4319    /// The unique identifier of the entity.
4320    pub id: Option<String>,
4321    /// The time at which the entity was created.
4322    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4323    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
4324    /// been updated after creation.
4325    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4326    /// The time at which the entity was archived. Null if the entity has not been archived.
4327    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
4328    /// The workflow state that linked issues will be transitioned to when the Git event fires. Null if this rule is configured to take no action, overriding any default rule for the same event.
4329    pub state: Option<WorkflowState>,
4330    /// The team that this automation rule belongs to. Issues must belong to this team for the automation to apply.
4331    pub team: Option<Team>,
4332    /// The target branch that this automation rule applies to. When set, this rule only fires for pull requests targeting the specified branch pattern, overriding any default rule for the same event. Null if this is a default rule that applies to all branches.
4333    pub target_branch: Option<GitAutomationTargetBranch>,
4334    /// The Git event that triggers this automation rule (e.g., branch created, PR opened for review, or PR merged).
4335    pub event: Option<GitAutomationStates>,
4336    /// `DEPRECATED` The target branch, if null, the automation will be triggered on any branch.
4337    pub branch_pattern: Option<String>,
4338}
4339impl GraphQLFields for GitAutomationState {
4340    type FullType = Self;
4341    fn selection() -> String {
4342        "id createdAt updatedAt archivedAt event branchPattern".into()
4343    }
4344}
4345#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4346#[serde(rename_all = "camelCase", default)]
4347pub struct GitAutomationStateConnection {
4348    pub edges: Option<Vec<GitAutomationStateEdge>>,
4349    pub nodes: Option<Vec<GitAutomationState>>,
4350    pub page_info: Option<PageInfo>,
4351}
4352impl GraphQLFields for GitAutomationStateConnection {
4353    type FullType = Self;
4354    fn selection() -> String {
4355        "".into()
4356    }
4357}
4358#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4359#[serde(rename_all = "camelCase", default)]
4360pub struct GitAutomationStateEdge {
4361    pub node: Option<GitAutomationState>,
4362    /// Used in `before` and `after` args
4363    pub cursor: Option<String>,
4364}
4365impl GraphQLFields for GitAutomationStateEdge {
4366    type FullType = Self;
4367    fn selection() -> String {
4368        "cursor".into()
4369    }
4370}
4371/// The result of a git automation state mutation.
4372#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4373#[serde(rename_all = "camelCase", default)]
4374pub struct GitAutomationStatePayload {
4375    /// The identifier of the last sync operation.
4376    pub last_sync_id: Option<f64>,
4377    /// The automation state that was created or updated.
4378    pub git_automation_state: Option<GitAutomationState>,
4379    /// Whether the operation was successful.
4380    pub success: Option<bool>,
4381}
4382impl GraphQLFields for GitAutomationStatePayload {
4383    type FullType = Self;
4384    fn selection() -> String {
4385        "lastSyncId success".into()
4386    }
4387}
4388/// A target branch definition used by Git automation rules to scope automations to specific branches. The branch can be specified as an exact name (e.g., 'main') or as a regular expression pattern (e.g., 'release/.*'). Each target branch belongs to a team and can have multiple automation rules associated with it, which override the team's default automation rules when a PR targets a matching branch.
4389#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4390#[serde(rename_all = "camelCase", default)]
4391pub struct GitAutomationTargetBranch {
4392    /// The unique identifier of the entity.
4393    pub id: Option<String>,
4394    /// The time at which the entity was created.
4395    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4396    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
4397    /// been updated after creation.
4398    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4399    /// The time at which the entity was archived. Null if the entity has not been archived.
4400    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
4401    /// The team that this target branch definition belongs to. The branch pattern is unique within a team.
4402    pub team: Option<Team>,
4403    /// The branch name or pattern to match against pull request target branches. Interpreted as a literal branch name unless isRegex is true, in which case it is treated as a regular expression.
4404    pub branch_pattern: Option<String>,
4405    /// Whether the branch pattern should be interpreted as a regular expression. When false, the pattern is matched as an exact branch name.
4406    pub is_regex: Option<bool>,
4407    /// Git automation rules associated with this target branch. These rules override the team's default automation rules when a pull request targets a branch matching this pattern.
4408    pub automation_states: Option<GitAutomationStateConnection>,
4409}
4410impl GraphQLFields for GitAutomationTargetBranch {
4411    type FullType = Self;
4412    fn selection() -> String {
4413        "id createdAt updatedAt archivedAt branchPattern isRegex".into()
4414    }
4415}
4416/// The result of a git automation target branch mutation.
4417#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4418#[serde(rename_all = "camelCase", default)]
4419pub struct GitAutomationTargetBranchPayload {
4420    /// The identifier of the last sync operation.
4421    pub last_sync_id: Option<f64>,
4422    /// The Git target branch automation that was created or updated.
4423    pub target_branch: Option<GitAutomationTargetBranch>,
4424    /// Whether the operation was successful.
4425    pub success: Option<bool>,
4426}
4427impl GraphQLFields for GitAutomationTargetBranchPayload {
4428    type FullType = Self;
4429    fn selection() -> String {
4430        "lastSyncId success".into()
4431    }
4432}
4433#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4434#[serde(rename_all = "camelCase", default)]
4435pub struct GitHubCommitIntegrationPayload {
4436    /// The identifier of the last sync operation.
4437    pub last_sync_id: Option<f64>,
4438    /// The integration that was created or updated.
4439    pub integration: Option<Integration>,
4440    /// Whether the operation was successful.
4441    pub success: Option<bool>,
4442    /// The webhook secret to provide to GitHub.
4443    pub webhook_secret: Option<String>,
4444}
4445impl GraphQLFields for GitHubCommitIntegrationPayload {
4446    type FullType = Self;
4447    fn selection() -> String {
4448        "lastSyncId success webhookSecret".into()
4449    }
4450}
4451#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4452#[serde(rename_all = "camelCase", default)]
4453pub struct GitHubEnterpriseServerInstallVerificationPayload {
4454    /// Has the install been successful.
4455    pub success: Option<bool>,
4456}
4457impl GraphQLFields for GitHubEnterpriseServerInstallVerificationPayload {
4458    type FullType = Self;
4459    fn selection() -> String {
4460        "success".into()
4461    }
4462}
4463#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4464#[serde(rename_all = "camelCase", default)]
4465pub struct GitHubEnterpriseServerPayload {
4466    /// The identifier of the last sync operation.
4467    pub last_sync_id: Option<f64>,
4468    /// The integration that was created or updated.
4469    pub integration: Option<Integration>,
4470    /// Whether the operation was successful.
4471    pub success: Option<bool>,
4472    /// The setup address.
4473    pub setup_url: Option<String>,
4474    /// The app install address.
4475    pub install_url: Option<String>,
4476    /// The webhook secret to provide to GitHub.
4477    pub webhook_secret: Option<String>,
4478}
4479impl GraphQLFields for GitHubEnterpriseServerPayload {
4480    type FullType = Self;
4481    fn selection() -> String {
4482        "lastSyncId success setupUrl installUrl webhookSecret".into()
4483    }
4484}
4485#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4486#[serde(rename_all = "camelCase", default)]
4487pub struct GitLabIntegrationCreatePayload {
4488    /// The identifier of the last sync operation.
4489    pub last_sync_id: Option<f64>,
4490    /// The integration that was created or updated.
4491    pub integration: Option<Integration>,
4492    /// Whether the operation was successful.
4493    pub success: Option<bool>,
4494    /// The webhook secret to provide to GitLab.
4495    pub webhook_secret: Option<String>,
4496    /// Error message if the connection failed.
4497    pub error: Option<String>,
4498    /// Response body from GitLab for debugging.
4499    pub error_response_body: Option<String>,
4500    /// Response headers from GitLab for debugging (JSON stringified).
4501    pub error_response_headers: Option<String>,
4502}
4503impl GraphQLFields for GitLabIntegrationCreatePayload {
4504    type FullType = Self;
4505    fn selection() -> String {
4506        "lastSyncId success webhookSecret error errorResponseBody errorResponseHeaders".into()
4507    }
4508}
4509#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4510#[serde(rename_all = "camelCase", default)]
4511pub struct GitLabTestConnectionPayload {
4512    /// The identifier of the last sync operation.
4513    pub last_sync_id: Option<f64>,
4514    /// The integration that was created or updated.
4515    pub integration: Option<Integration>,
4516    /// Whether the operation was successful.
4517    pub success: Option<bool>,
4518    /// Error message if the connection test failed.
4519    pub error: Option<String>,
4520    /// Response body from GitLab for debugging.
4521    pub error_response_body: Option<String>,
4522    /// Response headers from GitLab for debugging (JSON stringified).
4523    pub error_response_headers: Option<String>,
4524}
4525impl GraphQLFields for GitLabTestConnectionPayload {
4526    type FullType = Self;
4527    fn selection() -> String {
4528        "lastSyncId success error errorResponseBody errorResponseHeaders".into()
4529    }
4530}
4531/// A SAML/SSO or web forms identity provider configuration for a workspace. Identity providers enable single sign-on authentication via SAML 2.0 and can optionally support SCIM for automated user provisioning and group-based role mapping. Each workspace can have a default general-purpose identity provider and additional web forms identity providers for Asks web authentication.
4532#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4533#[serde(rename_all = "camelCase", default)]
4534pub struct IdentityProvider {
4535    /// The unique identifier of the entity.
4536    pub id: Option<String>,
4537    /// The time at which the entity was created.
4538    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4539    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
4540    /// been updated after creation.
4541    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4542    /// The time at which the entity was archived. Null if the entity has not been archived.
4543    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
4544    /// Whether the identity provider is the default identity provider migrated from organization level settings.
4545    pub default_migrated: Option<bool>,
4546    /// The type of identity provider.
4547    pub r#type: Option<IdentityProviderType>,
4548    /// Whether SAML authentication is enabled for the workspace.
4549    pub saml_enabled: Option<bool>,
4550    /// Sign in endpoint URL for the identity provider.
4551    pub sso_endpoint: Option<String>,
4552    /// Binding method for authentication call. Can be either `post` (default) or `redirect`.
4553    pub sso_binding: Option<String>,
4554    /// The algorithm of the Signing Certificate. Can be one of `sha1`, `sha256` (default), or `sha512`.
4555    pub sso_sign_algo: Option<String>,
4556    /// X.509 Signing Certificate in string form.
4557    pub sso_signing_cert: Option<String>,
4558    /// The issuer's custom entity ID.
4559    pub issuer_entity_id: Option<String>,
4560    /// The service provider (Linear) custom entity ID. Defaults to <https://auth.linear.app/sso>
4561    pub sp_entity_id: Option<String>,
4562    /// The SAML priority used to pick default workspace in SAML SP initiated flow, when same domain is claimed for SAML by multiple workspaces. Lower priority value means higher preference.
4563    pub priority: Option<f64>,
4564    /// Whether SCIM provisioning is enabled for the workspace.
4565    pub scim_enabled: Option<bool>,
4566    /// `INTERNAL` SCIM owners group push settings.
4567    pub owners_group_push: Option<serde_json::Value>,
4568    /// `INTERNAL` SCIM admins group push settings.
4569    pub admins_group_push: Option<serde_json::Value>,
4570    /// `INTERNAL` SCIM guests group push settings.
4571    pub guests_group_push: Option<serde_json::Value>,
4572    /// Whether users are allowed to change their name and display name even if SCIM is enabled.
4573    pub allow_name_change: Option<bool>,
4574}
4575impl GraphQLFields for IdentityProvider {
4576    type FullType = Self;
4577    fn selection() -> String {
4578        "id createdAt updatedAt archivedAt defaultMigrated type samlEnabled ssoEndpoint ssoBinding ssoSignAlgo ssoSigningCert issuerEntityId spEntityId priority scimEnabled ownersGroupPush adminsGroupPush guestsGroupPush allowNameChange"
4579            .into()
4580    }
4581}
4582#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4583#[serde(rename_all = "camelCase", default)]
4584pub struct ImageUploadFromUrlPayload {
4585    /// The identifier of the last sync operation.
4586    pub last_sync_id: Option<f64>,
4587    /// The URL containing the image.
4588    pub url: Option<String>,
4589    /// Whether the operation was successful.
4590    pub success: Option<bool>,
4591}
4592impl GraphQLFields for ImageUploadFromUrlPayload {
4593    type FullType = Self;
4594    fn selection() -> String {
4595        "lastSyncId url success".into()
4596    }
4597}
4598/// An initiative is a high-level strategic grouping of projects toward a business goal. Initiatives can contain multiple projects, have their own status updates and health tracking, and can be organized hierarchically with parent-child relationships.
4599#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4600#[serde(rename_all = "camelCase", default)]
4601pub struct Initiative {
4602    /// The unique identifier of the entity.
4603    pub id: Option<String>,
4604    /// The time at which the entity was created.
4605    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4606    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
4607    /// been updated after creation.
4608    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4609    /// The time at which the entity was archived. Null if the entity has not been archived.
4610    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
4611    /// The n-weekly frequency at which to prompt for updates. When not set, reminders are inherited from workspace.
4612    pub update_reminder_frequency_in_weeks: Option<f64>,
4613    /// The frequency at which to prompt for updates. When not set, reminders are inherited from workspace.
4614    pub update_reminder_frequency: Option<f64>,
4615    /// The resolution of the reminder frequency.
4616    pub frequency_resolution: Option<FrequencyResolutionType>,
4617    /// The day at which to prompt for updates.
4618    pub update_reminders_day: Option<Day>,
4619    /// The hour at which to prompt for updates.
4620    pub update_reminders_hour: Option<f64>,
4621    /// The name of the initiative.
4622    pub name: Option<String>,
4623    /// The description of the initiative.
4624    pub description: Option<String>,
4625    /// The workspace of the initiative.
4626    pub organization: Option<Box<Organization>>,
4627    /// The user who created the initiative.
4628    pub creator: Option<Box<User>>,
4629    /// The user who owns the initiative. The owner is typically responsible for posting status updates and driving the initiative to completion. Null if no owner is assigned.
4630    pub owner: Option<Box<User>>,
4631    /// The initiative's unique URL slug, used to construct human-readable URLs.
4632    pub slug_id: Option<String>,
4633    /// The sort order of the initiative within the workspace.
4634    pub sort_order: Option<f64>,
4635    /// The initiative's color.
4636    pub color: Option<String>,
4637    /// The icon of the initiative. Can be an emoji or a decorative icon type.
4638    pub icon: Option<String>,
4639    /// A flag that indicates whether the initiative is in the trash bin.
4640    pub trashed: Option<bool>,
4641    /// `Internal` Facets associated with the initiative, used for filtering and categorization.
4642    pub facets: Option<Vec<Facet>>,
4643    /// The estimated completion date of the initiative. Null if no target date is set.
4644    pub target_date: Option<chrono::NaiveDate>,
4645    /// The resolution of the initiative's estimated completion date, indicating whether it refers to a specific day, week, month, quarter, or year.
4646    pub target_date_resolution: Option<DateResolutionType>,
4647    /// The lifecycle status of the initiative. One of Planned, Active, Completed.
4648    pub status: Option<InitiativeStatus>,
4649    /// The most recent status update posted for this initiative. Null if no updates have been posted.
4650    pub last_update: Option<Box<InitiativeUpdate>>,
4651    /// The overall health of the initiative, derived from the most recent initiative update. Possible values are onTrack, atRisk, or offTrack. Null if no health has been reported.
4652    pub health: Option<InitiativeUpdateHealthType>,
4653    /// The time at which the initiative health was last updated, typically when a new initiative update is posted. Null if health has never been set.
4654    pub health_updated_at: Option<chrono::DateTime<chrono::Utc>>,
4655    /// The time at which the initiative was moved into Active status. Null if the initiative has not been activated.
4656    pub started_at: Option<chrono::DateTime<chrono::Utc>>,
4657    /// The time at which the initiative was moved into Completed status. Null if the initiative has not been completed.
4658    pub completed_at: Option<chrono::DateTime<chrono::Utc>>,
4659    /// Initiative URL.
4660    pub url: Option<String>,
4661    /// Projects associated with the initiative.
4662    pub projects: Option<ProjectConnection>,
4663    /// Links associated with the initiative.
4664    pub links: Option<EntityExternalLinkConnection>,
4665    /// Settings for all integrations associated with that initiative.
4666    pub integrations_settings: Option<Box<IntegrationsSettings>>,
4667    /// History entries associated with the initiative.
4668    pub history: Option<InitiativeHistoryConnection>,
4669    /// Initiative updates associated with the initiative.
4670    pub initiative_updates: Option<InitiativeUpdateConnection>,
4671    /// Sub-initiatives associated with the initiative.
4672    pub sub_initiatives: Option<InitiativeConnection>,
4673    /// Parent initiative associated with the initiative.
4674    pub parent_initiative: Option<Box<Initiative>>,
4675    /// `Internal` Parent initiatives associated with the initiative.
4676    pub parent_initiatives: Option<InitiativeConnection>,
4677    /// The initiative's content in markdown format.
4678    pub content: Option<String>,
4679    /// The content of the initiative description.
4680    pub document_content: Option<Box<DocumentContent>>,
4681    /// Documents associated with the initiative.
4682    pub documents: Option<DocumentConnection>,
4683}
4684impl GraphQLFields for Initiative {
4685    type FullType = Self;
4686    fn selection() -> String {
4687        "id createdAt updatedAt archivedAt updateReminderFrequencyInWeeks updateReminderFrequency frequencyResolution updateRemindersDay updateRemindersHour name description slugId sortOrder color icon trashed targetDate targetDateResolution status health healthUpdatedAt startedAt completedAt url content"
4688            .into()
4689    }
4690}
4691/// A generic payload return from entity archive mutations.
4692#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4693#[serde(rename_all = "camelCase", default)]
4694pub struct InitiativeArchivePayload {
4695    /// The identifier of the last sync operation.
4696    pub last_sync_id: Option<f64>,
4697    /// Whether the operation was successful.
4698    pub success: Option<bool>,
4699    /// The archived/unarchived entity. Null if entity was deleted.
4700    pub entity: Option<Initiative>,
4701}
4702impl GraphQLFields for InitiativeArchivePayload {
4703    type FullType = Self;
4704    fn selection() -> String {
4705        "lastSyncId success".into()
4706    }
4707}
4708#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4709#[serde(rename_all = "camelCase", default)]
4710pub struct InitiativeConnection {
4711    pub edges: Option<Vec<InitiativeEdge>>,
4712    pub nodes: Option<Vec<Initiative>>,
4713    pub page_info: Option<PageInfo>,
4714}
4715impl GraphQLFields for InitiativeConnection {
4716    type FullType = Self;
4717    fn selection() -> String {
4718        "".into()
4719    }
4720}
4721#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4722#[serde(rename_all = "camelCase", default)]
4723pub struct InitiativeEdge {
4724    pub node: Option<Initiative>,
4725    /// Used in `before` and `after` args
4726    pub cursor: Option<String>,
4727}
4728impl GraphQLFields for InitiativeEdge {
4729    type FullType = Self;
4730    fn selection() -> String {
4731        "cursor".into()
4732    }
4733}
4734/// A history record associated with an initiative. Tracks changes to initiative properties such as name, status, owner, target date, icon, color, and parent-child relationships over time.
4735#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4736#[serde(rename_all = "camelCase", default)]
4737pub struct InitiativeHistory {
4738    /// The unique identifier of the entity.
4739    pub id: Option<String>,
4740    /// The time at which the entity was created.
4741    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4742    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
4743    /// been updated after creation.
4744    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4745    /// The time at which the entity was archived. Null if the entity has not been archived.
4746    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
4747    /// The events that happened while recording that history.
4748    pub entries: Option<serde_json::Value>,
4749    /// The initiative that this history record belongs to.
4750    pub initiative: Option<Initiative>,
4751}
4752impl GraphQLFields for InitiativeHistory {
4753    type FullType = Self;
4754    fn selection() -> String {
4755        "id createdAt updatedAt archivedAt entries".into()
4756    }
4757}
4758#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4759#[serde(rename_all = "camelCase", default)]
4760pub struct InitiativeHistoryConnection {
4761    pub edges: Option<Vec<InitiativeHistoryEdge>>,
4762    pub nodes: Option<Vec<InitiativeHistory>>,
4763    pub page_info: Option<PageInfo>,
4764}
4765impl GraphQLFields for InitiativeHistoryConnection {
4766    type FullType = Self;
4767    fn selection() -> String {
4768        "".into()
4769    }
4770}
4771#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4772#[serde(rename_all = "camelCase", default)]
4773pub struct InitiativeHistoryEdge {
4774    pub node: Option<InitiativeHistory>,
4775    /// Used in `before` and `after` args
4776    pub cursor: Option<String>,
4777}
4778impl GraphQLFields for InitiativeHistoryEdge {
4779    type FullType = Self;
4780    fn selection() -> String {
4781        "cursor".into()
4782    }
4783}
4784/// A notification related to an initiative, such as being added as owner, initiative updates, comments, or mentions.
4785#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4786#[serde(rename_all = "camelCase", default)]
4787pub struct InitiativeNotification {
4788    /// Related comment ID. Null if the notification is not related to a comment.
4789    pub comment_id: Option<String>,
4790    /// Related parent comment ID. Null if the notification is not related to a comment.
4791    pub parent_comment_id: Option<String>,
4792    /// Name of the reaction emoji related to the notification.
4793    pub reaction_emoji: Option<String>,
4794    /// The unique identifier of the entity.
4795    pub id: Option<String>,
4796    /// The time at which the entity was created.
4797    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4798    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
4799    /// been updated after creation.
4800    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4801    /// The time at which the entity was archived. Null if the entity has not been archived.
4802    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
4803    /// Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated.
4804    pub r#type: Option<String>,
4805    /// The user that caused the notification. Null if the notification was triggered by a non-user actor such as an integration, external user, or system event.
4806    pub actor: Option<User>,
4807    /// The external user that caused the notification. Populated when the notification was triggered by an external user (e.g., a commenter from a connected integration like Slack or GitHub) rather than a Linear workspace member.
4808    pub external_user_actor: Option<ExternalUser>,
4809    /// The recipient user of this notification.
4810    pub user: Option<User>,
4811    /// The time at which the user marked the notification as read. Null if the notification is unread.
4812    pub read_at: Option<chrono::DateTime<chrono::Utc>>,
4813    /// The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent.
4814    pub emailed_at: Option<chrono::DateTime<chrono::Utc>>,
4815    /// The time until which a notification is snoozed. After this time, the notification reappears in the user's inbox. Null if the notification is not currently snoozed.
4816    pub snoozed_until_at: Option<chrono::DateTime<chrono::Utc>>,
4817    /// The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed.
4818    pub unsnoozed_at: Option<chrono::DateTime<chrono::Utc>>,
4819    /// The category of the notification.
4820    pub category: Option<NotificationCategory>,
4821    /// `Internal` URL to the target of the notification.
4822    pub url: Option<String>,
4823    /// `Internal` Inbox URL for the notification.
4824    pub inbox_url: Option<String>,
4825    /// `Internal` Notification title.
4826    pub title: Option<String>,
4827    /// `Internal` Notification subtitle.
4828    pub subtitle: Option<String>,
4829    /// `Internal` If notification actor was Linear.
4830    pub is_linear_actor: Option<bool>,
4831    /// `Internal` Notification avatar URL.
4832    pub actor_avatar_url: Option<String>,
4833    /// `Internal` Notification actor initials if avatar is not available.
4834    pub actor_initials: Option<String>,
4835    /// `Internal` Notification actor initials if avatar is not available.
4836    pub actor_avatar_color: Option<String>,
4837    /// `Internal` Issue's status type for issue notifications.
4838    pub issue_status_type: Option<String>,
4839    /// `Internal` Project update health for new updates.
4840    pub project_update_health: Option<String>,
4841    /// `Internal` Initiative update health for new updates.
4842    pub initiative_update_health: Option<String>,
4843    /// `Internal` Notifications with the same grouping key will be grouped together in the UI.
4844    pub grouping_key: Option<String>,
4845    /// `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`.
4846    pub grouping_priority: Option<f64>,
4847    /// The bot that caused the notification.
4848    pub bot_actor: Option<ActorBot>,
4849    /// Related initiative ID.
4850    pub initiative_id: Option<String>,
4851    /// Related initiative update ID.
4852    pub initiative_update_id: Option<String>,
4853    /// The initiative related to the notification.
4854    pub initiative: Option<Initiative>,
4855    /// The document related to the notification.
4856    pub document: Option<Document>,
4857    /// The initiative update related to the notification.
4858    pub initiative_update: Option<InitiativeUpdate>,
4859    /// The comment related to the notification.
4860    pub comment: Option<Comment>,
4861    /// The parent comment related to the notification, if a notification is a reply comment notification.
4862    pub parent_comment: Option<Comment>,
4863}
4864impl GraphQLFields for InitiativeNotification {
4865    type FullType = Self;
4866    fn selection() -> String {
4867        "commentId parentCommentId reactionEmoji id createdAt updatedAt archivedAt type readAt emailedAt snoozedUntilAt unsnoozedAt category url inboxUrl title subtitle isLinearActor actorAvatarUrl actorInitials actorAvatarColor issueStatusType projectUpdateHealth initiativeUpdateHealth groupingKey groupingPriority initiativeId initiativeUpdateId"
4868            .into()
4869    }
4870}
4871/// A notification subscription scoped to a specific initiative. The subscriber receives notifications for events related to this initiative, such as updates, comments, and ownership changes.
4872#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4873#[serde(rename_all = "camelCase", default)]
4874pub struct InitiativeNotificationSubscription {
4875    /// The unique identifier of the entity.
4876    pub id: Option<String>,
4877    /// The time at which the entity was created.
4878    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4879    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
4880    /// been updated after creation.
4881    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4882    /// The time at which the entity was archived. Null if the entity has not been archived.
4883    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
4884    /// The user who will receive notifications from this subscription.
4885    pub subscriber: Option<User>,
4886    /// The customer that this notification subscription is scoped to. Null if the subscription targets a different entity type.
4887    pub customer: Option<Customer>,
4888    /// The custom view that this notification subscription is scoped to. Null if the subscription targets a different entity type.
4889    pub custom_view: Option<CustomView>,
4890    /// The cycle that this notification subscription is scoped to. Null if the subscription targets a different entity type.
4891    pub cycle: Option<Cycle>,
4892    /// The issue label that this notification subscription is scoped to. Null if the subscription targets a different entity type.
4893    pub label: Option<IssueLabel>,
4894    /// The project that this notification subscription is scoped to. Null if the subscription targets a different entity type.
4895    pub project: Option<Project>,
4896    /// The initiative subscribed to.
4897    pub initiative: Option<Initiative>,
4898    /// The team that this notification subscription is scoped to. Null if the subscription targets a different entity type.
4899    pub team: Option<Team>,
4900    /// The user that this notification subscription is scoped to, for user-specific view subscriptions. Null if the subscription targets a different entity type.
4901    pub user: Option<User>,
4902    /// The type of contextual view (e.g., active issues, backlog) that further scopes a team notification subscription. Null if the subscription is not associated with a specific view type.
4903    pub context_view_type: Option<ContextViewType>,
4904    /// The type of user-specific view that further scopes a user notification subscription. Null if the subscription is not associated with a user view type.
4905    pub user_context_view_type: Option<UserContextViewType>,
4906    /// Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists.
4907    pub active: Option<bool>,
4908    /// The notification event types that this subscription will deliver to the subscriber.
4909    pub notification_subscription_types: Option<Vec<String>>,
4910}
4911impl GraphQLFields for InitiativeNotificationSubscription {
4912    type FullType = Self;
4913    fn selection() -> String {
4914        "id createdAt updatedAt archivedAt contextViewType userContextViewType active notificationSubscriptionTypes"
4915            .into()
4916    }
4917}
4918/// The payload returned by the initiative mutations.
4919#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4920#[serde(rename_all = "camelCase", default)]
4921pub struct InitiativePayload {
4922    /// The identifier of the last sync operation.
4923    pub last_sync_id: Option<f64>,
4924    /// The initiative that was created or updated.
4925    pub initiative: Option<Initiative>,
4926    /// Whether the operation was successful.
4927    pub success: Option<bool>,
4928}
4929impl GraphQLFields for InitiativePayload {
4930    type FullType = Self;
4931    fn selection() -> String {
4932        "lastSyncId success".into()
4933    }
4934}
4935/// A parent-child relation between two initiatives, forming a hierarchy. The initiative field is the parent and relatedInitiative is the child. Cycles and excessive nesting depth are prevented.
4936#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4937#[serde(rename_all = "camelCase", default)]
4938pub struct InitiativeRelation {
4939    /// The unique identifier of the entity.
4940    pub id: Option<String>,
4941    /// The time at which the entity was created.
4942    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
4943    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
4944    /// been updated after creation.
4945    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
4946    /// The time at which the entity was archived. Null if the entity has not been archived.
4947    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
4948    /// The parent initiative in this hierarchical relation.
4949    pub initiative: Option<Initiative>,
4950    /// The child initiative in this hierarchical relation.
4951    pub related_initiative: Option<Initiative>,
4952    /// The user who last created or modified the relation. Null if the user has been deleted.
4953    pub user: Option<User>,
4954    /// The sort order of the child initiative within its parent initiative.
4955    pub sort_order: Option<f64>,
4956}
4957impl GraphQLFields for InitiativeRelation {
4958    type FullType = Self;
4959    fn selection() -> String {
4960        "id createdAt updatedAt archivedAt sortOrder".into()
4961    }
4962}
4963#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4964#[serde(rename_all = "camelCase", default)]
4965pub struct InitiativeRelationConnection {
4966    pub edges: Option<Vec<InitiativeRelationEdge>>,
4967    pub nodes: Option<Vec<InitiativeRelation>>,
4968    pub page_info: Option<PageInfo>,
4969}
4970impl GraphQLFields for InitiativeRelationConnection {
4971    type FullType = Self;
4972    fn selection() -> String {
4973        "".into()
4974    }
4975}
4976#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4977#[serde(rename_all = "camelCase", default)]
4978pub struct InitiativeRelationEdge {
4979    pub node: Option<InitiativeRelation>,
4980    /// Used in `before` and `after` args
4981    pub cursor: Option<String>,
4982}
4983impl GraphQLFields for InitiativeRelationEdge {
4984    type FullType = Self;
4985    fn selection() -> String {
4986        "cursor".into()
4987    }
4988}
4989/// The result of an initiative relation mutation.
4990#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4991#[serde(rename_all = "camelCase", default)]
4992pub struct InitiativeRelationPayload {
4993    /// The identifier of the last sync operation.
4994    pub last_sync_id: Option<f64>,
4995    /// The initiative relation that was created or updated.
4996    pub initiative_relation: Option<InitiativeRelation>,
4997    /// Whether the operation was successful.
4998    pub success: Option<bool>,
4999}
5000impl GraphQLFields for InitiativeRelationPayload {
5001    type FullType = Self;
5002    fn selection() -> String {
5003        "lastSyncId success".into()
5004    }
5005}
5006/// The join entity linking a project to an initiative. A project can only appear once in an initiative hierarchy -- it cannot be on both an initiative and one of its ancestor or descendant initiatives.
5007#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5008#[serde(rename_all = "camelCase", default)]
5009pub struct InitiativeToProject {
5010    /// The unique identifier of the entity.
5011    pub id: Option<String>,
5012    /// The time at which the entity was created.
5013    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5014    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
5015    /// been updated after creation.
5016    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
5017    /// The time at which the entity was archived. Null if the entity has not been archived.
5018    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
5019    /// The project that the initiative is associated with.
5020    pub project: Option<Project>,
5021    /// The initiative that the project is associated with.
5022    pub initiative: Option<Initiative>,
5023    /// The sort order of the project within its parent initiative.
5024    pub sort_order: Option<String>,
5025}
5026impl GraphQLFields for InitiativeToProject {
5027    type FullType = Self;
5028    fn selection() -> String {
5029        "id createdAt updatedAt archivedAt sortOrder".into()
5030    }
5031}
5032#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5033#[serde(rename_all = "camelCase", default)]
5034pub struct InitiativeToProjectConnection {
5035    pub edges: Option<Vec<InitiativeToProjectEdge>>,
5036    pub nodes: Option<Vec<InitiativeToProject>>,
5037    pub page_info: Option<PageInfo>,
5038}
5039impl GraphQLFields for InitiativeToProjectConnection {
5040    type FullType = Self;
5041    fn selection() -> String {
5042        "".into()
5043    }
5044}
5045#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5046#[serde(rename_all = "camelCase", default)]
5047pub struct InitiativeToProjectEdge {
5048    pub node: Option<InitiativeToProject>,
5049    /// Used in `before` and `after` args
5050    pub cursor: Option<String>,
5051}
5052impl GraphQLFields for InitiativeToProjectEdge {
5053    type FullType = Self;
5054    fn selection() -> String {
5055        "cursor".into()
5056    }
5057}
5058/// The result of an initiative-to-project mutation.
5059#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5060#[serde(rename_all = "camelCase", default)]
5061pub struct InitiativeToProjectPayload {
5062    /// The identifier of the last sync operation.
5063    pub last_sync_id: Option<f64>,
5064    /// The initiative-to-project association that was created or updated.
5065    pub initiative_to_project: Option<InitiativeToProject>,
5066    /// Whether the operation was successful.
5067    pub success: Option<bool>,
5068}
5069impl GraphQLFields for InitiativeToProjectPayload {
5070    type FullType = Self;
5071    fn selection() -> String {
5072        "lastSyncId success".into()
5073    }
5074}
5075/// A status update posted to an initiative. Initiative updates communicate progress, health, and blockers to stakeholders. Each update captures the initiative's health at the time of writing and includes a rich-text body with the update content.
5076#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5077#[serde(rename_all = "camelCase", default)]
5078pub struct InitiativeUpdate {
5079    /// The unique identifier of the entity.
5080    pub id: Option<String>,
5081    /// The time at which the entity was created.
5082    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5083    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
5084    /// been updated after creation.
5085    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
5086    /// The time at which the entity was archived. Null if the entity has not been archived.
5087    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
5088    /// The update content in markdown format.
5089    pub body: Option<String>,
5090    /// The time the update was edited.
5091    pub edited_at: Option<chrono::DateTime<chrono::Utc>>,
5092    /// Emoji reaction summary, grouped by emoji type.
5093    pub reaction_data: Option<serde_json::Value>,
5094    /// `Internal` The content of the update as a Prosemirror document.
5095    pub body_data: Option<String>,
5096    /// The update's unique URL slug.
5097    pub slug_id: Option<String>,
5098    /// The initiative that this status update was posted to.
5099    pub initiative: Option<Box<Initiative>>,
5100    /// The user who wrote the update.
5101    pub user: Option<Box<User>>,
5102    /// The health of the initiative at the time this update was posted. Possible values are onTrack, atRisk, or offTrack.
5103    pub health: Option<InitiativeUpdateHealthType>,
5104    /// `Internal` A snapshot of initiative properties at the time the update was posted, including project statuses, sub-initiative health, and target dates. Used to compute diffs between consecutive updates.
5105    pub info_snapshot: Option<serde_json::Value>,
5106    /// Whether the diff between this update and the previous one should be hidden in the UI.
5107    pub is_diff_hidden: Option<bool>,
5108    /// The URL to the initiative update.
5109    pub url: Option<String>,
5110    /// Whether the initiative update is stale.
5111    pub is_stale: Option<bool>,
5112    /// The diff between the current update and the previous one.
5113    pub diff: Option<serde_json::Value>,
5114    /// The diff between the current update and the previous one, formatted as markdown.
5115    pub diff_markdown: Option<String>,
5116    /// Reactions associated with the initiative update.
5117    pub reactions: Option<Vec<Reaction>>,
5118    /// Comments associated with the initiative update.
5119    pub comments: Option<CommentConnection>,
5120    /// Number of comments associated with the initiative update.
5121    pub comment_count: Option<i64>,
5122}
5123impl GraphQLFields for InitiativeUpdate {
5124    type FullType = Self;
5125    fn selection() -> String {
5126        "id createdAt updatedAt archivedAt body editedAt reactionData bodyData slugId health infoSnapshot isDiffHidden url isStale diff diffMarkdown commentCount"
5127            .into()
5128    }
5129}
5130/// A generic payload return from entity archive mutations.
5131#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5132#[serde(rename_all = "camelCase", default)]
5133pub struct InitiativeUpdateArchivePayload {
5134    /// The identifier of the last sync operation.
5135    pub last_sync_id: Option<f64>,
5136    /// Whether the operation was successful.
5137    pub success: Option<bool>,
5138    /// The archived/unarchived entity. Null if entity was deleted.
5139    pub entity: Option<InitiativeUpdate>,
5140}
5141impl GraphQLFields for InitiativeUpdateArchivePayload {
5142    type FullType = Self;
5143    fn selection() -> String {
5144        "lastSyncId success".into()
5145    }
5146}
5147#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5148#[serde(rename_all = "camelCase", default)]
5149pub struct InitiativeUpdateConnection {
5150    pub edges: Option<Vec<InitiativeUpdateEdge>>,
5151    pub nodes: Option<Vec<InitiativeUpdate>>,
5152    pub page_info: Option<PageInfo>,
5153}
5154impl GraphQLFields for InitiativeUpdateConnection {
5155    type FullType = Self;
5156    fn selection() -> String {
5157        "".into()
5158    }
5159}
5160#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5161#[serde(rename_all = "camelCase", default)]
5162pub struct InitiativeUpdateEdge {
5163    pub node: Option<InitiativeUpdate>,
5164    /// Used in `before` and `after` args
5165    pub cursor: Option<String>,
5166}
5167impl GraphQLFields for InitiativeUpdateEdge {
5168    type FullType = Self;
5169    fn selection() -> String {
5170        "cursor".into()
5171    }
5172}
5173/// The result of an initiative update mutation.
5174#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5175#[serde(rename_all = "camelCase", default)]
5176pub struct InitiativeUpdatePayload {
5177    /// The identifier of the last sync operation.
5178    pub last_sync_id: Option<f64>,
5179    /// The initiative update that was created or updated.
5180    pub initiative_update: Option<InitiativeUpdate>,
5181    /// Whether the operation was successful.
5182    pub success: Option<bool>,
5183}
5184impl GraphQLFields for InitiativeUpdatePayload {
5185    type FullType = Self;
5186    fn selection() -> String {
5187        "lastSyncId success".into()
5188    }
5189}
5190/// The result of an initiative update reminder mutation.
5191#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5192#[serde(rename_all = "camelCase", default)]
5193pub struct InitiativeUpdateReminderPayload {
5194    /// The identifier of the last sync operation.
5195    pub last_sync_id: Option<f64>,
5196    /// Whether the operation was successful.
5197    pub success: Option<bool>,
5198}
5199impl GraphQLFields for InitiativeUpdateReminderPayload {
5200    type FullType = Self;
5201    fn selection() -> String {
5202        "lastSyncId success".into()
5203    }
5204}
5205/// An integration with an external service. Integrations connect Linear to tools like Slack, GitHub, GitLab, Jira, Figma, Sentry, Zendesk, Intercom, Front, PagerDuty, Opsgenie, Google Sheets, Microsoft Teams, Discord, Salesforce, and others. Each integration record represents a single configured connection, scoped to a workspace and optionally to a specific team, project, initiative, or custom view. Personal integrations (e.g., Slack Personal, Jira Personal, GitHub Personal) are scoped to the user who created them.
5206#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5207#[serde(rename_all = "camelCase", default)]
5208pub struct Integration {
5209    /// The unique identifier of the entity.
5210    pub id: Option<String>,
5211    /// The time at which the entity was created.
5212    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5213    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
5214    /// been updated after creation.
5215    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
5216    /// The time at which the entity was archived. Null if the entity has not been archived.
5217    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
5218    /// The integration's type, identifying which external service this integration connects to (e.g., 'slack', 'github', 'jira', 'figma'). This determines the shape of the integration's settings and data.
5219    pub service: Option<String>,
5220    /// The workspace that the integration is associated with.
5221    pub organization: Option<Box<Organization>>,
5222    /// The team that the integration is associated with.
5223    pub team: Option<Box<Team>>,
5224    /// The user that added the integration.
5225    pub creator: Option<Box<User>>,
5226}
5227impl GraphQLFields for Integration {
5228    type FullType = Self;
5229    fn selection() -> String {
5230        "id createdAt updatedAt archivedAt service".into()
5231    }
5232}
5233#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5234#[serde(rename_all = "camelCase", default)]
5235pub struct IntegrationConnection {
5236    pub edges: Option<Vec<IntegrationEdge>>,
5237    pub nodes: Option<Vec<Integration>>,
5238    pub page_info: Option<PageInfo>,
5239}
5240impl GraphQLFields for IntegrationConnection {
5241    type FullType = Self;
5242    fn selection() -> String {
5243        "".into()
5244    }
5245}
5246#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5247#[serde(rename_all = "camelCase", default)]
5248pub struct IntegrationEdge {
5249    pub node: Option<Integration>,
5250    /// Used in `before` and `after` args
5251    pub cursor: Option<String>,
5252}
5253impl GraphQLFields for IntegrationEdge {
5254    type FullType = Self;
5255    fn selection() -> String {
5256        "cursor".into()
5257    }
5258}
5259#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5260#[serde(rename_all = "camelCase", default)]
5261pub struct IntegrationHasScopesPayload {
5262    /// Whether the integration has the required scopes.
5263    pub has_all_scopes: Option<bool>,
5264    /// The missing scopes.
5265    pub missing_scopes: Option<Vec<String>>,
5266}
5267impl GraphQLFields for IntegrationHasScopesPayload {
5268    type FullType = Self;
5269    fn selection() -> String {
5270        "hasAllScopes missingScopes".into()
5271    }
5272}
5273#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5274#[serde(rename_all = "camelCase", default)]
5275pub struct IntegrationPayload {
5276    /// The identifier of the last sync operation.
5277    pub last_sync_id: Option<f64>,
5278    /// The integration that was created or updated.
5279    pub integration: Option<Integration>,
5280    /// Whether the operation was successful.
5281    pub success: Option<bool>,
5282}
5283impl GraphQLFields for IntegrationPayload {
5284    type FullType = Self;
5285    fn selection() -> String {
5286        "lastSyncId success".into()
5287    }
5288}
5289/// The result of an integration request mutation.
5290#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5291#[serde(rename_all = "camelCase", default)]
5292pub struct IntegrationRequestPayload {
5293    /// Whether the operation was successful.
5294    pub success: Option<bool>,
5295}
5296impl GraphQLFields for IntegrationRequestPayload {
5297    type FullType = Self;
5298    fn selection() -> String {
5299        "success".into()
5300    }
5301}
5302#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5303#[serde(rename_all = "camelCase", default)]
5304pub struct IntegrationSlackWorkspaceNamePayload {
5305    /// The current name of the Slack workspace.
5306    pub name: Option<String>,
5307    /// Whether the operation was successful.
5308    pub success: Option<bool>,
5309}
5310impl GraphQLFields for IntegrationSlackWorkspaceNamePayload {
5311    type FullType = Self;
5312    fn selection() -> String {
5313        "name success".into()
5314    }
5315}
5316/// A connection between a template and an integration. This join entity links Linear issue templates to integrations so that external systems (e.g., Slack Asks channels) can use specific templates when creating issues. Each record optionally includes a foreign entity ID to scope the template to a specific external resource, such as a particular Slack channel.
5317#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5318#[serde(rename_all = "camelCase", default)]
5319pub struct IntegrationTemplate {
5320    /// The unique identifier of the entity.
5321    pub id: Option<String>,
5322    /// The time at which the entity was created.
5323    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5324    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
5325    /// been updated after creation.
5326    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
5327    /// The time at which the entity was archived. Null if the entity has not been archived.
5328    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
5329    /// The template that the integration is associated with.
5330    pub template: Option<Template>,
5331    /// The integration that the template is associated with.
5332    pub integration: Option<Integration>,
5333    /// The identifier of the foreign entity in the external service that this template is scoped to. For example, a Slack channel ID indicating which channel should use this template for creating issues. When null, the template applies to the integration as a whole rather than a specific external resource.
5334    pub foreign_entity_id: Option<String>,
5335}
5336impl GraphQLFields for IntegrationTemplate {
5337    type FullType = Self;
5338    fn selection() -> String {
5339        "id createdAt updatedAt archivedAt foreignEntityId".into()
5340    }
5341}
5342#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5343#[serde(rename_all = "camelCase", default)]
5344pub struct IntegrationTemplateConnection {
5345    pub edges: Option<Vec<IntegrationTemplateEdge>>,
5346    pub nodes: Option<Vec<IntegrationTemplate>>,
5347    pub page_info: Option<PageInfo>,
5348}
5349impl GraphQLFields for IntegrationTemplateConnection {
5350    type FullType = Self;
5351    fn selection() -> String {
5352        "".into()
5353    }
5354}
5355#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5356#[serde(rename_all = "camelCase", default)]
5357pub struct IntegrationTemplateEdge {
5358    pub node: Option<IntegrationTemplate>,
5359    /// Used in `before` and `after` args
5360    pub cursor: Option<String>,
5361}
5362impl GraphQLFields for IntegrationTemplateEdge {
5363    type FullType = Self;
5364    fn selection() -> String {
5365        "cursor".into()
5366    }
5367}
5368/// The result of an integration template mutation.
5369#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5370#[serde(rename_all = "camelCase", default)]
5371pub struct IntegrationTemplatePayload {
5372    /// The identifier of the last sync operation.
5373    pub last_sync_id: Option<f64>,
5374    /// The IntegrationTemplate that was created or updated.
5375    pub integration_template: Option<IntegrationTemplate>,
5376    /// Whether the operation was successful.
5377    pub success: Option<bool>,
5378}
5379impl GraphQLFields for IntegrationTemplatePayload {
5380    type FullType = Self;
5381    fn selection() -> String {
5382        "lastSyncId success".into()
5383    }
5384}
5385/// The configuration of all integrations for different entities. Controls Slack notification preferences for a specific team, project, initiative, or custom view. Exactly one of teamId, projectId, customViewId, or initiativeId must be set, determining which entity these integration settings apply to.
5386#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5387#[serde(rename_all = "camelCase", default)]
5388pub struct IntegrationsSettings {
5389    /// The unique identifier of the entity.
5390    pub id: Option<String>,
5391    /// The time at which the entity was created.
5392    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5393    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
5394    /// been updated after creation.
5395    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
5396    /// The time at which the entity was archived. Null if the entity has not been archived.
5397    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
5398    /// The type of view to which the integration settings context is associated with.
5399    pub context_view_type: Option<ContextViewType>,
5400    /// Whether to send a Slack message when a new issue is created for the project or the team.
5401    pub slack_issue_created: Option<bool>,
5402    /// Whether to send a Slack message when a comment is created on any of the project or team's issues.
5403    pub slack_issue_new_comment: Option<bool>,
5404    /// Whether to send a Slack message when any of the project or team's issues change to completed or cancelled.
5405    pub slack_issue_status_changed_done: Option<bool>,
5406    /// Whether to send a Slack message when an issue is added to the custom view.
5407    pub slack_issue_added_to_view: Option<bool>,
5408    /// Whether to send a Slack message when any of the project or team's issues has a change in status.
5409    pub slack_issue_status_changed_all: Option<bool>,
5410    /// Whether to send a Slack message when a project update is created.
5411    pub slack_project_update_created: Option<bool>,
5412    /// Whether to send a Microsoft Teams message when a project update is created.
5413    pub microsoft_teams_project_update_created: Option<bool>,
5414    /// Whether to send a new project update to team Slack channels.
5415    pub slack_project_update_created_to_team: Option<bool>,
5416    /// Whether to send a new project update to workspace Slack channel.
5417    pub slack_project_update_created_to_workspace: Option<bool>,
5418    /// Whether to send a Slack message when an initiative update is created.
5419    pub slack_initiative_update_created: Option<bool>,
5420    /// Whether to send a Slack message when a new issue is added to triage.
5421    pub slack_issue_added_to_triage: Option<bool>,
5422    /// Whether to send a Slack message when an SLA is at high risk.
5423    pub slack_issue_sla_high_risk: Option<bool>,
5424    /// Whether to send a Slack message when an SLA is breached.
5425    pub slack_issue_sla_breached: Option<bool>,
5426    /// Team which those settings apply to.
5427    pub team: Option<Box<Team>>,
5428    /// Project which those settings apply to.
5429    pub project: Option<Box<Project>>,
5430    /// Initiative which those settings apply to.
5431    pub initiative: Option<Box<Initiative>>,
5432}
5433impl GraphQLFields for IntegrationsSettings {
5434    type FullType = Self;
5435    fn selection() -> String {
5436        "id createdAt updatedAt archivedAt contextViewType slackIssueCreated slackIssueNewComment slackIssueStatusChangedDone slackIssueAddedToView slackIssueStatusChangedAll slackProjectUpdateCreated microsoftTeamsProjectUpdateCreated slackProjectUpdateCreatedToTeam slackProjectUpdateCreatedToWorkspace slackInitiativeUpdateCreated slackIssueAddedToTriage slackIssueSlaHighRisk slackIssueSlaBreached"
5437            .into()
5438    }
5439}
5440#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5441#[serde(rename_all = "camelCase", default)]
5442pub struct IntegrationsSettingsPayload {
5443    /// The identifier of the last sync operation.
5444    pub last_sync_id: Option<f64>,
5445    /// The settings that were created or updated.
5446    pub integrations_settings: Option<IntegrationsSettings>,
5447    /// Whether the operation was successful.
5448    pub success: Option<bool>,
5449}
5450impl GraphQLFields for IntegrationsSettingsPayload {
5451    type FullType = Self;
5452    fn selection() -> String {
5453        "lastSyncId success".into()
5454    }
5455}
5456/// An issue is the core work item in Linear. Issues belong to a team, have a workflow status, can be assigned to users, carry a priority level, and can be organized into projects and cycles. Issues support sub-issues (parent-child hierarchy up to 10 levels deep), labels, due dates, estimates, and SLA tracking. They can also be linked to other issues via relations, attached to releases, and tracked through their full history of changes.
5457#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5458#[serde(rename_all = "camelCase", default)]
5459pub struct Issue {
5460    /// The unique identifier of the entity.
5461    pub id: Option<String>,
5462    /// The time at which the entity was created.
5463    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5464    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
5465    /// been updated after creation.
5466    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
5467    /// The time at which the entity was archived. Null if the entity has not been archived.
5468    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
5469    /// The issue's unique number, scoped to the issue's team. Together with the team key, this forms the issue's human-readable identifier (e.g., ENG-123).
5470    pub number: Option<f64>,
5471    /// The issue's title. This is the primary human-readable summary of the work item.
5472    pub title: Option<String>,
5473    /// The priority of the issue. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low.
5474    pub priority: Option<f64>,
5475    /// The estimate of the complexity of the issue. The specific scale used depends on the team's estimation configuration (e.g., points, T-shirt sizes). Null if no estimate has been set.
5476    pub estimate: Option<f64>,
5477    /// The order of the item in its column on the board.
5478    pub board_order: Option<f64>,
5479    /// The order of the item in relation to other items in the organization. Used for manual sorting in list views.
5480    pub sort_order: Option<f64>,
5481    /// The order of the item in relation to other items in the workspace, when ordered by priority.
5482    pub priority_sort_order: Option<f64>,
5483    /// The time at which the issue was moved into started state.
5484    pub started_at: Option<chrono::DateTime<chrono::Utc>>,
5485    /// The time at which the issue was moved into completed state.
5486    pub completed_at: Option<chrono::DateTime<chrono::Utc>>,
5487    /// The time at which the issue entered triage.
5488    pub started_triage_at: Option<chrono::DateTime<chrono::Utc>>,
5489    /// The time at which the issue left triage.
5490    pub triaged_at: Option<chrono::DateTime<chrono::Utc>>,
5491    /// The time at which the issue was moved into canceled state.
5492    pub canceled_at: Option<chrono::DateTime<chrono::Utc>>,
5493    /// The time at which the issue was automatically closed by the auto pruning process.
5494    pub auto_closed_at: Option<chrono::DateTime<chrono::Utc>>,
5495    /// The time at which the issue was automatically archived by the auto pruning process.
5496    pub auto_archived_at: Option<chrono::DateTime<chrono::Utc>>,
5497    /// The date at which the issue is due.
5498    pub due_date: Option<chrono::NaiveDate>,
5499    /// The time at which the issue's SLA began.
5500    pub sla_started_at: Option<chrono::DateTime<chrono::Utc>>,
5501    /// The time at which the issue's SLA will enter medium risk state.
5502    pub sla_medium_risk_at: Option<chrono::DateTime<chrono::Utc>>,
5503    /// The time at which the issue's SLA will enter high risk state.
5504    pub sla_high_risk_at: Option<chrono::DateTime<chrono::Utc>>,
5505    /// The time at which the issue's SLA will breach.
5506    pub sla_breaches_at: Option<chrono::DateTime<chrono::Utc>>,
5507    /// The type of SLA set on the issue. Calendar days or business days.
5508    pub sla_type: Option<String>,
5509    /// The time at which the issue was added to a project.
5510    pub added_to_project_at: Option<chrono::DateTime<chrono::Utc>>,
5511    /// The time at which the issue was added to a cycle.
5512    pub added_to_cycle_at: Option<chrono::DateTime<chrono::Utc>>,
5513    /// The time at which the issue was added to a team.
5514    pub added_to_team_at: Option<chrono::DateTime<chrono::Utc>>,
5515    /// A flag that indicates whether the issue is in the trash bin.
5516    pub trashed: Option<bool>,
5517    /// The time until an issue will be snoozed in Triage view.
5518    pub snoozed_until_at: Option<chrono::DateTime<chrono::Utc>>,
5519    /// `Internal` The time at which the most recent suggestions for this issue were generated.
5520    pub suggestions_generated_at: Option<chrono::DateTime<chrono::Utc>>,
5521    /// `Internal` The activity summary information for this issue.
5522    pub activity_summary: Option<serde_json::Value>,
5523    /// `Internal` AI-generated activity summary for this issue.
5524    pub summary: Option<Box<Summary>>,
5525    /// Identifiers of the labels associated with this issue. Can be used to query the labels directly.
5526    pub label_ids: Option<Vec<String>>,
5527    /// The team that the issue belongs to. Every issue must belong to exactly one team, which determines the available workflow states, labels, and other team-specific configuration.
5528    pub team: Option<Box<Team>>,
5529    /// The cycle that the issue is associated with. Null if the issue is not part of any cycle.
5530    pub cycle: Option<Box<Cycle>>,
5531    /// The project that the issue is associated with. Null if the issue is not part of any project.
5532    pub project: Option<Box<Project>>,
5533    /// The project milestone that the issue is associated with. Null if the issue is not assigned to a specific milestone within its project.
5534    pub project_milestone: Option<Box<ProjectMilestone>>,
5535    /// The last template that was applied to this issue.
5536    pub last_applied_template: Option<Box<Template>>,
5537    /// The recurring issue template that created this issue.
5538    pub recurring_issue_template: Option<Box<Template>>,
5539    /// Previous identifiers of the issue if it has been moved between teams.
5540    pub previous_identifiers: Option<Vec<String>>,
5541    /// The user who created the issue. Null if the creator's account has been deleted or if the issue was created by an integration or system process.
5542    pub creator: Option<Box<User>>,
5543    /// The external user who created the issue. Set when the issue was created via an integration (e.g., Slack, Intercom) on behalf of a non-Linear user. Null if the issue was created by a Linear user.
5544    pub external_user_creator: Option<Box<ExternalUser>>,
5545    /// The user to whom the issue is assigned. Null if the issue is unassigned.
5546    pub assignee: Option<Box<User>>,
5547    /// The agent user that is delegated to work on this issue. Set when an AI agent has been assigned to perform work on this issue. Null if no agent is working on the issue.
5548    pub delegate: Option<Box<User>>,
5549    /// The user who snoozed the issue.
5550    pub snoozed_by: Option<Box<User>>,
5551    /// The workflow state (issue status) that the issue is currently in. Workflow states represent the issue's progress through the team's workflow, such as Triage, Todo, In Progress, Done, or Canceled.
5552    pub state: Option<Box<WorkflowState>>,
5553    /// The order of the item in the sub-issue list. Only set if the issue has a parent.
5554    pub sub_issue_sort_order: Option<f64>,
5555    /// Emoji reaction summary for the issue, grouped by emoji type. Contains the count and reacting user information for each emoji.
5556    pub reaction_data: Option<serde_json::Value>,
5557    /// Label for the priority.
5558    pub priority_label: Option<String>,
5559    /// The comment that this issue was created from, when an issue is created from an existing comment. Null if the issue was not created from a comment.
5560    pub source_comment: Option<Box<Comment>>,
5561    /// Integration type that created this issue, if applicable.
5562    pub integration_source_type: Option<IntegrationService>,
5563    /// Whether this issue inherits shared access from its parent issue.
5564    pub inherits_shared_access: Option<bool>,
5565    /// Documents associated with the issue.
5566    pub documents: Option<DocumentConnection>,
5567    /// The bot that created the issue, if applicable.
5568    pub bot_actor: Option<ActorBot>,
5569    /// The users favorite associated with this issue.
5570    pub favorite: Option<Box<Favorite>>,
5571    /// Issue's human readable identifier (e.g. ENG-123).
5572    pub identifier: Option<String>,
5573    /// Issue URL.
5574    pub url: Option<String>,
5575    /// Suggested branch name for the issue.
5576    pub branch_name: Option<String>,
5577    /// Shared access metadata for this issue.
5578    pub shared_access: Option<IssueSharedAccess>,
5579    /// Returns the number of Attachment resources which are created by customer support ticketing systems (e.g. Zendesk).
5580    pub customer_ticket_count: Option<i64>,
5581    /// Users who are subscribed to the issue.
5582    pub subscribers: Option<UserConnection>,
5583    /// The parent of the issue.
5584    pub parent: Option<Box<Issue>>,
5585    /// Children of the issue.
5586    pub children: Option<IssueConnection>,
5587    /// Comments associated with the issue.
5588    pub comments: Option<CommentConnection>,
5589    /// `Internal` AI prompt progresses associated with this issue.
5590    pub ai_prompt_progresses: Option<AiPromptProgressConnection>,
5591    /// History entries associated with the issue.
5592    pub history: Option<IssueHistoryConnection>,
5593    /// Labels associated with this issue.
5594    pub labels: Option<IssueLabelConnection>,
5595    /// Relations associated with this issue.
5596    pub relations: Option<IssueRelationConnection>,
5597    /// Inverse relations associated with this issue.
5598    pub inverse_relations: Option<IssueRelationConnection>,
5599    /// Attachments associated with the issue.
5600    pub attachments: Option<AttachmentConnection>,
5601    /// Attachments previously associated with the issue before being moved to another issue.
5602    pub former_attachments: Option<AttachmentConnection>,
5603    /// The issue's description in markdown format.
5604    pub description: Option<String>,
5605    /// `Internal` The issue's description content as YJS state.
5606    pub description_state: Option<String>,
5607    /// `ALPHA` The document content representing this issue description.
5608    pub document_content: Option<Box<DocumentContent>>,
5609    /// Reactions associated with the issue.
5610    pub reactions: Option<Vec<Reaction>>,
5611    /// Customer needs associated with the issue.
5612    pub needs: Option<CustomerNeedConnection>,
5613    /// Customer needs previously associated with the issue before being moved to another issue.
5614    pub former_needs: Option<CustomerNeedConnection>,
5615    /// `ALPHA` Releases associated with the issue.
5616    pub releases: Option<ReleaseConnection>,
5617    /// The external services the issue is synced with.
5618    pub synced_with: Option<Vec<ExternalEntityInfo>>,
5619    /// `Internal` Product Intelligence suggestions for the issue.
5620    pub suggestions: Option<IssueSuggestionConnection>,
5621    /// `Internal` Incoming product intelligence relation suggestions for the issue.
5622    pub incoming_suggestions: Option<IssueSuggestionConnection>,
5623    /// The internal user who requested creation of the Asks issue on behalf of the creator.
5624    pub asks_requester: Option<Box<User>>,
5625    /// The external user who requested creation of the Asks issue on behalf of the creator.
5626    pub asks_external_user_requester: Option<Box<ExternalUser>>,
5627    /// The issue's workflow states over time.
5628    pub state_history: Option<IssueStateSpanConnection>,
5629}
5630impl GraphQLFields for Issue {
5631    type FullType = Self;
5632    fn selection() -> String {
5633        "id createdAt updatedAt archivedAt number title priority estimate boardOrder sortOrder prioritySortOrder startedAt completedAt startedTriageAt triagedAt canceledAt autoClosedAt autoArchivedAt dueDate slaStartedAt slaMediumRiskAt slaHighRiskAt slaBreachesAt slaType addedToProjectAt addedToCycleAt addedToTeamAt trashed snoozedUntilAt suggestionsGeneratedAt activitySummary labelIds previousIdentifiers subIssueSortOrder reactionData priorityLabel integrationSourceType inheritsSharedAccess identifier url branchName customerTicketCount description"
5634            .into()
5635    }
5636}
5637/// A generic payload return from entity archive mutations.
5638#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5639#[serde(rename_all = "camelCase", default)]
5640pub struct IssueArchivePayload {
5641    /// The identifier of the last sync operation.
5642    pub last_sync_id: Option<f64>,
5643    /// Whether the operation was successful.
5644    pub success: Option<bool>,
5645    /// The archived/unarchived entity. Null if entity was deleted.
5646    pub entity: Option<Issue>,
5647}
5648impl GraphQLFields for IssueArchivePayload {
5649    type FullType = Self;
5650    fn selection() -> String {
5651        "lastSyncId success".into()
5652    }
5653}
5654/// The result of a batch issue mutation, containing the updated issues and a success indicator.
5655#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5656#[serde(rename_all = "camelCase", default)]
5657pub struct IssueBatchPayload {
5658    /// The identifier of the last sync operation.
5659    pub last_sync_id: Option<f64>,
5660    /// The issues that were updated.
5661    pub issues: Option<Vec<Issue>>,
5662    /// Whether the operation was successful.
5663    pub success: Option<bool>,
5664}
5665impl GraphQLFields for IssueBatchPayload {
5666    type FullType = Self;
5667    fn selection() -> String {
5668        "lastSyncId success".into()
5669    }
5670}
5671#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5672#[serde(rename_all = "camelCase", default)]
5673pub struct IssueConnection {
5674    pub edges: Option<Vec<IssueEdge>>,
5675    pub nodes: Option<Vec<Issue>>,
5676    pub page_info: Option<PageInfo>,
5677}
5678impl GraphQLFields for IssueConnection {
5679    type FullType = Self;
5680    fn selection() -> String {
5681        "".into()
5682    }
5683}
5684/// `Internal` A draft issue that has not yet been created as a full issue. Drafts allow users to prepare issue details (title, description, labels, assignee, etc.) before committing them. Drafts belong to a team and a creator, and support a parent-child hierarchy similar to issues. A draft can have either a parent draft or a parent issue, but not both.
5685#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5686#[serde(rename_all = "camelCase", default)]
5687pub struct IssueDraft {
5688    /// The unique identifier of the entity.
5689    pub id: Option<String>,
5690    /// The time at which the entity was created.
5691    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5692    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
5693    /// been updated after creation.
5694    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
5695    /// The time at which the entity was archived. Null if the entity has not been archived.
5696    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
5697    /// The draft's title. This will become the issue's title when the draft is published.
5698    pub title: Option<String>,
5699    /// The draft's description in markdown format.
5700    pub description: Option<String>,
5701    /// The priority of the draft. 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low.
5702    pub priority: Option<f64>,
5703    /// The estimate of the complexity of the draft. Null if no estimate has been set.
5704    pub estimate: Option<f64>,
5705    /// The date at which the issue would be due.
5706    pub due_date: Option<chrono::NaiveDate>,
5707    /// Identifiers of the labels added to the draft. These labels will be applied to the issue when the draft is published.
5708    pub label_ids: Option<Vec<String>>,
5709    /// Identifier of the team associated with the draft. Can be used to query the team directly.
5710    pub team_id: Option<String>,
5711    /// Identifier of the cycle associated with the draft. Can be used to query the cycle directly. Null if no cycle is assigned.
5712    pub cycle_id: Option<String>,
5713    /// Identifier of the project associated with the draft. Can be used to query the project directly. Null if no project is assigned.
5714    pub project_id: Option<String>,
5715    /// Identifier of the project milestone associated with the draft. Can be used to query the project milestone directly. Null if no milestone is assigned.
5716    pub project_milestone_id: Option<String>,
5717    /// The user who created the draft.
5718    pub creator: Option<User>,
5719    /// Identifier of the user assigned to the draft. Can be used to query the user directly. Null if the draft is unassigned.
5720    pub assignee_id: Option<String>,
5721    /// The agent user delegated to work on the issue being drafted.
5722    pub delegate_id: Option<String>,
5723    /// Identifier of the workflow state associated with the draft. Can be used to query the workflow state directly. Determines the initial status the issue will have when the draft is published.
5724    pub state_id: Option<String>,
5725    /// The parent draft of the draft. Set when this draft represents a sub-issue of another draft. Null if this is a top-level draft or has a parent issue instead.
5726    pub parent: Option<Box<IssueDraft>>,
5727    /// The ID of the parent issue draft, if any.
5728    pub parent_id: Option<String>,
5729    /// Identifier of the comment that the draft was created from. Set when a draft is created from an existing comment. Null if the draft was not created from a comment.
5730    pub source_comment_id: Option<String>,
5731    /// The parent issue of the draft. Set when this draft represents a sub-issue that will be created under an existing issue. Null if this is a top-level draft or has a parent draft instead.
5732    pub parent_issue: Option<Issue>,
5733    /// The ID of the parent issue, if any.
5734    pub parent_issue_id: Option<String>,
5735    /// The order of items in the sub-draft list. Only set if the draft has `parent` set.
5736    pub sub_issue_sort_order: Option<f64>,
5737    /// Label for the priority.
5738    pub priority_label: Option<String>,
5739    /// `Internal` The draft's description as a Prosemirror document.
5740    pub description_data: Option<serde_json::Value>,
5741    /// Serialized array of JSONs representing attachments.
5742    pub attachments: Option<serde_json::Value>,
5743    /// Serialized array of JSONs representing customer needs.
5744    pub needs: Option<serde_json::Value>,
5745    /// Identifiers of the releases associated with the draft. These releases will be linked to the issue when the draft is published.
5746    pub release_ids: Option<Vec<String>>,
5747    /// Serialized array of JSONs representing the recurring issue's schedule.
5748    pub schedule: Option<serde_json::Value>,
5749}
5750impl GraphQLFields for IssueDraft {
5751    type FullType = Self;
5752    fn selection() -> String {
5753        "id createdAt updatedAt archivedAt title description priority estimate dueDate labelIds teamId cycleId projectId projectMilestoneId assigneeId delegateId stateId parentId sourceCommentId parentIssueId subIssueSortOrder priorityLabel descriptionData attachments needs releaseIds schedule"
5754            .into()
5755    }
5756}
5757#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5758#[serde(rename_all = "camelCase", default)]
5759pub struct IssueDraftConnection {
5760    pub edges: Option<Vec<IssueDraftEdge>>,
5761    pub nodes: Option<Vec<IssueDraft>>,
5762    pub page_info: Option<PageInfo>,
5763}
5764impl GraphQLFields for IssueDraftConnection {
5765    type FullType = Self;
5766    fn selection() -> String {
5767        "".into()
5768    }
5769}
5770#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5771#[serde(rename_all = "camelCase", default)]
5772pub struct IssueDraftEdge {
5773    pub node: Option<IssueDraft>,
5774    /// Used in `before` and `after` args
5775    pub cursor: Option<String>,
5776}
5777impl GraphQLFields for IssueDraftEdge {
5778    type FullType = Self;
5779    fn selection() -> String {
5780        "cursor".into()
5781    }
5782}
5783#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5784#[serde(rename_all = "camelCase", default)]
5785pub struct IssueEdge {
5786    pub node: Option<Issue>,
5787    /// Used in `before` and `after` args
5788    pub cursor: Option<String>,
5789}
5790impl GraphQLFields for IssueEdge {
5791    type FullType = Self;
5792    fn selection() -> String {
5793        "cursor".into()
5794    }
5795}
5796/// The result of an AI-generated issue filter suggestion based on a text prompt.
5797#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5798#[serde(rename_all = "camelCase", default)]
5799pub struct IssueFilterSuggestionPayload {
5800    /// The json filter that is suggested.
5801    pub filter: Option<serde_json::Value>,
5802    /// The log id of the prompt, that created this filter.
5803    pub log_id: Option<String>,
5804}
5805impl GraphQLFields for IssueFilterSuggestionPayload {
5806    type FullType = Self;
5807    fn selection() -> String {
5808        "filter logId".into()
5809    }
5810}
5811/// A record of changes to an issue. Each history entry captures one or more property changes made to an issue within a short grouping window by the same actor. History entries track changes to fields such as title, assignee, status, priority, project, cycle, labels, due date, estimate, parent issue, and more. They also record metadata about what triggered the change (e.g., a user action, workflow automation, triage rule, or integration).
5812#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5813#[serde(rename_all = "camelCase", default)]
5814pub struct IssueHistory {
5815    /// The unique identifier of the entity.
5816    pub id: Option<String>,
5817    /// The time at which the entity was created.
5818    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
5819    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
5820    /// been updated after creation.
5821    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
5822    /// The time at which the entity was archived. Null if the entity has not been archived.
5823    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
5824    /// The issue that was changed.
5825    pub issue: Option<Issue>,
5826    /// Identifier of the user who made these changes. Can be used to query the user directly. Null if the change was made by an integration, automation, or system process.
5827    pub actor_id: Option<String>,
5828    /// Whether the issue's description was updated.
5829    pub updated_description: Option<bool>,
5830    /// What the title was changed from.
5831    pub from_title: Option<String>,
5832    /// What the title was changed to.
5833    pub to_title: Option<String>,
5834    /// Identifier of the user from whom the issue was re-assigned. Can be used to query the user directly. Null if the assignee was not changed or the issue was previously unassigned.
5835    pub from_assignee_id: Option<String>,
5836    /// Identifier of the user to whom the issue was assigned. Can be used to query the user directly. Null if the assignee was not changed or the issue was unassigned.
5837    pub to_assignee_id: Option<String>,
5838    /// What the priority was changed from.
5839    pub from_priority: Option<f64>,
5840    /// What the priority was changed to.
5841    pub to_priority: Option<f64>,
5842    /// Identifier of the team from which the issue was moved. Can be used to query the team directly. Null if the team was not changed.
5843    pub from_team_id: Option<String>,
5844    /// Identifier of the team to which the issue was moved. Can be used to query the team directly. Null if the team was not changed.
5845    pub to_team_id: Option<String>,
5846    /// Identifier of the previous parent issue. Can be used to query the issue directly. Null if the parent was not changed or the issue previously had no parent.
5847    pub from_parent_id: Option<String>,
5848    /// Identifier of the new parent issue. Can be used to query the issue directly. Null if the parent was not changed or the issue was removed from its parent.
5849    pub to_parent_id: Option<String>,
5850    /// Identifier of the previous workflow state (issue status) of the issue. Can be used to query the workflow state directly. Null if the status was not changed.
5851    pub from_state_id: Option<String>,
5852    /// Identifier of the new workflow state (issue status) of the issue. Can be used to query the workflow state directly. Null if the status was not changed.
5853    pub to_state_id: Option<String>,
5854    /// Identifier of the previous cycle of the issue. Can be used to query the cycle directly. Null if the cycle was not changed or the issue was not in a cycle.
5855    pub from_cycle_id: Option<String>,
5856    /// Identifier of the new cycle of the issue. Can be used to query the cycle directly. Null if the cycle was not changed or the issue was removed from a cycle.
5857    pub to_cycle_id: Option<String>,
5858    /// Identifier of the new project that was created by converting this issue to a project. Can be used to query the project directly. Null if the issue was not converted to a project.
5859    pub to_converted_project_id: Option<String>,
5860    /// Identifier of the previous project of the issue. Can be used to query the project directly. Null if the project was not changed or the issue was not in a project.
5861    pub from_project_id: Option<String>,
5862    /// Identifier of the new project of the issue. Can be used to query the project directly. Null if the project was not changed or the issue was removed from a project.
5863    pub to_project_id: Option<String>,
5864    /// What the estimate was changed from.
5865    pub from_estimate: Option<f64>,
5866    /// What the estimate was changed to.
5867    pub to_estimate: Option<f64>,
5868    /// Whether the issue was archived (true) or unarchived (false) in this change. Null if the archive status was not changed.
5869    pub archived: Option<bool>,
5870    /// Whether the issue was trashed or un-trashed.
5871    pub trashed: Option<bool>,
5872    /// Identifier of the attachment that was linked to or unlinked from the issue. Can be used to query the attachment directly. Null if no attachment change occurred.
5873    pub attachment_id: Option<String>,
5874    /// ID's of labels that were added.
5875    pub added_label_ids: Option<Vec<String>>,
5876    /// ID's of labels that were removed.
5877    pub removed_label_ids: Option<Vec<String>>,
5878    /// `ALPHA` ID's of releases that the issue was added to.
5879    pub added_to_release_ids: Option<Vec<String>>,
5880    /// `ALPHA` ID's of releases that the issue was removed from.
5881    pub removed_from_release_ids: Option<Vec<String>>,
5882    /// Changed issue relationships.
5883    pub relation_changes: Option<Vec<IssueRelationHistoryPayload>>,
5884    /// Whether the issue was auto-closed.
5885    pub auto_closed: Option<bool>,
5886    /// Whether the issue was auto-archived.
5887    pub auto_archived: Option<bool>,
5888    /// What the due date was changed from.
5889    pub from_due_date: Option<chrono::NaiveDate>,
5890    /// What the due date was changed to.
5891    pub to_due_date: Option<chrono::NaiveDate>,
5892    /// `Deprecated` Identifier of the customer need that was linked to the issue. Use customer need related arrays in changes instead.
5893    pub customer_need_id: Option<String>,
5894    /// `Internal` Serialized JSON representing changes for certain non-relational properties.
5895    pub changes: Option<serde_json::Value>,
5896    /// The actor that performed the actions. This field may be empty in the case of integrations or automations.
5897    pub actor: Option<User>,
5898    /// The actors that performed the actions. This field may be empty in the case of integrations or automations.
5899    pub actors: Option<Vec<User>>,
5900    /// The actors that edited the description of the issue, if any.
5901    pub description_updated_by: Option<Vec<User>>,
5902    /// The user that was unassigned from the issue.
5903    pub from_assignee: Option<User>,
5904    /// The user that was assigned to the issue.
5905    pub to_assignee: Option<User>,
5906    /// The cycle that the issue was moved from.
5907    pub from_cycle: Option<Cycle>,
5908    /// The cycle that the issue was moved to.
5909    pub to_cycle: Option<Cycle>,
5910    /// The new project created from the issue.
5911    pub to_converted_project: Option<Project>,
5912    /// The app user from whom the issue delegation was transferred.
5913    pub from_delegate: Option<User>,
5914    /// The app user to whom the issue delegation was transferred.
5915    pub to_delegate: Option<User>,
5916    /// The project that the issue was moved from.
5917    pub from_project: Option<Project>,
5918    /// The project that the issue was moved to.
5919    pub to_project: Option<Project>,
5920    /// The state that the issue was moved from.
5921    pub from_state: Option<WorkflowState>,
5922    /// The state that the issue was moved to.
5923    pub to_state: Option<WorkflowState>,
5924    /// The team that the issue was moved from.
5925    pub from_team: Option<Team>,
5926    /// The team that the issue was moved to.
5927    pub to_team: Option<Team>,
5928    /// The parent issue that the issue was moved from.
5929    pub from_parent: Option<Issue>,
5930    /// The parent issue that the issue was moved to.
5931    pub to_parent: Option<Issue>,
5932    /// The linked attachment.
5933    pub attachment: Option<Attachment>,
5934    /// The import record.
5935    pub issue_import: Option<IssueImport>,
5936    /// The users that were notified of the issue.
5937    pub triage_responsibility_notified_users: Option<Vec<User>>,
5938    /// Boolean indicating if the issue was auto-assigned using the triage responsibility feature.
5939    pub triage_responsibility_auto_assigned: Option<bool>,
5940    /// The team that triggered the triage responsibility action.
5941    pub triage_responsibility_team: Option<Team>,
5942    /// The project milestone that the issue was moved from.
5943    pub from_project_milestone: Option<ProjectMilestone>,
5944    /// The project milestone that the issue was moved to.
5945    pub to_project_milestone: Option<ProjectMilestone>,
5946    /// The time at which the issue's SLA was previously started.
5947    pub from_sla_started_at: Option<chrono::DateTime<chrono::Utc>>,
5948    /// The time at which the issue's SLA is now started.
5949    pub to_sla_started_at: Option<chrono::DateTime<chrono::Utc>>,
5950    /// The SLA breach time that was previously set on the issue.
5951    pub from_sla_breaches_at: Option<chrono::DateTime<chrono::Utc>>,
5952    /// The SLA breach time that is now set on the issue.
5953    pub to_sla_breaches_at: Option<chrono::DateTime<chrono::Utc>>,
5954    /// Whether the issue had previously breached its SLA.
5955    pub from_sla_breached: Option<bool>,
5956    /// Whether the issue has now breached its SLA.
5957    pub to_sla_breached: Option<bool>,
5958    /// The type of SLA that was previously set on the issue.
5959    pub from_sla_type: Option<String>,
5960    /// The type of SLA that is now set on the issue.
5961    pub to_sla_type: Option<String>,
5962    /// The bot that performed the action.
5963    pub bot_actor: Option<ActorBot>,
5964    /// The labels that were added to the issue.
5965    pub added_labels: Option<Vec<IssueLabel>>,
5966    /// The labels that were removed from the issue.
5967    pub removed_labels: Option<Vec<IssueLabel>>,
5968    /// The releases that the issue was added to.
5969    pub added_to_releases: Option<Vec<Release>>,
5970    /// The releases that the issue was removed from.
5971    pub removed_from_releases: Option<Vec<Release>>,
5972    /// `INTERNAL` Metadata about the triage rule that made changes to the issue.
5973    pub triage_rule_metadata: Option<IssueHistoryTriageRuleMetadata>,
5974    /// `INTERNAL` Metadata about the workflow that made changes to the issue.
5975    pub workflow_metadata: Option<IssueHistoryWorkflowMetadata>,
5976}
5977impl GraphQLFields for IssueHistory {
5978    type FullType = Self;
5979    fn selection() -> String {
5980        "id createdAt updatedAt archivedAt actorId updatedDescription fromTitle toTitle fromAssigneeId toAssigneeId fromPriority toPriority fromTeamId toTeamId fromParentId toParentId fromStateId toStateId fromCycleId toCycleId toConvertedProjectId fromProjectId toProjectId fromEstimate toEstimate archived trashed attachmentId addedLabelIds removedLabelIds addedToReleaseIds removedFromReleaseIds autoClosed autoArchived fromDueDate toDueDate customerNeedId changes triageResponsibilityAutoAssigned fromSlaStartedAt toSlaStartedAt fromSlaBreachesAt toSlaBreachesAt fromSlaBreached toSlaBreached fromSlaType toSlaType"
5981            .into()
5982    }
5983}
5984#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5985#[serde(rename_all = "camelCase", default)]
5986pub struct IssueHistoryConnection {
5987    pub edges: Option<Vec<IssueHistoryEdge>>,
5988    pub nodes: Option<Vec<IssueHistory>>,
5989    pub page_info: Option<PageInfo>,
5990}
5991impl GraphQLFields for IssueHistoryConnection {
5992    type FullType = Self;
5993    fn selection() -> String {
5994        "".into()
5995    }
5996}
5997#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5998#[serde(rename_all = "camelCase", default)]
5999pub struct IssueHistoryEdge {
6000    pub node: Option<IssueHistory>,
6001    /// Used in `before` and `after` args
6002    pub cursor: Option<String>,
6003}
6004impl GraphQLFields for IssueHistoryEdge {
6005    type FullType = Self;
6006    fn selection() -> String {
6007        "cursor".into()
6008    }
6009}
6010/// An error that occurred during triage rule execution, such as a conflicting label assignment or an invalid property value. Contains the error type and optionally the property that caused the failure.
6011#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6012#[serde(rename_all = "camelCase", default)]
6013pub struct IssueHistoryTriageRuleError {
6014    /// The type of error that occurred.
6015    pub r#type: Option<TriageRuleErrorType>,
6016    /// The property that caused the error.
6017    pub property: Option<String>,
6018    /// Whether the conflict was for the same child label.
6019    pub conflict_for_same_child_label: Option<bool>,
6020    /// The team the issue was being moved from.
6021    pub from_team: Option<Team>,
6022    /// The team the issue was being moved to.
6023    pub to_team: Option<Team>,
6024    /// The conflicting labels.
6025    pub conflicting_labels: Option<Vec<IssueLabel>>,
6026}
6027impl GraphQLFields for IssueHistoryTriageRuleError {
6028    type FullType = Self;
6029    fn selection() -> String {
6030        "type property conflictForSameChildLabel".into()
6031    }
6032}
6033/// Metadata about a triage responsibility rule that made changes to an issue, such as auto-assigning an issue when it enters triage. Includes information about any errors that occurred during rule execution.
6034#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6035#[serde(rename_all = "camelCase", default)]
6036pub struct IssueHistoryTriageRuleMetadata {
6037    /// The error that occurred, if any.
6038    pub triage_rule_error: Option<IssueHistoryTriageRuleError>,
6039    /// The triage rule that triggered the issue update.
6040    pub updated_by_triage_rule: Option<WorkflowDefinition>,
6041}
6042impl GraphQLFields for IssueHistoryTriageRuleMetadata {
6043    type FullType = Self;
6044    fn selection() -> String {
6045        "".into()
6046    }
6047}
6048/// Metadata about a workflow automation that made changes to an issue. Links the issue history entry back to the workflow definition that triggered the change, and optionally to any AI conversation involved in the automation.
6049#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6050#[serde(rename_all = "camelCase", default)]
6051pub struct IssueHistoryWorkflowMetadata {
6052    /// The workflow definition that triggered the issue update.
6053    pub workflow_definition: Option<WorkflowDefinition>,
6054    /// The AI conversation associated with the workflow.
6055    pub ai_conversation: Option<AiConversation>,
6056}
6057impl GraphQLFields for IssueHistoryWorkflowMetadata {
6058    type FullType = Self;
6059    fn selection() -> String {
6060        "".into()
6061    }
6062}
6063/// An import job for data from an external service such as Jira, Asana, GitHub, Shortcut, or other project management tools. Import jobs track the full lifecycle of importing issues, labels, workflow states, and other data into a Linear workspace, including progress, status, error states, and data mapping configuration.
6064#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6065#[serde(rename_all = "camelCase", default)]
6066pub struct IssueImport {
6067    /// The unique identifier of the entity.
6068    pub id: Option<String>,
6069    /// The time at which the entity was created.
6070    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
6071    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
6072    /// been updated after creation.
6073    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
6074    /// The time at which the entity was archived. Null if the entity has not been archived.
6075    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
6076    /// The name of the new team to be created for the import, when the import is configured to create a new team rather than importing into an existing one. Null if importing into an existing team.
6077    pub team_name: Option<String>,
6078    /// Identifier of the user who started the import job. Can be used to query the user directly. Null if the user has been deleted.
6079    pub creator_id: Option<String>,
6080    /// The external service from which data is being imported (e.g., jira, asana, github, shortcut, linear).
6081    pub service: Option<String>,
6082    /// The current status of the import job, indicating its position in the import lifecycle (e.g., not started, in progress, complete, error).
6083    pub status: Option<String>,
6084    /// The data mapping configuration for the import job.
6085    pub mapping: Option<serde_json::Value>,
6086    /// User readable error message, if one has occurred during the import.
6087    pub error: Option<String>,
6088    /// Current step progress as a percentage (0-100). Null if the import has not yet started or progress tracking is not available.
6089    pub progress: Option<f64>,
6090    /// File URL for the uploaded CSV for the import, if there is one.
6091    pub csv_file_url: Option<String>,
6092    /// Error code and metadata, if one has occurred during the import.
6093    pub error_metadata: Option<serde_json::Value>,
6094    /// Metadata related to import service.
6095    pub service_metadata: Option<serde_json::Value>,
6096    /// The display name of the import service.
6097    pub display_name: Option<String>,
6098}
6099impl GraphQLFields for IssueImport {
6100    type FullType = Self;
6101    fn selection() -> String {
6102        "id createdAt updatedAt archivedAt teamName creatorId service status mapping error progress csvFileUrl errorMetadata serviceMetadata displayName"
6103            .into()
6104    }
6105}
6106/// The result of checking whether an import from an external service can proceed.
6107#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6108#[serde(rename_all = "camelCase", default)]
6109pub struct IssueImportCheckPayload {
6110    /// Whether the operation was successful.
6111    pub success: Option<bool>,
6112}
6113impl GraphQLFields for IssueImportCheckPayload {
6114    type FullType = Self;
6115    fn selection() -> String {
6116        "success".into()
6117    }
6118}
6119/// The result of deleting an issue import, containing the deleted import job and a success indicator.
6120#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6121#[serde(rename_all = "camelCase", default)]
6122pub struct IssueImportDeletePayload {
6123    /// The identifier of the last sync operation.
6124    pub last_sync_id: Option<f64>,
6125    /// The import job that was deleted.
6126    pub issue_import: Option<IssueImport>,
6127    /// Whether the operation was successful.
6128    pub success: Option<bool>,
6129}
6130impl GraphQLFields for IssueImportDeletePayload {
6131    type FullType = Self;
6132    fn selection() -> String {
6133        "lastSyncId success".into()
6134    }
6135}
6136/// The result of validating a custom JQL query for a Jira import.
6137#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6138#[serde(rename_all = "camelCase", default)]
6139pub struct IssueImportJqlCheckPayload {
6140    /// Returns true if the JQL query has been validated successfully, false otherwise
6141    pub success: Option<bool>,
6142    /// An approximate number of issues matching the JQL query. Null when the query is invalid or the count is unavailable.
6143    pub count: Option<f64>,
6144    /// An error message returned by Jira when validating the JQL query.
6145    pub error: Option<String>,
6146}
6147impl GraphQLFields for IssueImportJqlCheckPayload {
6148    type FullType = Self;
6149    fn selection() -> String {
6150        "success count error".into()
6151    }
6152}
6153/// The result of an issue import mutation, containing the import job and a success indicator.
6154#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6155#[serde(rename_all = "camelCase", default)]
6156pub struct IssueImportPayload {
6157    /// The identifier of the last sync operation.
6158    pub last_sync_id: Option<f64>,
6159    /// The import job that was created or updated.
6160    pub issue_import: Option<IssueImport>,
6161    /// Whether the operation was successful.
6162    pub success: Option<bool>,
6163}
6164impl GraphQLFields for IssueImportPayload {
6165    type FullType = Self;
6166    fn selection() -> String {
6167        "lastSyncId success".into()
6168    }
6169}
6170/// The result of checking whether an issue import can be synced with its source service after import completes.
6171#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6172#[serde(rename_all = "camelCase", default)]
6173pub struct IssueImportSyncCheckPayload {
6174    /// Returns true if the import can be synced, false otherwise
6175    pub can_sync: Option<bool>,
6176    /// An error message explaining why the import cannot be synced. Null when canSync is true.
6177    pub error: Option<String>,
6178}
6179impl GraphQLFields for IssueImportSyncCheckPayload {
6180    type FullType = Self;
6181    fn selection() -> String {
6182        "canSync error".into()
6183    }
6184}
6185/// Labels that can be associated with issues. Labels help categorize and filter issues across a workspace. They can be workspace-level (shared across all teams) or team-scoped. Labels have a color for visual identification and can be organized hierarchically into groups, where a parent label acts as a group containing child labels. Labels may also be inherited from parent teams to sub-teams.
6186#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6187#[serde(rename_all = "camelCase", default)]
6188pub struct IssueLabel {
6189    /// The unique identifier of the entity.
6190    pub id: Option<String>,
6191    /// The time at which the entity was created.
6192    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
6193    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
6194    /// been updated after creation.
6195    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
6196    /// The time at which the entity was archived. Null if the entity has not been archived.
6197    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
6198    /// The label's name.
6199    pub name: Option<String>,
6200    /// The label's description.
6201    pub description: Option<String>,
6202    /// The label's color as a HEX string (e.g., '#EB5757'). Used for visual identification of the label in the UI.
6203    pub color: Option<String>,
6204    /// Whether the label is a group. When true, this label acts as a container for child labels and cannot be directly applied to issues or projects. When false, the label can be directly applied.
6205    pub is_group: Option<bool>,
6206    /// The date when the label was last applied to an issue or project. Null if the label has never been applied.
6207    pub last_applied_at: Option<chrono::DateTime<chrono::Utc>>,
6208    /// `Internal` When the label was retired.
6209    pub retired_at: Option<chrono::DateTime<chrono::Utc>>,
6210    pub organization: Option<Box<Organization>>,
6211    /// The team that the label is scoped to. If null, the label is a workspace-level label available to all teams in the workspace.
6212    pub team: Option<Box<Team>>,
6213    /// The user who created the label.
6214    pub creator: Option<Box<User>>,
6215    /// The user who retired the label.
6216    pub retired_by: Option<Box<User>>,
6217    /// The parent label.
6218    pub parent: Option<Box<IssueLabel>>,
6219    /// The original workspace or parent-team label that this label was inherited from. Null if the label is not inherited.
6220    pub inherited_from: Option<Box<IssueLabel>>,
6221    /// Issues associated with the label.
6222    pub issues: Option<IssueConnection>,
6223    /// Child labels within this label group. Only populated when the label is a group (isGroup is true).
6224    pub children: Option<IssueLabelConnection>,
6225}
6226impl GraphQLFields for IssueLabel {
6227    type FullType = Self;
6228    fn selection() -> String {
6229        "id createdAt updatedAt archivedAt name description color isGroup lastAppliedAt retiredAt"
6230            .into()
6231    }
6232}
6233#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6234#[serde(rename_all = "camelCase", default)]
6235pub struct IssueLabelConnection {
6236    pub edges: Option<Vec<IssueLabelEdge>>,
6237    pub nodes: Option<Vec<IssueLabel>>,
6238    pub page_info: Option<PageInfo>,
6239}
6240impl GraphQLFields for IssueLabelConnection {
6241    type FullType = Self;
6242    fn selection() -> String {
6243        "".into()
6244    }
6245}
6246#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6247#[serde(rename_all = "camelCase", default)]
6248pub struct IssueLabelEdge {
6249    pub node: Option<IssueLabel>,
6250    /// Used in `before` and `after` args
6251    pub cursor: Option<String>,
6252}
6253impl GraphQLFields for IssueLabelEdge {
6254    type FullType = Self;
6255    fn selection() -> String {
6256        "cursor".into()
6257    }
6258}
6259/// The result of a label mutation, containing the created or updated label and a success indicator.
6260#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6261#[serde(rename_all = "camelCase", default)]
6262pub struct IssueLabelPayload {
6263    /// The identifier of the last sync operation.
6264    pub last_sync_id: Option<f64>,
6265    /// The label that was created or updated.
6266    pub issue_label: Option<IssueLabel>,
6267    /// Whether the operation was successful.
6268    pub success: Option<bool>,
6269}
6270impl GraphQLFields for IssueLabelPayload {
6271    type FullType = Self;
6272    fn selection() -> String {
6273        "lastSyncId success".into()
6274    }
6275}
6276/// A notification related to an issue, such as assignment, comment, mention, status change, or priority change.
6277#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6278#[serde(rename_all = "camelCase", default)]
6279pub struct IssueNotification {
6280    /// Related comment ID. Null if the notification is not related to a comment.
6281    pub comment_id: Option<String>,
6282    /// Related parent comment ID. Null if the notification is not related to a comment.
6283    pub parent_comment_id: Option<String>,
6284    /// Name of the reaction emoji related to the notification.
6285    pub reaction_emoji: Option<String>,
6286    /// The unique identifier of the entity.
6287    pub id: Option<String>,
6288    /// The time at which the entity was created.
6289    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
6290    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
6291    /// been updated after creation.
6292    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
6293    /// The time at which the entity was archived. Null if the entity has not been archived.
6294    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
6295    /// Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated.
6296    pub r#type: Option<String>,
6297    /// The user that caused the notification. Null if the notification was triggered by a non-user actor such as an integration, external user, or system event.
6298    pub actor: Option<User>,
6299    /// The external user that caused the notification. Populated when the notification was triggered by an external user (e.g., a commenter from a connected integration like Slack or GitHub) rather than a Linear workspace member.
6300    pub external_user_actor: Option<ExternalUser>,
6301    /// The recipient user of this notification.
6302    pub user: Option<User>,
6303    /// The time at which the user marked the notification as read. Null if the notification is unread.
6304    pub read_at: Option<chrono::DateTime<chrono::Utc>>,
6305    /// The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent.
6306    pub emailed_at: Option<chrono::DateTime<chrono::Utc>>,
6307    /// The time until which a notification is snoozed. After this time, the notification reappears in the user's inbox. Null if the notification is not currently snoozed.
6308    pub snoozed_until_at: Option<chrono::DateTime<chrono::Utc>>,
6309    /// The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed.
6310    pub unsnoozed_at: Option<chrono::DateTime<chrono::Utc>>,
6311    /// The category of the notification.
6312    pub category: Option<NotificationCategory>,
6313    /// `Internal` URL to the target of the notification.
6314    pub url: Option<String>,
6315    /// `Internal` Inbox URL for the notification.
6316    pub inbox_url: Option<String>,
6317    /// `Internal` Notification title.
6318    pub title: Option<String>,
6319    /// `Internal` Notification subtitle.
6320    pub subtitle: Option<String>,
6321    /// `Internal` If notification actor was Linear.
6322    pub is_linear_actor: Option<bool>,
6323    /// `Internal` Notification avatar URL.
6324    pub actor_avatar_url: Option<String>,
6325    /// `Internal` Notification actor initials if avatar is not available.
6326    pub actor_initials: Option<String>,
6327    /// `Internal` Notification actor initials if avatar is not available.
6328    pub actor_avatar_color: Option<String>,
6329    /// `Internal` Issue's status type for issue notifications.
6330    pub issue_status_type: Option<String>,
6331    /// `Internal` Project update health for new updates.
6332    pub project_update_health: Option<String>,
6333    /// `Internal` Initiative update health for new updates.
6334    pub initiative_update_health: Option<String>,
6335    /// `Internal` Notifications with the same grouping key will be grouped together in the UI.
6336    pub grouping_key: Option<String>,
6337    /// `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`.
6338    pub grouping_priority: Option<f64>,
6339    /// The bot that caused the notification.
6340    pub bot_actor: Option<ActorBot>,
6341    /// Related issue ID.
6342    pub issue_id: Option<String>,
6343    /// The issue related to the notification.
6344    pub issue: Option<Issue>,
6345    /// The comment related to the notification.
6346    pub comment: Option<Comment>,
6347    /// The parent comment related to the notification, if a notification is a reply comment notification.
6348    pub parent_comment: Option<Comment>,
6349    /// The team related to the issue notification.
6350    pub team: Option<Team>,
6351}
6352impl GraphQLFields for IssueNotification {
6353    type FullType = Self;
6354    fn selection() -> String {
6355        "commentId parentCommentId reactionEmoji id createdAt updatedAt archivedAt type readAt emailedAt snoozedUntilAt unsnoozedAt category url inboxUrl title subtitle isLinearActor actorAvatarUrl actorInitials actorAvatarColor issueStatusType projectUpdateHealth initiativeUpdateHealth groupingKey groupingPriority issueId"
6356            .into()
6357    }
6358}
6359/// The result of an issue mutation, containing the created or updated issue and a success indicator.
6360#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6361#[serde(rename_all = "camelCase", default)]
6362pub struct IssuePayload {
6363    /// The identifier of the last sync operation.
6364    pub last_sync_id: Option<f64>,
6365    /// The issue that was created or updated.
6366    pub issue: Option<Issue>,
6367    /// Whether the operation was successful.
6368    pub success: Option<bool>,
6369}
6370impl GraphQLFields for IssuePayload {
6371    type FullType = Self;
6372    fn selection() -> String {
6373        "lastSyncId success".into()
6374    }
6375}
6376/// A mapping of an issue priority value to its human-readable label.
6377#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6378#[serde(rename_all = "camelCase", default)]
6379pub struct IssuePriorityValue {
6380    /// Priority's number value.
6381    pub priority: Option<i64>,
6382    /// Priority's label.
6383    pub label: Option<String>,
6384}
6385impl GraphQLFields for IssuePriorityValue {
6386    type FullType = Self;
6387    fn selection() -> String {
6388        "priority label".into()
6389    }
6390}
6391/// A relation between two issues. Issue relations represent directional relationships such as blocking, being blocked by, relating to, or duplicating another issue. Each relation connects a source issue to a related issue with a specific type describing the nature of the relationship.
6392#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6393#[serde(rename_all = "camelCase", default)]
6394pub struct IssueRelation {
6395    /// The unique identifier of the entity.
6396    pub id: Option<String>,
6397    /// The time at which the entity was created.
6398    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
6399    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
6400    /// been updated after creation.
6401    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
6402    /// The time at which the entity was archived. Null if the entity has not been archived.
6403    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
6404    /// The type of relationship between the source issue and the related issue. Possible values include blocks, duplicate, and related.
6405    pub r#type: Option<String>,
6406    /// The source issue whose relationship is being described. This is the issue from which the relation originates.
6407    pub issue: Option<Issue>,
6408    /// The target issue that the source issue is related to. The relation type describes how the source issue relates to this issue.
6409    pub related_issue: Option<Issue>,
6410}
6411impl GraphQLFields for IssueRelation {
6412    type FullType = Self;
6413    fn selection() -> String {
6414        "id createdAt updatedAt archivedAt type".into()
6415    }
6416}
6417#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6418#[serde(rename_all = "camelCase", default)]
6419pub struct IssueRelationConnection {
6420    pub edges: Option<Vec<IssueRelationEdge>>,
6421    pub nodes: Option<Vec<IssueRelation>>,
6422    pub page_info: Option<PageInfo>,
6423}
6424impl GraphQLFields for IssueRelationConnection {
6425    type FullType = Self;
6426    fn selection() -> String {
6427        "".into()
6428    }
6429}
6430#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6431#[serde(rename_all = "camelCase", default)]
6432pub struct IssueRelationEdge {
6433    pub node: Option<IssueRelation>,
6434    /// Used in `before` and `after` args
6435    pub cursor: Option<String>,
6436}
6437impl GraphQLFields for IssueRelationEdge {
6438    type FullType = Self;
6439    fn selection() -> String {
6440        "cursor".into()
6441    }
6442}
6443/// Payload describing a change to an issue relation, including which issue was involved and the type of change that occurred.
6444#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6445#[serde(rename_all = "camelCase", default)]
6446pub struct IssueRelationHistoryPayload {
6447    /// The human-readable identifier of the related issue (e.g., ENG-123).
6448    pub identifier: Option<String>,
6449    /// The type of relation change that occurred (e.g., relation added or removed).
6450    pub r#type: Option<String>,
6451}
6452impl GraphQLFields for IssueRelationHistoryPayload {
6453    type FullType = Self;
6454    fn selection() -> String {
6455        "identifier type".into()
6456    }
6457}
6458/// The result of an issue relation mutation, containing the created or updated issue relation and a success indicator.
6459#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6460#[serde(rename_all = "camelCase", default)]
6461pub struct IssueRelationPayload {
6462    /// The identifier of the last sync operation.
6463    pub last_sync_id: Option<f64>,
6464    /// The issue relation that was created or updated.
6465    pub issue_relation: Option<IssueRelation>,
6466    /// Whether the operation was successful.
6467    pub success: Option<bool>,
6468}
6469impl GraphQLFields for IssueRelationPayload {
6470    type FullType = Self;
6471    fn selection() -> String {
6472        "lastSyncId success".into()
6473    }
6474}
6475#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6476#[serde(rename_all = "camelCase", default)]
6477pub struct IssueSearchPayload {
6478    pub edges: Option<Vec<IssueSearchResultEdge>>,
6479    pub nodes: Option<Vec<IssueSearchResult>>,
6480    pub page_info: Option<PageInfo>,
6481    /// Archived entities matching the search term along with all their dependencies, serialized for the client sync engine.
6482    pub archive_payload: Option<ArchiveResponse>,
6483    /// Total number of matching results before pagination is applied.
6484    pub total_count: Option<f64>,
6485}
6486impl GraphQLFields for IssueSearchPayload {
6487    type FullType = Self;
6488    fn selection() -> String {
6489        "totalCount".into()
6490    }
6491}
6492#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6493#[serde(rename_all = "camelCase", default)]
6494pub struct IssueSearchResult {
6495    /// The unique identifier of the entity.
6496    pub id: Option<String>,
6497    /// The time at which the entity was created.
6498    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
6499    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
6500    /// been updated after creation.
6501    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
6502    /// The time at which the entity was archived. Null if the entity has not been archived.
6503    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
6504    /// The issue's unique number, scoped to the issue's team. Together with the team key, this forms the issue's human-readable identifier (e.g., ENG-123).
6505    pub number: Option<f64>,
6506    /// The issue's title. This is the primary human-readable summary of the work item.
6507    pub title: Option<String>,
6508    /// The priority of the issue. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low.
6509    pub priority: Option<f64>,
6510    /// The estimate of the complexity of the issue. The specific scale used depends on the team's estimation configuration (e.g., points, T-shirt sizes). Null if no estimate has been set.
6511    pub estimate: Option<f64>,
6512    /// The order of the item in its column on the board.
6513    pub board_order: Option<f64>,
6514    /// The order of the item in relation to other items in the organization. Used for manual sorting in list views.
6515    pub sort_order: Option<f64>,
6516    /// The order of the item in relation to other items in the workspace, when ordered by priority.
6517    pub priority_sort_order: Option<f64>,
6518    /// The time at which the issue was moved into started state.
6519    pub started_at: Option<chrono::DateTime<chrono::Utc>>,
6520    /// The time at which the issue was moved into completed state.
6521    pub completed_at: Option<chrono::DateTime<chrono::Utc>>,
6522    /// The time at which the issue entered triage.
6523    pub started_triage_at: Option<chrono::DateTime<chrono::Utc>>,
6524    /// The time at which the issue left triage.
6525    pub triaged_at: Option<chrono::DateTime<chrono::Utc>>,
6526    /// The time at which the issue was moved into canceled state.
6527    pub canceled_at: Option<chrono::DateTime<chrono::Utc>>,
6528    /// The time at which the issue was automatically closed by the auto pruning process.
6529    pub auto_closed_at: Option<chrono::DateTime<chrono::Utc>>,
6530    /// The time at which the issue was automatically archived by the auto pruning process.
6531    pub auto_archived_at: Option<chrono::DateTime<chrono::Utc>>,
6532    /// The date at which the issue is due.
6533    pub due_date: Option<chrono::NaiveDate>,
6534    /// The time at which the issue's SLA began.
6535    pub sla_started_at: Option<chrono::DateTime<chrono::Utc>>,
6536    /// The time at which the issue's SLA will enter medium risk state.
6537    pub sla_medium_risk_at: Option<chrono::DateTime<chrono::Utc>>,
6538    /// The time at which the issue's SLA will enter high risk state.
6539    pub sla_high_risk_at: Option<chrono::DateTime<chrono::Utc>>,
6540    /// The time at which the issue's SLA will breach.
6541    pub sla_breaches_at: Option<chrono::DateTime<chrono::Utc>>,
6542    /// The type of SLA set on the issue. Calendar days or business days.
6543    pub sla_type: Option<String>,
6544    /// The time at which the issue was added to a project.
6545    pub added_to_project_at: Option<chrono::DateTime<chrono::Utc>>,
6546    /// The time at which the issue was added to a cycle.
6547    pub added_to_cycle_at: Option<chrono::DateTime<chrono::Utc>>,
6548    /// The time at which the issue was added to a team.
6549    pub added_to_team_at: Option<chrono::DateTime<chrono::Utc>>,
6550    /// A flag that indicates whether the issue is in the trash bin.
6551    pub trashed: Option<bool>,
6552    /// The time until an issue will be snoozed in Triage view.
6553    pub snoozed_until_at: Option<chrono::DateTime<chrono::Utc>>,
6554    /// `Internal` The time at which the most recent suggestions for this issue were generated.
6555    pub suggestions_generated_at: Option<chrono::DateTime<chrono::Utc>>,
6556    /// `Internal` The activity summary information for this issue.
6557    pub activity_summary: Option<serde_json::Value>,
6558    /// `Internal` AI-generated activity summary for this issue.
6559    pub summary: Option<Summary>,
6560    /// Identifiers of the labels associated with this issue. Can be used to query the labels directly.
6561    pub label_ids: Option<Vec<String>>,
6562    /// The team that the issue belongs to. Every issue must belong to exactly one team, which determines the available workflow states, labels, and other team-specific configuration.
6563    pub team: Option<Team>,
6564    /// The cycle that the issue is associated with. Null if the issue is not part of any cycle.
6565    pub cycle: Option<Cycle>,
6566    /// The project that the issue is associated with. Null if the issue is not part of any project.
6567    pub project: Option<Project>,
6568    /// The project milestone that the issue is associated with. Null if the issue is not assigned to a specific milestone within its project.
6569    pub project_milestone: Option<ProjectMilestone>,
6570    /// The last template that was applied to this issue.
6571    pub last_applied_template: Option<Template>,
6572    /// The recurring issue template that created this issue.
6573    pub recurring_issue_template: Option<Template>,
6574    /// Previous identifiers of the issue if it has been moved between teams.
6575    pub previous_identifiers: Option<Vec<String>>,
6576    /// The user who created the issue. Null if the creator's account has been deleted or if the issue was created by an integration or system process.
6577    pub creator: Option<User>,
6578    /// The external user who created the issue. Set when the issue was created via an integration (e.g., Slack, Intercom) on behalf of a non-Linear user. Null if the issue was created by a Linear user.
6579    pub external_user_creator: Option<ExternalUser>,
6580    /// The user to whom the issue is assigned. Null if the issue is unassigned.
6581    pub assignee: Option<User>,
6582    /// The agent user that is delegated to work on this issue. Set when an AI agent has been assigned to perform work on this issue. Null if no agent is working on the issue.
6583    pub delegate: Option<User>,
6584    /// The user who snoozed the issue.
6585    pub snoozed_by: Option<User>,
6586    /// The workflow state (issue status) that the issue is currently in. Workflow states represent the issue's progress through the team's workflow, such as Triage, Todo, In Progress, Done, or Canceled.
6587    pub state: Option<WorkflowState>,
6588    /// The order of the item in the sub-issue list. Only set if the issue has a parent.
6589    pub sub_issue_sort_order: Option<f64>,
6590    /// Emoji reaction summary for the issue, grouped by emoji type. Contains the count and reacting user information for each emoji.
6591    pub reaction_data: Option<serde_json::Value>,
6592    /// Label for the priority.
6593    pub priority_label: Option<String>,
6594    /// The comment that this issue was created from, when an issue is created from an existing comment. Null if the issue was not created from a comment.
6595    pub source_comment: Option<Comment>,
6596    /// Integration type that created this issue, if applicable.
6597    pub integration_source_type: Option<IntegrationService>,
6598    /// Whether this issue inherits shared access from its parent issue.
6599    pub inherits_shared_access: Option<bool>,
6600    /// Documents associated with the issue.
6601    pub documents: Option<DocumentConnection>,
6602    /// The bot that created the issue, if applicable.
6603    pub bot_actor: Option<ActorBot>,
6604    /// The users favorite associated with this issue.
6605    pub favorite: Option<Favorite>,
6606    /// Issue's human readable identifier (e.g. ENG-123).
6607    pub identifier: Option<String>,
6608    /// Issue URL.
6609    pub url: Option<String>,
6610    /// Suggested branch name for the issue.
6611    pub branch_name: Option<String>,
6612    /// Shared access metadata for this issue.
6613    pub shared_access: Option<IssueSharedAccess>,
6614    /// Returns the number of Attachment resources which are created by customer support ticketing systems (e.g. Zendesk).
6615    pub customer_ticket_count: Option<i64>,
6616    /// Users who are subscribed to the issue.
6617    pub subscribers: Option<UserConnection>,
6618    /// The parent of the issue.
6619    pub parent: Option<Issue>,
6620    /// Children of the issue.
6621    pub children: Option<IssueConnection>,
6622    /// Comments associated with the issue.
6623    pub comments: Option<CommentConnection>,
6624    /// `Internal` AI prompt progresses associated with this issue.
6625    pub ai_prompt_progresses: Option<AiPromptProgressConnection>,
6626    /// History entries associated with the issue.
6627    pub history: Option<IssueHistoryConnection>,
6628    /// Labels associated with this issue.
6629    pub labels: Option<IssueLabelConnection>,
6630    /// Relations associated with this issue.
6631    pub relations: Option<IssueRelationConnection>,
6632    /// Inverse relations associated with this issue.
6633    pub inverse_relations: Option<IssueRelationConnection>,
6634    /// Attachments associated with the issue.
6635    pub attachments: Option<AttachmentConnection>,
6636    /// Attachments previously associated with the issue before being moved to another issue.
6637    pub former_attachments: Option<AttachmentConnection>,
6638    /// The issue's description in markdown format.
6639    pub description: Option<String>,
6640    /// `Internal` The issue's description content as YJS state.
6641    pub description_state: Option<String>,
6642    /// `ALPHA` The document content representing this issue description.
6643    pub document_content: Option<DocumentContent>,
6644    /// Reactions associated with the issue.
6645    pub reactions: Option<Vec<Reaction>>,
6646    /// Customer needs associated with the issue.
6647    pub needs: Option<CustomerNeedConnection>,
6648    /// Customer needs previously associated with the issue before being moved to another issue.
6649    pub former_needs: Option<CustomerNeedConnection>,
6650    /// `ALPHA` Releases associated with the issue.
6651    pub releases: Option<ReleaseConnection>,
6652    /// The external services the issue is synced with.
6653    pub synced_with: Option<Vec<ExternalEntityInfo>>,
6654    /// `Internal` Product Intelligence suggestions for the issue.
6655    pub suggestions: Option<IssueSuggestionConnection>,
6656    /// `Internal` Incoming product intelligence relation suggestions for the issue.
6657    pub incoming_suggestions: Option<IssueSuggestionConnection>,
6658    /// The internal user who requested creation of the Asks issue on behalf of the creator.
6659    pub asks_requester: Option<User>,
6660    /// The external user who requested creation of the Asks issue on behalf of the creator.
6661    pub asks_external_user_requester: Option<ExternalUser>,
6662    /// The issue's workflow states over time.
6663    pub state_history: Option<IssueStateSpanConnection>,
6664    /// Metadata related to search result.
6665    pub metadata: Option<serde_json::Value>,
6666}
6667impl GraphQLFields for IssueSearchResult {
6668    type FullType = Self;
6669    fn selection() -> String {
6670        "id createdAt updatedAt archivedAt number title priority estimate boardOrder sortOrder prioritySortOrder startedAt completedAt startedTriageAt triagedAt canceledAt autoClosedAt autoArchivedAt dueDate slaStartedAt slaMediumRiskAt slaHighRiskAt slaBreachesAt slaType addedToProjectAt addedToCycleAt addedToTeamAt trashed snoozedUntilAt suggestionsGeneratedAt activitySummary labelIds previousIdentifiers subIssueSortOrder reactionData priorityLabel integrationSourceType inheritsSharedAccess identifier url branchName customerTicketCount description metadata"
6671            .into()
6672    }
6673}
6674#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6675#[serde(rename_all = "camelCase", default)]
6676pub struct IssueSearchResultEdge {
6677    pub node: Option<IssueSearchResult>,
6678    /// Used in `before` and `after` args
6679    pub cursor: Option<String>,
6680}
6681impl GraphQLFields for IssueSearchResultEdge {
6682    type FullType = Self;
6683    fn selection() -> String {
6684        "cursor".into()
6685    }
6686}
6687/// Metadata about an issue's shared access state, including which users the issue is shared with and any field restrictions for shared-only viewers.
6688#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6689#[serde(rename_all = "camelCase", default)]
6690pub struct IssueSharedAccess {
6691    /// Whether this issue has been shared with users outside the team.
6692    pub is_shared: Option<bool>,
6693    /// Whether the viewer can access this issue only through issue sharing.
6694    pub viewer_has_only_shared_access: Option<bool>,
6695    /// The number of users this issue is shared with.
6696    pub shared_with_count: Option<i64>,
6697    /// Users this issue is shared with.
6698    pub shared_with_users: Option<Vec<User>>,
6699    /// Issue update fields the viewer cannot modify due to shared-only access.
6700    pub disallowed_issue_fields: Option<Vec<IssueSharedAccessDisallowedField>>,
6701}
6702impl GraphQLFields for IssueSharedAccess {
6703    type FullType = Self;
6704    fn selection() -> String {
6705        "isShared viewerHasOnlySharedAccess sharedWithCount disallowedIssueFields".into()
6706    }
6707}
6708/// A continuous period of time during which an issue remained in a specific workflow state.
6709#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6710#[serde(rename_all = "camelCase", default)]
6711pub struct IssueStateSpan {
6712    /// The unique identifier of the state span.
6713    pub id: Option<String>,
6714    /// The workflow state identifier for this span.
6715    pub state_id: Option<String>,
6716    /// The timestamp when the issue entered this state.
6717    pub started_at: Option<chrono::DateTime<chrono::Utc>>,
6718    /// The timestamp when the issue left this state. Null if the issue is currently in this state.
6719    pub ended_at: Option<chrono::DateTime<chrono::Utc>>,
6720    /// The workflow state for this span.
6721    pub state: Option<WorkflowState>,
6722}
6723impl GraphQLFields for IssueStateSpan {
6724    type FullType = Self;
6725    fn selection() -> String {
6726        "id stateId startedAt endedAt".into()
6727    }
6728}
6729#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6730#[serde(rename_all = "camelCase", default)]
6731pub struct IssueStateSpanConnection {
6732    pub edges: Option<Vec<IssueStateSpanEdge>>,
6733    pub nodes: Option<Vec<IssueStateSpan>>,
6734    pub page_info: Option<PageInfo>,
6735}
6736impl GraphQLFields for IssueStateSpanConnection {
6737    type FullType = Self;
6738    fn selection() -> String {
6739        "".into()
6740    }
6741}
6742#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6743#[serde(rename_all = "camelCase", default)]
6744pub struct IssueStateSpanEdge {
6745    pub node: Option<IssueStateSpan>,
6746    /// Used in `before` and `after` args
6747    pub cursor: Option<String>,
6748}
6749impl GraphQLFields for IssueStateSpanEdge {
6750    type FullType = Self;
6751    fn selection() -> String {
6752        "cursor".into()
6753    }
6754}
6755/// `Internal` An AI-generated suggestion for an issue. Suggestions can recommend related or similar issues, assignees, labels, teams, or projects. Each suggestion has a type, state (active, accepted, dismissed), and optionally associated metadata with scoring information.
6756#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6757#[serde(rename_all = "camelCase", default)]
6758pub struct IssueSuggestion {
6759    /// The unique identifier of the entity.
6760    pub id: Option<String>,
6761    /// The time at which the entity was created.
6762    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
6763    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
6764    /// been updated after creation.
6765    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
6766    /// The time at which the entity was archived. Null if the entity has not been archived.
6767    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
6768    /// `Internal` The issue that this suggestion applies to.
6769    pub issue: Option<Issue>,
6770    /// `Internal` Identifier of the issue that this suggestion applies to. Can be used to query the issue directly.
6771    pub issue_id: Option<String>,
6772    /// `Internal` The type of suggestion, indicating what kind of entity is being suggested (e.g., similarIssue, relatedIssue, assignee, label, team, project).
6773    pub r#type: Option<IssueSuggestionType>,
6774    /// `Internal` The current state of the suggestion: active, accepted, or dismissed.
6775    pub state: Option<IssueSuggestionState>,
6776    /// `Internal` The date when the suggestion's state was last changed (e.g., from active to accepted or dismissed).
6777    pub state_changed_at: Option<chrono::DateTime<chrono::Utc>>,
6778    /// `Internal` The reason the suggestion was dismissed by the user. Null if the suggestion has not been dismissed.
6779    pub dismissal_reason: Option<String>,
6780    /// `Internal` Metadata associated with the suggestion, including confidence scores and classification. Null if no metadata is available.
6781    pub metadata: Option<IssueSuggestionMetadata>,
6782    /// `Internal` The suggested issue, when the suggestion type is similarIssue or relatedIssue. Null for other suggestion types.
6783    pub suggested_issue: Option<Issue>,
6784    /// `Internal` Identifier of the suggested issue. Set when the suggestion type is similarIssue or relatedIssue. Can be used to query the issue directly.
6785    pub suggested_issue_id: Option<String>,
6786    /// `Internal` The suggested team, when the suggestion type is team. Null for other suggestion types.
6787    pub suggested_team: Option<Team>,
6788    /// `Internal` The suggested project, when the suggestion type is project. Null for other suggestion types.
6789    pub suggested_project: Option<Project>,
6790    /// `Internal` The suggested user, when the suggestion type is assignee. Null for other suggestion types.
6791    pub suggested_user: Option<User>,
6792    /// `Internal` Identifier of the suggested user. Set when the suggestion type is assignee. Can be used to query the user directly.
6793    pub suggested_user_id: Option<String>,
6794    /// `Internal` The suggested label, when the suggestion type is label. Null for other suggestion types.
6795    pub suggested_label: Option<IssueLabel>,
6796    /// `Internal` Identifier of the suggested label. Set when the suggestion type is label. Can be used to query the label directly.
6797    pub suggested_label_id: Option<String>,
6798}
6799impl GraphQLFields for IssueSuggestion {
6800    type FullType = Self;
6801    fn selection() -> String {
6802        "id createdAt updatedAt archivedAt issueId type state stateChangedAt dismissalReason suggestedIssueId suggestedUserId suggestedLabelId"
6803            .into()
6804    }
6805}
6806#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6807#[serde(rename_all = "camelCase", default)]
6808pub struct IssueSuggestionConnection {
6809    pub edges: Option<Vec<IssueSuggestionEdge>>,
6810    pub nodes: Option<Vec<IssueSuggestion>>,
6811    pub page_info: Option<PageInfo>,
6812}
6813impl GraphQLFields for IssueSuggestionConnection {
6814    type FullType = Self;
6815    fn selection() -> String {
6816        "".into()
6817    }
6818}
6819#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6820#[serde(rename_all = "camelCase", default)]
6821pub struct IssueSuggestionEdge {
6822    pub node: Option<IssueSuggestion>,
6823    /// Used in `before` and `after` args
6824    pub cursor: Option<String>,
6825}
6826impl GraphQLFields for IssueSuggestionEdge {
6827    type FullType = Self;
6828    fn selection() -> String {
6829        "cursor".into()
6830    }
6831}
6832/// `Internal` Metadata associated with an issue suggestion, including scoring and classification information.
6833#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6834#[serde(rename_all = "camelCase", default)]
6835pub struct IssueSuggestionMetadata {
6836    /// `Internal` The confidence score of the suggestion. Higher values indicate greater confidence. Null if no score was computed.
6837    pub score: Option<f64>,
6838    /// `Internal` The classification category of the suggestion. Null if no classification was assigned.
6839    pub classification: Option<String>,
6840    /// `Internal` The reasons explaining why this suggestion was made. Null if no reasons are available.
6841    pub reasons: Option<Vec<String>>,
6842    /// `Internal` Identifier of the evaluation log entry associated with this suggestion. Null if no log entry exists.
6843    pub eval_log_id: Option<String>,
6844    /// `Internal` The rank of this suggestion relative to other suggestions of the same type. Lower values indicate higher priority. Null if not ranked.
6845    pub rank: Option<f64>,
6846    /// `Internal` The AI prompt variant that generated this suggestion. Null if not applicable.
6847    pub variant: Option<String>,
6848    /// `Internal` Identifier of the automation rule that was applied from this suggestion. Null if no rule was applied.
6849    pub applied_automation_rule_id: Option<String>,
6850}
6851impl GraphQLFields for IssueSuggestionMetadata {
6852    type FullType = Self;
6853    fn selection() -> String {
6854        "score classification reasons evalLogId rank variant appliedAutomationRuleId".into()
6855    }
6856}
6857/// Return type for AI-generated issue title suggestions based on customer request content.
6858#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6859#[serde(rename_all = "camelCase", default)]
6860pub struct IssueTitleSuggestionFromCustomerRequestPayload {
6861    /// The identifier of the last sync operation.
6862    pub last_sync_id: Option<f64>,
6863    /// The AI-suggested issue title based on the customer request content.
6864    pub title: Option<String>,
6865    /// `Internal` The evaluation log ID of the AI response, for tracing and debugging.
6866    pub log_id: Option<String>,
6867}
6868impl GraphQLFields for IssueTitleSuggestionFromCustomerRequestPayload {
6869    type FullType = Self;
6870    fn selection() -> String {
6871        "lastSyncId title logId".into()
6872    }
6873}
6874/// `Internal` A join entity linking an issue to a release for release tracking. Each record represents an association between a single issue and a single release, along with metadata about the source of the link (e.g., which pull requests connected the issue to the release). Creating or deleting these associations automatically records the change in issue history.
6875#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6876#[serde(rename_all = "camelCase", default)]
6877pub struct IssueToRelease {
6878    /// The unique identifier of the entity.
6879    pub id: Option<String>,
6880    /// The time at which the entity was created.
6881    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
6882    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
6883    /// been updated after creation.
6884    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
6885    /// The time at which the entity was archived. Null if the entity has not been archived.
6886    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
6887    /// The issue that is linked to the release.
6888    pub issue: Option<Issue>,
6889    /// The release that the issue is linked to.
6890    pub release: Option<Release>,
6891}
6892impl GraphQLFields for IssueToRelease {
6893    type FullType = Self;
6894    fn selection() -> String {
6895        "id createdAt updatedAt archivedAt".into()
6896    }
6897}
6898#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6899#[serde(rename_all = "camelCase", default)]
6900pub struct IssueToReleaseConnection {
6901    pub edges: Option<Vec<IssueToReleaseEdge>>,
6902    pub nodes: Option<Vec<IssueToRelease>>,
6903    pub page_info: Option<PageInfo>,
6904}
6905impl GraphQLFields for IssueToReleaseConnection {
6906    type FullType = Self;
6907    fn selection() -> String {
6908        "".into()
6909    }
6910}
6911#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6912#[serde(rename_all = "camelCase", default)]
6913pub struct IssueToReleaseEdge {
6914    pub node: Option<IssueToRelease>,
6915    /// Used in `before` and `after` args
6916    pub cursor: Option<String>,
6917}
6918impl GraphQLFields for IssueToReleaseEdge {
6919    type FullType = Self;
6920    fn selection() -> String {
6921        "cursor".into()
6922    }
6923}
6924/// `ALPHA` The result of an issue-to-release mutation, containing the created or updated association and a success indicator.
6925#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6926#[serde(rename_all = "camelCase", default)]
6927pub struct IssueToReleasePayload {
6928    /// The identifier of the last sync operation.
6929    pub last_sync_id: Option<f64>,
6930    /// The issueToRelease that was created or updated.
6931    pub issue_to_release: Option<IssueToRelease>,
6932    /// Whether the operation was successful.
6933    pub success: Option<bool>,
6934}
6935impl GraphQLFields for IssueToReleasePayload {
6936    type FullType = Self;
6937    fn selection() -> String {
6938        "lastSyncId success".into()
6939    }
6940}
6941#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6942#[serde(rename_all = "camelCase", default)]
6943pub struct JiraFetchProjectStatusesPayload {
6944    /// The identifier of the last sync operation.
6945    pub last_sync_id: Option<f64>,
6946    /// The integration that was created or updated.
6947    pub integration: Option<Integration>,
6948    /// Whether the operation was successful.
6949    pub success: Option<bool>,
6950    /// The fetched Jira issue statuses (non-Epic).
6951    pub issue_statuses: Option<Vec<String>>,
6952    /// The fetched Jira project statuses (Epic).
6953    pub project_statuses: Option<Vec<String>>,
6954}
6955impl GraphQLFields for JiraFetchProjectStatusesPayload {
6956    type FullType = Self;
6957    fn selection() -> String {
6958        "lastSyncId success issueStatuses projectStatuses".into()
6959    }
6960}
6961/// A notification subscription scoped to a specific issue label. The subscriber receives notifications for events related to issues with this label.
6962#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6963#[serde(rename_all = "camelCase", default)]
6964pub struct LabelNotificationSubscription {
6965    /// The unique identifier of the entity.
6966    pub id: Option<String>,
6967    /// The time at which the entity was created.
6968    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
6969    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
6970    /// been updated after creation.
6971    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
6972    /// The time at which the entity was archived. Null if the entity has not been archived.
6973    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
6974    /// The user who will receive notifications from this subscription.
6975    pub subscriber: Option<User>,
6976    /// The customer that this notification subscription is scoped to. Null if the subscription targets a different entity type.
6977    pub customer: Option<Customer>,
6978    /// The custom view that this notification subscription is scoped to. Null if the subscription targets a different entity type.
6979    pub custom_view: Option<CustomView>,
6980    /// The cycle that this notification subscription is scoped to. Null if the subscription targets a different entity type.
6981    pub cycle: Option<Cycle>,
6982    /// The label subscribed to.
6983    pub label: Option<IssueLabel>,
6984    /// The project that this notification subscription is scoped to. Null if the subscription targets a different entity type.
6985    pub project: Option<Project>,
6986    /// The initiative that this notification subscription is scoped to. Null if the subscription targets a different entity type.
6987    pub initiative: Option<Initiative>,
6988    /// The team that this notification subscription is scoped to. Null if the subscription targets a different entity type.
6989    pub team: Option<Team>,
6990    /// The user that this notification subscription is scoped to, for user-specific view subscriptions. Null if the subscription targets a different entity type.
6991    pub user: Option<User>,
6992    /// The type of contextual view (e.g., active issues, backlog) that further scopes a team notification subscription. Null if the subscription is not associated with a specific view type.
6993    pub context_view_type: Option<ContextViewType>,
6994    /// The type of user-specific view that further scopes a user notification subscription. Null if the subscription is not associated with a user view type.
6995    pub user_context_view_type: Option<UserContextViewType>,
6996    /// Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists.
6997    pub active: Option<bool>,
6998    /// The notification event types that this subscription will deliver to the subscriber.
6999    pub notification_subscription_types: Option<Vec<String>>,
7000}
7001impl GraphQLFields for LabelNotificationSubscription {
7002    type FullType = Self;
7003    fn selection() -> String {
7004        "id createdAt updatedAt archivedAt contextViewType userContextViewType active notificationSubscriptionTypes"
7005            .into()
7006    }
7007}
7008#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7009#[serde(rename_all = "camelCase", default)]
7010pub struct LogoutResponse {
7011    /// Whether the operation was successful.
7012    pub success: Option<bool>,
7013}
7014impl GraphQLFields for LogoutResponse {
7015    type FullType = Self;
7016    fn selection() -> String {
7017        "success".into()
7018    }
7019}
7020#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7021#[serde(rename_all = "camelCase", default)]
7022pub struct MicrosoftTeamsChannel {
7023    /// The Microsoft Teams channel id (e.g. `19:abc@thread.tacv2`).
7024    pub id: Option<String>,
7025    /// The display name of the channel.
7026    pub display_name: Option<String>,
7027    /// The membership type of the channel: standard, private, or shared.
7028    pub membership_type: Option<String>,
7029}
7030impl GraphQLFields for MicrosoftTeamsChannel {
7031    type FullType = Self;
7032    fn selection() -> String {
7033        "id displayName membershipType".into()
7034    }
7035}
7036#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7037#[serde(rename_all = "camelCase", default)]
7038pub struct MicrosoftTeamsChannelsPayload {
7039    /// The teams the user belongs to with their channels.
7040    pub teams: Option<Vec<MicrosoftTeamsTeam>>,
7041    /// Whether the operation was successful.
7042    pub success: Option<bool>,
7043}
7044impl GraphQLFields for MicrosoftTeamsChannelsPayload {
7045    type FullType = Self;
7046    fn selection() -> String {
7047        "success".into()
7048    }
7049}
7050#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7051#[serde(rename_all = "camelCase", default)]
7052pub struct MicrosoftTeamsTeam {
7053    /// The AAD group id of the team.
7054    pub id: Option<String>,
7055    /// The display name of the team.
7056    pub display_name: Option<String>,
7057    /// The channels in the team the user can access.
7058    pub channels: Option<Vec<MicrosoftTeamsChannel>>,
7059}
7060impl GraphQLFields for MicrosoftTeamsTeam {
7061    type FullType = Self;
7062    fn selection() -> String {
7063        "id displayName".into()
7064    }
7065}
7066/// A generic payload return from entity archive mutations.
7067#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7068#[serde(rename_all = "camelCase", default)]
7069pub struct NotificationArchivePayload {
7070    /// The identifier of the last sync operation.
7071    pub last_sync_id: Option<f64>,
7072    /// Whether the operation was successful.
7073    pub success: Option<bool>,
7074}
7075impl GraphQLFields for NotificationArchivePayload {
7076    type FullType = Self;
7077    fn selection() -> String {
7078        "lastSyncId success".into()
7079    }
7080}
7081/// Return type for batch notification mutations that operate on multiple notifications at once.
7082#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7083#[serde(rename_all = "camelCase", default)]
7084pub struct NotificationBatchActionPayload {
7085    /// The identifier of the last sync operation.
7086    pub last_sync_id: Option<f64>,
7087    /// Whether the operation was successful.
7088    pub success: Option<bool>,
7089}
7090impl GraphQLFields for NotificationBatchActionPayload {
7091    type FullType = Self;
7092    fn selection() -> String {
7093        "lastSyncId success".into()
7094    }
7095}
7096/// A user's fully resolved notification category preferences. Each category maps to channel preferences indicating whether mobile, desktop, email, and Slack delivery are enabled.
7097#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7098#[serde(rename_all = "camelCase", default)]
7099pub struct NotificationCategoryPreferences {
7100    /// The preferences for notifications about assignments.
7101    pub assignments: Option<NotificationChannelPreferences>,
7102    /// The preferences for notifications about status changes.
7103    pub status_changes: Option<NotificationChannelPreferences>,
7104    /// The preferences for notifications about comments and replies.
7105    pub comments_and_replies: Option<NotificationChannelPreferences>,
7106    /// The preferences for notifications about mentions.
7107    pub mentions: Option<NotificationChannelPreferences>,
7108    /// The preferences for notifications about reactions.
7109    pub reactions: Option<NotificationChannelPreferences>,
7110    /// The preferences for notifications about subscriptions.
7111    pub subscriptions: Option<NotificationChannelPreferences>,
7112    /// The preferences for notifications about document changes.
7113    pub document_changes: Option<NotificationChannelPreferences>,
7114    /// The preferences for notifications about posts and updates.
7115    pub posts_and_updates: Option<NotificationChannelPreferences>,
7116    /// The preferences for notifications about reminders.
7117    pub reminders: Option<NotificationChannelPreferences>,
7118    /// The preferences for notifications about reviews.
7119    pub reviews: Option<NotificationChannelPreferences>,
7120    /// The preferences for notifications about apps and integrations.
7121    pub apps_and_integrations: Option<NotificationChannelPreferences>,
7122    /// The preferences for system notifications.
7123    pub system: Option<NotificationChannelPreferences>,
7124    /// The preferences for triage notifications.
7125    pub triage: Option<NotificationChannelPreferences>,
7126    /// The preferences for customer notifications.
7127    pub customers: Option<NotificationChannelPreferences>,
7128    /// The preferences for feed summary notifications.
7129    pub feed: Option<NotificationChannelPreferences>,
7130}
7131impl GraphQLFields for NotificationCategoryPreferences {
7132    type FullType = Self;
7133    fn selection() -> String {
7134        "".into()
7135    }
7136}
7137/// A user's resolved notification channel preferences, indicating whether each delivery channel (mobile, desktop, email, Slack) is enabled or disabled.
7138#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7139#[serde(rename_all = "camelCase", default)]
7140pub struct NotificationChannelPreferences {
7141    /// Whether notifications are currently enabled for mobile.
7142    pub mobile: Option<bool>,
7143    /// Whether notifications are currently enabled for desktop.
7144    pub desktop: Option<bool>,
7145    /// Whether notifications are currently enabled for email.
7146    pub email: Option<bool>,
7147    /// Whether notifications are currently enabled for Slack.
7148    pub slack: Option<bool>,
7149}
7150impl GraphQLFields for NotificationChannelPreferences {
7151    type FullType = Self;
7152    fn selection() -> String {
7153        "mobile desktop email slack".into()
7154    }
7155}
7156#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7157#[serde(rename_all = "camelCase", default)]
7158pub struct NotificationConnection {
7159    pub edges: Option<Vec<NotificationEdge>>,
7160    pub page_info: Option<PageInfo>,
7161}
7162impl GraphQLFields for NotificationConnection {
7163    type FullType = Self;
7164    fn selection() -> String {
7165        "".into()
7166    }
7167}
7168/// A user's notification delivery preferences across channels. Currently only supports mobile channel delivery scheduling.
7169#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7170#[serde(rename_all = "camelCase", default)]
7171pub struct NotificationDeliveryPreferences {
7172    /// The delivery preferences for the mobile channel.
7173    pub mobile: Option<NotificationDeliveryPreferencesChannel>,
7174}
7175impl GraphQLFields for NotificationDeliveryPreferences {
7176    type FullType = Self;
7177    fn selection() -> String {
7178        "".into()
7179    }
7180}
7181/// Delivery preferences for a specific notification channel, including an optional delivery schedule that restricts when notifications are sent.
7182#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7183#[serde(rename_all = "camelCase", default)]
7184pub struct NotificationDeliveryPreferencesChannel {
7185    /// `DEPRECATED` Whether notifications are enabled for this channel. Use notificationChannelPreferences instead.
7186    pub notifications_disabled: Option<bool>,
7187    /// The schedule for notifications on this channel.
7188    pub schedule: Option<NotificationDeliveryPreferencesSchedule>,
7189}
7190impl GraphQLFields for NotificationDeliveryPreferencesChannel {
7191    type FullType = Self;
7192    fn selection() -> String {
7193        "notificationsDisabled".into()
7194    }
7195}
7196/// A user's notification delivery window for a specific day of the week. Defines the time range during which notifications will be delivered.
7197#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7198#[serde(rename_all = "camelCase", default)]
7199pub struct NotificationDeliveryPreferencesDay {
7200    /// The start time of the notification delivery window in HH:MM military time format (e.g., '09:00'). Must be earlier than 'end'.
7201    pub start: Option<String>,
7202    /// The end time of the notification delivery window in HH:MM military time format (e.g., '18:00'). Must be later than 'start'.
7203    pub end: Option<String>,
7204}
7205impl GraphQLFields for NotificationDeliveryPreferencesDay {
7206    type FullType = Self;
7207    fn selection() -> String {
7208        "start end".into()
7209    }
7210}
7211/// A user's weekly notification delivery schedule, defining delivery windows for each day of the week. Notifications outside these windows are held and delivered when the window opens.
7212#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7213#[serde(rename_all = "camelCase", default)]
7214pub struct NotificationDeliveryPreferencesSchedule {
7215    /// Whether the entire delivery schedule is disabled. When true, notifications are delivered at any time regardless of the per-day settings.
7216    pub disabled: Option<bool>,
7217    /// Delivery preferences for Sunday.
7218    pub sunday: Option<NotificationDeliveryPreferencesDay>,
7219    /// Delivery preferences for Monday.
7220    pub monday: Option<NotificationDeliveryPreferencesDay>,
7221    /// Delivery preferences for Tuesday.
7222    pub tuesday: Option<NotificationDeliveryPreferencesDay>,
7223    /// Delivery preferences for Wednesday.
7224    pub wednesday: Option<NotificationDeliveryPreferencesDay>,
7225    /// Delivery preferences for Thursday.
7226    pub thursday: Option<NotificationDeliveryPreferencesDay>,
7227    /// Delivery preferences for Friday.
7228    pub friday: Option<NotificationDeliveryPreferencesDay>,
7229    /// Delivery preferences for Saturday.
7230    pub saturday: Option<NotificationDeliveryPreferencesDay>,
7231}
7232impl GraphQLFields for NotificationDeliveryPreferencesSchedule {
7233    type FullType = Self;
7234    fn selection() -> String {
7235        "disabled".into()
7236    }
7237}
7238#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7239#[serde(rename_all = "camelCase", default)]
7240pub struct NotificationEdge {
7241    /// Used in `before` and `after` args
7242    pub cursor: Option<String>,
7243}
7244impl GraphQLFields for NotificationEdge {
7245    type FullType = Self;
7246    fn selection() -> String {
7247        "cursor".into()
7248    }
7249}
7250/// Return type for notification mutations.
7251#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7252#[serde(rename_all = "camelCase", default)]
7253pub struct NotificationPayload {
7254    /// The identifier of the last sync operation.
7255    pub last_sync_id: Option<f64>,
7256    /// Whether the operation was successful.
7257    pub success: Option<bool>,
7258}
7259impl GraphQLFields for NotificationPayload {
7260    type FullType = Self;
7261    fn selection() -> String {
7262        "lastSyncId success".into()
7263    }
7264}
7265#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7266#[serde(rename_all = "camelCase", default)]
7267pub struct NotificationSubscriptionConnection {
7268    pub edges: Option<Vec<NotificationSubscriptionEdge>>,
7269    pub page_info: Option<PageInfo>,
7270}
7271impl GraphQLFields for NotificationSubscriptionConnection {
7272    type FullType = Self;
7273    fn selection() -> String {
7274        "".into()
7275    }
7276}
7277#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7278#[serde(rename_all = "camelCase", default)]
7279pub struct NotificationSubscriptionEdge {
7280    /// Used in `before` and `after` args
7281    pub cursor: Option<String>,
7282}
7283impl GraphQLFields for NotificationSubscriptionEdge {
7284    type FullType = Self;
7285    fn selection() -> String {
7286        "cursor".into()
7287    }
7288}
7289/// The result of a notification subscription mutation.
7290#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7291#[serde(rename_all = "camelCase", default)]
7292pub struct NotificationSubscriptionPayload {
7293    /// The identifier of the last sync operation.
7294    pub last_sync_id: Option<f64>,
7295    /// Whether the operation was successful.
7296    pub success: Option<bool>,
7297}
7298impl GraphQLFields for NotificationSubscriptionPayload {
7299    type FullType = Self;
7300    fn selection() -> String {
7301        "lastSyncId success".into()
7302    }
7303}
7304/// A request to install an OAuth client application on a workspace, along with the admin's approval or denial response. When a user attempts to install an OAuth application that requires admin approval, an approval record is created. A workspace admin can then approve or deny the request, optionally providing a reason. The record also tracks any newly requested scopes that were added after the initial approval.
7305#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7306#[serde(rename_all = "camelCase", default)]
7307pub struct OauthClientApproval {
7308    /// The unique identifier of the entity.
7309    pub id: Option<String>,
7310    /// The time at which the entity was created.
7311    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
7312    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
7313    /// been updated after creation.
7314    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
7315    /// The time at which the entity was archived. Null if the entity has not been archived.
7316    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
7317    /// The identifier of the OAuth client application being requested for installation in this workspace.
7318    pub oauth_client_id: Option<String>,
7319    /// The identifier of the user who initiated the request to install the OAuth client application.
7320    pub requester_id: Option<String>,
7321    /// The identifier of the workspace admin who approved or denied the installation request. Null if the request has not yet been responded to.
7322    pub responder_id: Option<String>,
7323    /// The current status of the approval request: requested (pending admin review), approved, or denied.
7324    pub status: Option<OAuthClientApprovalStatus>,
7325    /// The OAuth scopes that the application has been approved to use within this workspace (e.g., 'read', 'write', 'issues:create').
7326    pub scopes: Option<Vec<String>>,
7327    /// An optional message from the requester explaining why they want to install the OAuth application.
7328    pub request_reason: Option<String>,
7329    /// An optional explanation from the admin for why the installation request was denied.
7330    pub deny_reason: Option<String>,
7331    /// Additional OAuth scopes requested after the initial approval. These scopes are not yet approved and require a separate admin decision. Null if no additional scopes have been requested. These scopes will never overlap with the already-approved scopes.
7332    pub newly_requested_scopes: Option<Vec<String>>,
7333}
7334impl GraphQLFields for OauthClientApproval {
7335    type FullType = Self;
7336    fn selection() -> String {
7337        "id createdAt updatedAt archivedAt oauthClientId requesterId responderId status scopes requestReason denyReason newlyRequestedScopes"
7338            .into()
7339    }
7340}
7341/// A notification related to an OAuth client approval request, sent to workspace admins when an application requests access.
7342#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7343#[serde(rename_all = "camelCase", default)]
7344pub struct OauthClientApprovalNotification {
7345    /// The unique identifier of the entity.
7346    pub id: Option<String>,
7347    /// The time at which the entity was created.
7348    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
7349    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
7350    /// been updated after creation.
7351    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
7352    /// The time at which the entity was archived. Null if the entity has not been archived.
7353    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
7354    /// Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated.
7355    pub r#type: Option<String>,
7356    /// The user that caused the notification. Null if the notification was triggered by a non-user actor such as an integration, external user, or system event.
7357    pub actor: Option<User>,
7358    /// The external user that caused the notification. Populated when the notification was triggered by an external user (e.g., a commenter from a connected integration like Slack or GitHub) rather than a Linear workspace member.
7359    pub external_user_actor: Option<ExternalUser>,
7360    /// The recipient user of this notification.
7361    pub user: Option<User>,
7362    /// The time at which the user marked the notification as read. Null if the notification is unread.
7363    pub read_at: Option<chrono::DateTime<chrono::Utc>>,
7364    /// The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent.
7365    pub emailed_at: Option<chrono::DateTime<chrono::Utc>>,
7366    /// The time until which a notification is snoozed. After this time, the notification reappears in the user's inbox. Null if the notification is not currently snoozed.
7367    pub snoozed_until_at: Option<chrono::DateTime<chrono::Utc>>,
7368    /// The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed.
7369    pub unsnoozed_at: Option<chrono::DateTime<chrono::Utc>>,
7370    /// The category of the notification.
7371    pub category: Option<NotificationCategory>,
7372    /// `Internal` URL to the target of the notification.
7373    pub url: Option<String>,
7374    /// `Internal` Inbox URL for the notification.
7375    pub inbox_url: Option<String>,
7376    /// `Internal` Notification title.
7377    pub title: Option<String>,
7378    /// `Internal` Notification subtitle.
7379    pub subtitle: Option<String>,
7380    /// `Internal` If notification actor was Linear.
7381    pub is_linear_actor: Option<bool>,
7382    /// `Internal` Notification avatar URL.
7383    pub actor_avatar_url: Option<String>,
7384    /// `Internal` Notification actor initials if avatar is not available.
7385    pub actor_initials: Option<String>,
7386    /// `Internal` Notification actor initials if avatar is not available.
7387    pub actor_avatar_color: Option<String>,
7388    /// `Internal` Issue's status type for issue notifications.
7389    pub issue_status_type: Option<String>,
7390    /// `Internal` Project update health for new updates.
7391    pub project_update_health: Option<String>,
7392    /// `Internal` Initiative update health for new updates.
7393    pub initiative_update_health: Option<String>,
7394    /// `Internal` Notifications with the same grouping key will be grouped together in the UI.
7395    pub grouping_key: Option<String>,
7396    /// `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`.
7397    pub grouping_priority: Option<f64>,
7398    /// The bot that caused the notification.
7399    pub bot_actor: Option<ActorBot>,
7400    /// Related OAuth client approval request ID.
7401    pub oauth_client_approval_id: Option<String>,
7402    /// The OAuth client approval request related to the notification.
7403    pub oauth_client_approval: Option<OauthClientApproval>,
7404}
7405impl GraphQLFields for OauthClientApprovalNotification {
7406    type FullType = Self;
7407    fn selection() -> String {
7408        "id createdAt updatedAt archivedAt type readAt emailedAt snoozedUntilAt unsnoozedAt category url inboxUrl title subtitle isLinearActor actorAvatarUrl actorInitials actorAvatarColor issueStatusType projectUpdateHealth initiativeUpdateHealth groupingKey groupingPriority oauthClientApprovalId"
7409            .into()
7410    }
7411}
7412/// A workspace (referred to as Organization in the API). Workspaces are the root-level container for all teams, users, projects, issues, and settings. Every user belongs to at least one workspace, and all data is scoped within a workspace boundary.
7413#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7414#[serde(rename_all = "camelCase", default)]
7415pub struct Organization {
7416    /// The unique identifier of the entity.
7417    pub id: Option<String>,
7418    /// The time at which the entity was created.
7419    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
7420    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
7421    /// been updated after creation.
7422    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
7423    /// The time at which the entity was archived. Null if the entity has not been archived.
7424    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
7425    /// The workspace's name.
7426    pub name: Option<String>,
7427    /// The workspace's unique URL key, used in URLs to identify the workspace.
7428    pub url_key: Option<String>,
7429    /// The URL of the workspace's logo image. Null if no logo has been uploaded.
7430    pub logo_url: Option<String>,
7431    /// Rolling 30-day total file upload volume for the workspace, measured in megabytes. Used for enforcing upload quotas.
7432    pub period_upload_volume: Option<f64>,
7433    /// `Internal` Facets associated with the workspace, used for configuring custom views and filters.
7434    pub facets: Option<Vec<Facet>>,
7435    /// The template format for Git branch names created from issues. Supports template variables like {issueIdentifier} and {issueTitle}. If null, the default formatting will be used.
7436    pub git_branch_format: Option<String>,
7437    /// Whether the Git integration linkback messages should be posted as comments on pull requests in private repositories.
7438    pub git_linkback_messages_enabled: Option<bool>,
7439    /// Whether the Git integration linkback messages should be posted as comments on pull requests in public repositories.
7440    pub git_public_linkback_messages_enabled: Option<bool>,
7441    /// Whether issue descriptions should be included in the Git integration linkback messages posted to pull requests.
7442    pub git_linkback_descriptions_enabled: Option<bool>,
7443    /// Whether the roadmap feature is enabled for the workspace.
7444    pub roadmap_enabled: Option<bool>,
7445    /// The frequency in weeks at which to prompt for project updates. When null, project update reminders are disabled. Valid values range from 0 to 8.
7446    pub project_update_reminder_frequency_in_weeks: Option<f64>,
7447    /// The day of the week on which project update reminders are sent.
7448    pub project_update_reminders_day: Option<Day>,
7449    /// The hour of the day (0-23) at which project update reminders are sent.
7450    pub project_update_reminders_hour: Option<f64>,
7451    /// The frequency in weeks at which to prompt for initiative updates. When null, initiative update reminders are disabled. Valid values range from 0 to 8.
7452    pub initiative_update_reminder_frequency_in_weeks: Option<f64>,
7453    /// The day of the week on which initiative update reminders are sent.
7454    pub initiative_update_reminders_day: Option<Day>,
7455    /// The hour of the day (0-23) at which initiative update reminders are sent.
7456    pub initiative_update_reminders_hour: Option<f64>,
7457    /// The zero-indexed month at which the fiscal year starts (0 = January, 11 = December). Defaults to 0 (January).
7458    pub fiscal_year_start_month: Option<f64>,
7459    /// `Internal` The list of working days. Sunday is 0, Monday is 1, etc.
7460    pub working_days: Option<Vec<f64>>,
7461    /// Whether SAML-based single sign-on authentication is enabled for the workspace.
7462    pub saml_enabled: Option<bool>,
7463    /// `INTERNAL` SAML settings.
7464    pub saml_settings: Option<serde_json::Value>,
7465    /// Whether SCIM provisioning is enabled for the workspace, allowing automated user and team management from an identity provider.
7466    pub scim_enabled: Option<bool>,
7467    /// `INTERNAL` SCIM settings.
7468    pub scim_settings: Option<serde_json::Value>,
7469    /// Security settings for the workspace, including role-based restrictions for invitations, team creation, label management, and other sensitive operations.
7470    pub security_settings: Option<serde_json::Value>,
7471    /// Authentication settings for the workspace, including allowed auth providers, bypass rules, and organization visibility during signup.
7472    pub auth_settings: Option<serde_json::Value>,
7473    /// Allowed authentication providers, empty array means all are allowed.
7474    pub allowed_auth_services: Option<Vec<String>>,
7475    /// Allowed file upload content types
7476    pub allowed_file_upload_content_types: Option<Vec<String>>,
7477    /// IP restriction configurations.
7478    pub ip_restrictions: Option<Vec<OrganizationIpRestriction>>,
7479    /// The time at which deletion of the workspace was requested. Null if no deletion has been requested.
7480    pub deletion_requested_at: Option<chrono::DateTime<chrono::Utc>>,
7481    /// The time at which the current plan trial will end. Null if the workspace is not in a trial period.
7482    pub trial_ends_at: Option<chrono::DateTime<chrono::Utc>>,
7483    /// The time at which the current plan trial started. Null if the workspace is not in a trial period.
7484    pub trial_starts_at: Option<chrono::DateTime<chrono::Utc>>,
7485    /// Previously used URL keys for the workspace. The last 3 are kept and automatically redirected to the current URL key.
7486    pub previous_url_keys: Option<Vec<String>>,
7487    /// `Internal` Whether agent invocation is restricted to full workspace members.
7488    pub restrict_agent_invocation_to_members: Option<bool>,
7489    /// Whether HIPAA compliance is enabled for the workspace. When enabled, certain data processing features are restricted to meet compliance requirements.
7490    pub hipaa_compliance_enabled: Option<bool>,
7491    /// `ALPHA` Theme settings for the workspace.
7492    pub theme_settings: Option<serde_json::Value>,
7493    /// The feature release channel the workspace belongs to, which controls access to pre-release features.
7494    pub release_channel: Option<ReleaseChannel>,
7495    /// Configuration settings for the Customers feature, including revenue currency and other customer tracking preferences.
7496    pub customers_configuration: Option<serde_json::Value>,
7497    /// `INTERNAL` Whether code intelligence is enabled for the workspace.
7498    pub code_intelligence_enabled: Option<bool>,
7499    /// `INTERNAL` GitHub repository in owner/repo format for code intelligence.
7500    pub code_intelligence_repository: Option<String>,
7501    /// Default schedule for how often feed summaries are generated.
7502    pub default_feed_summary_schedule: Option<FeedSummarySchedule>,
7503    /// Whether the activity feed feature is enabled for the workspace.
7504    pub feed_enabled: Option<bool>,
7505    /// Whether to hide other organizations for new users signing up with email domains claimed by this organization.
7506    pub hide_non_primary_organizations: Option<bool>,
7507    /// `INTERNAL` Whether the workspace has enabled the AI add-on (which at this point only includes triage suggestions).
7508    pub ai_addon_enabled: Option<bool>,
7509    /// `INTERNAL` Whether the workspace has enabled agent automation.
7510    pub agent_automation_enabled: Option<bool>,
7511    /// `INTERNAL` Whether the workspace has enabled generated updates.
7512    pub generated_updates_enabled: Option<bool>,
7513    /// Whether the workspace has enabled resolved thread AI summaries.
7514    pub ai_thread_summaries_enabled: Option<bool>,
7515    /// Whether the workspace has enabled AI discussion summaries for issues.
7516    pub ai_discussion_summaries_enabled: Option<bool>,
7517    /// `INTERNAL` Configure per-modality AI host providers and model families.
7518    pub ai_provider_configuration: Option<serde_json::Value>,
7519    /// `Internal` Whether the workspace has enabled Linear Agent.
7520    pub linear_agent_enabled: Option<bool>,
7521    /// `Internal` Settings for Linear Agent features.
7522    pub linear_agent_settings: Option<serde_json::Value>,
7523    /// `INTERNAL` Whether the workspace has enabled the Coding Agent.
7524    pub coding_agent_enabled: Option<bool>,
7525    /// `DEPRECATED` Which day count to use for SLA calculations.
7526    pub sla_day_count: Option<SLADayCountType>,
7527    /// `DEPRECATED` The frequency at which to prompt for project updates.
7528    pub project_updates_reminder_frequency: Option<ProjectUpdateReminderFrequency>,
7529    /// `INTERNAL` Permitted AI providers.
7530    pub allowed_ai_providers: Option<Vec<String>>,
7531    /// Users belonging to the workspace. By default only returns active users; use the includeDisabled argument to include deactivated users.
7532    pub users: Option<UserConnection>,
7533    /// Teams in the workspace. Returns only teams visible to the requesting user (all public teams plus private teams the user is a member of).
7534    pub teams: Option<TeamConnection>,
7535    /// The workspace's available project statuses, which define the lifecycle stages for projects.
7536    pub project_statuses: Option<Vec<ProjectStatus>>,
7537    /// Third-party integrations configured for the workspace (e.g., GitHub, Slack, Figma).
7538    pub integrations: Option<IntegrationConnection>,
7539    /// The Slack integration used for auto-creating project channels.
7540    pub slack_project_channel_integration: Option<Box<Integration>>,
7541    /// The prefix used for auto-created Slack project channels.
7542    pub slack_project_channel_prefix: Option<String>,
7543    /// `Internal` Whether the Slack project channels feature is enabled for the workspace.
7544    pub slack_project_channels_enabled: Option<bool>,
7545    /// `Internal` Whether to automatically create a Slack channel when a new project is created.
7546    pub slack_auto_create_project_channel: Option<bool>,
7547    /// The workspace's subscription to a paid plan.
7548    pub subscription: Option<Box<PaidSubscription>>,
7549    /// The number of active (non-deactivated) users in the workspace.
7550    pub user_count: Option<i64>,
7551    /// Approximate total number of issues created in the workspace, including archived ones. This count is cached and may not reflect the exact real-time count.
7552    pub created_issue_count: Option<i64>,
7553    /// Workspace-level templates (not associated with any specific team). These templates are available across all teams in the workspace.
7554    pub templates: Option<TemplateConnection>,
7555    /// Workspace-level issue labels (not associated with any specific team). These labels are available across all teams in the workspace.
7556    pub labels: Option<IssueLabelConnection>,
7557    /// Project labels available in the workspace for categorizing projects.
7558    pub project_labels: Option<ProjectLabelConnection>,
7559    /// The number of active (non-archived) customers tracked in the workspace.
7560    pub customer_count: Option<i64>,
7561    /// Whether the Customers feature is enabled and accessible for the workspace based on the current plan.
7562    pub customers_enabled: Option<bool>,
7563    /// `Internal` Whether release management is enabled for the workspace.
7564    pub releases_enabled: Option<bool>,
7565    /// `DEPRECATED` Whether member users are allowed to send invites.
7566    pub allow_members_to_invite: Option<bool>,
7567    /// `DEPRECATED` Whether team creation is restricted to admins.
7568    pub restrict_team_creation_to_admins: Option<bool>,
7569    /// `DEPRECATED` Whether workspace label creation, update, and deletion is restricted to admins.
7570    pub restrict_label_management_to_admins: Option<bool>,
7571}
7572impl GraphQLFields for Organization {
7573    type FullType = Self;
7574    fn selection() -> String {
7575        "id createdAt updatedAt archivedAt name urlKey logoUrl periodUploadVolume gitBranchFormat gitLinkbackMessagesEnabled gitPublicLinkbackMessagesEnabled gitLinkbackDescriptionsEnabled roadmapEnabled projectUpdateReminderFrequencyInWeeks projectUpdateRemindersDay projectUpdateRemindersHour initiativeUpdateReminderFrequencyInWeeks initiativeUpdateRemindersDay initiativeUpdateRemindersHour fiscalYearStartMonth workingDays samlEnabled samlSettings scimEnabled scimSettings securitySettings authSettings allowedAuthServices allowedFileUploadContentTypes deletionRequestedAt trialEndsAt trialStartsAt previousUrlKeys restrictAgentInvocationToMembers hipaaComplianceEnabled themeSettings releaseChannel customersConfiguration codeIntelligenceEnabled codeIntelligenceRepository defaultFeedSummarySchedule feedEnabled hideNonPrimaryOrganizations aiAddonEnabled agentAutomationEnabled generatedUpdatesEnabled aiThreadSummariesEnabled aiDiscussionSummariesEnabled aiProviderConfiguration linearAgentEnabled linearAgentSettings codingAgentEnabled slaDayCount projectUpdatesReminderFrequency allowedAiProviders slackProjectChannelPrefix slackProjectChannelsEnabled slackAutoCreateProjectChannel userCount createdIssueCount customerCount customersEnabled releasesEnabled allowMembersToInvite restrictTeamCreationToAdmins restrictLabelManagementToAdmins"
7576            .into()
7577    }
7578}
7579#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7580#[serde(rename_all = "camelCase", default)]
7581pub struct OrganizationAcceptedOrExpiredInviteDetailsPayload {
7582    /// The status of the invite.
7583    pub status: Option<OrganizationInviteStatus>,
7584}
7585impl GraphQLFields for OrganizationAcceptedOrExpiredInviteDetailsPayload {
7586    type FullType = Self;
7587    fn selection() -> String {
7588        "status".into()
7589    }
7590}
7591/// Workspace deletion cancellation response.
7592#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7593#[serde(rename_all = "camelCase", default)]
7594pub struct OrganizationCancelDeletePayload {
7595    /// Whether the operation was successful.
7596    pub success: Option<bool>,
7597}
7598impl GraphQLFields for OrganizationCancelDeletePayload {
7599    type FullType = Self;
7600    fn selection() -> String {
7601        "success".into()
7602    }
7603}
7604/// Workspace deletion operation response.
7605#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7606#[serde(rename_all = "camelCase", default)]
7607pub struct OrganizationDeletePayload {
7608    /// Whether the operation was successful.
7609    pub success: Option<bool>,
7610}
7611impl GraphQLFields for OrganizationDeletePayload {
7612    type FullType = Self;
7613    fn selection() -> String {
7614        "success".into()
7615    }
7616}
7617/// A verified email domain associated with a workspace. Domains are used for automatic team joining, SSO/SAML authentication, and controlling workspace access. Each domain has an authentication type (general or SAML) and can be verified via email or DNS.
7618#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7619#[serde(rename_all = "camelCase", default)]
7620pub struct OrganizationDomain {
7621    /// The unique identifier of the entity.
7622    pub id: Option<String>,
7623    /// The time at which the entity was created.
7624    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
7625    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
7626    /// been updated after creation.
7627    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
7628    /// The time at which the entity was archived. Null if the entity has not been archived.
7629    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
7630    /// The identity provider the domain belongs to.
7631    pub identity_provider: Option<IdentityProvider>,
7632    /// The domain name (e.g., 'example.com').
7633    pub name: Option<String>,
7634    /// Whether the domain has been verified via email verification.
7635    pub verified: Option<bool>,
7636    /// The email address used to verify this domain. Null if the domain was verified via DNS or has not been verified.
7637    pub verification_email: Option<String>,
7638    /// The user who added the domain.
7639    pub creator: Option<User>,
7640    /// The authentication type this domain is used for. 'general' means standard email-based auth, 'saml' means SAML SSO authentication.
7641    pub auth_type: Option<OrganizationDomainAuthType>,
7642    /// Whether the domain was claimed by the workspace through DNS TXT record verification. Claimed domains provide stronger ownership proof than email verification and enable additional features like preventing users from creating new workspaces.
7643    pub claimed: Option<bool>,
7644    /// Whether users with email addresses from this domain are prevented from creating new workspaces. Can only be set on claimed domains.
7645    pub disable_organization_creation: Option<bool>,
7646}
7647impl GraphQLFields for OrganizationDomain {
7648    type FullType = Self;
7649    fn selection() -> String {
7650        "id createdAt updatedAt archivedAt name verified verificationEmail authType claimed disableOrganizationCreation"
7651            .into()
7652    }
7653}
7654/// `INTERNAL` Domain claim request response.
7655#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7656#[serde(rename_all = "camelCase", default)]
7657pub struct OrganizationDomainClaimPayload {
7658    /// String to put into DNS for verification.
7659    pub verification_string: Option<String>,
7660}
7661impl GraphQLFields for OrganizationDomainClaimPayload {
7662    type FullType = Self;
7663    fn selection() -> String {
7664        "verificationString".into()
7665    }
7666}
7667/// `INTERNAL` Organization domain operation response.
7668#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7669#[serde(rename_all = "camelCase", default)]
7670pub struct OrganizationDomainPayload {
7671    /// The identifier of the last sync operation.
7672    pub last_sync_id: Option<f64>,
7673    /// The workspace domain that was created or updated.
7674    pub organization_domain: Option<OrganizationDomain>,
7675    /// Whether the operation was successful.
7676    pub success: Option<bool>,
7677}
7678impl GraphQLFields for OrganizationDomainPayload {
7679    type FullType = Self;
7680    fn selection() -> String {
7681        "lastSyncId success".into()
7682    }
7683}
7684/// `INTERNAL` Organization domain operation response.
7685#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7686#[serde(rename_all = "camelCase", default)]
7687pub struct OrganizationDomainSimplePayload {
7688    /// Whether the operation was successful.
7689    pub success: Option<bool>,
7690}
7691impl GraphQLFields for OrganizationDomainSimplePayload {
7692    type FullType = Self;
7693    fn selection() -> String {
7694        "success".into()
7695    }
7696}
7697/// Response for checking whether a workspace exists.
7698#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7699#[serde(rename_all = "camelCase", default)]
7700pub struct OrganizationExistsPayload {
7701    /// Whether the operation was successful.
7702    pub success: Option<bool>,
7703    /// Whether the organization exists.
7704    pub exists: Option<bool>,
7705}
7706impl GraphQLFields for OrganizationExistsPayload {
7707    type FullType = Self;
7708    fn selection() -> String {
7709        "success exists".into()
7710    }
7711}
7712/// A pending invitation to join the workspace, sent via email. Invites specify the role the invitee will receive and can optionally include team assignments. Invites can expire and must be accepted by the invitee to grant workspace access.
7713#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7714#[serde(rename_all = "camelCase", default)]
7715pub struct OrganizationInvite {
7716    /// The unique identifier of the entity.
7717    pub id: Option<String>,
7718    /// The time at which the entity was created.
7719    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
7720    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
7721    /// been updated after creation.
7722    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
7723    /// The time at which the entity was archived. Null if the entity has not been archived.
7724    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
7725    /// The email address of the person being invited to the workspace.
7726    pub email: Option<String>,
7727    /// The workspace role (admin, member, guest, or owner) that the invitee will receive upon accepting the invite.
7728    pub role: Option<UserRoleType>,
7729    /// Whether the invite was sent to an email address outside the workspace's verified domains.
7730    pub external: Option<bool>,
7731    /// The time at which the invite was accepted by the invitee. Null if the invite is still pending.
7732    pub accepted_at: Option<chrono::DateTime<chrono::Utc>>,
7733    /// The time at which the invite will expire and can no longer be accepted. Null if the invite does not have an expiration date.
7734    pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
7735    /// Extra metadata associated with the invite.
7736    pub metadata: Option<serde_json::Value>,
7737    /// The user who created the invitation.
7738    pub inviter: Option<User>,
7739    /// The user who has accepted the invite. Null, if the invite hasn't been accepted.
7740    pub invitee: Option<User>,
7741    /// The workspace that the invite is associated with.
7742    pub organization: Option<Organization>,
7743}
7744impl GraphQLFields for OrganizationInvite {
7745    type FullType = Self;
7746    fn selection() -> String {
7747        "id createdAt updatedAt archivedAt email role external acceptedAt expiresAt metadata".into()
7748    }
7749}
7750#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7751#[serde(rename_all = "camelCase", default)]
7752pub struct OrganizationInviteConnection {
7753    pub edges: Option<Vec<OrganizationInviteEdge>>,
7754    pub nodes: Option<Vec<OrganizationInvite>>,
7755    pub page_info: Option<PageInfo>,
7756}
7757impl GraphQLFields for OrganizationInviteConnection {
7758    type FullType = Self;
7759    fn selection() -> String {
7760        "".into()
7761    }
7762}
7763#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7764#[serde(rename_all = "camelCase", default)]
7765pub struct OrganizationInviteEdge {
7766    pub node: Option<OrganizationInvite>,
7767    /// Used in `before` and `after` args
7768    pub cursor: Option<String>,
7769}
7770impl GraphQLFields for OrganizationInviteEdge {
7771    type FullType = Self;
7772    fn selection() -> String {
7773        "cursor".into()
7774    }
7775}
7776#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7777#[serde(rename_all = "camelCase", default)]
7778pub struct OrganizationInviteFullDetailsPayload {
7779    /// The status of the invite.
7780    pub status: Option<OrganizationInviteStatus>,
7781    /// The name of the inviter.
7782    pub inviter: Option<String>,
7783    /// The email of the invitee.
7784    pub email: Option<String>,
7785    /// What user role the invite should grant.
7786    pub role: Option<UserRoleType>,
7787    /// When the invite was created.
7788    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
7789    /// Name of the workspace the invite is for.
7790    pub organization_name: Option<String>,
7791    /// ID of the workspace the invite is for.
7792    pub organization_id: Option<String>,
7793    /// URL of the workspace logo the invite is for.
7794    pub organization_logo_url: Option<String>,
7795    /// Whether the invite has already been accepted.
7796    pub accepted: Option<bool>,
7797    /// Whether the invite has expired.
7798    pub expired: Option<bool>,
7799    /// Allowed authentication providers, empty array means all are allowed.
7800    pub allowed_auth_services: Option<Vec<String>>,
7801}
7802impl GraphQLFields for OrganizationInviteFullDetailsPayload {
7803    type FullType = Self;
7804    fn selection() -> String {
7805        "status inviter email role createdAt organizationName organizationId organizationLogoUrl accepted expired allowedAuthServices"
7806            .into()
7807    }
7808}
7809/// Workspace invite operation response.
7810#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7811#[serde(rename_all = "camelCase", default)]
7812pub struct OrganizationInvitePayload {
7813    /// The identifier of the last sync operation.
7814    pub last_sync_id: Option<f64>,
7815    /// The organization invite that was created or updated.
7816    pub organization_invite: Option<OrganizationInvite>,
7817    /// Whether the operation was successful.
7818    pub success: Option<bool>,
7819}
7820impl GraphQLFields for OrganizationInvitePayload {
7821    type FullType = Self;
7822    fn selection() -> String {
7823        "lastSyncId success".into()
7824    }
7825}
7826/// `INTERNAL` IP restriction rule for a workspace, defining allowed or blocked IP ranges.
7827#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7828#[serde(rename_all = "camelCase", default)]
7829pub struct OrganizationIpRestriction {
7830    /// IP range in CIDR format.
7831    pub range: Option<String>,
7832    /// Restriction type.
7833    pub r#type: Option<String>,
7834    /// Optional restriction description.
7835    pub description: Option<String>,
7836    /// Whether the restriction is enabled.
7837    pub enabled: Option<bool>,
7838}
7839impl GraphQLFields for OrganizationIpRestriction {
7840    type FullType = Self;
7841    fn selection() -> String {
7842        "range type description enabled".into()
7843    }
7844}
7845/// `INTERNAL` Workspace metadata including region and allowed authentication providers.
7846#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7847#[serde(rename_all = "camelCase", default)]
7848pub struct OrganizationMeta {
7849    /// The region the workspace is hosted in.
7850    pub region: Option<String>,
7851    /// Allowed authentication providers, empty array means all are allowed.
7852    pub allowed_auth_services: Option<Vec<String>>,
7853}
7854impl GraphQLFields for OrganizationMeta {
7855    type FullType = Self;
7856    fn selection() -> String {
7857        "region allowedAuthServices".into()
7858    }
7859}
7860/// Workspace update operation response.
7861#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7862#[serde(rename_all = "camelCase", default)]
7863pub struct OrganizationPayload {
7864    /// The identifier of the last sync operation.
7865    pub last_sync_id: Option<f64>,
7866    /// The workspace that was created or updated.
7867    pub organization: Option<Organization>,
7868    /// Whether the operation was successful.
7869    pub success: Option<bool>,
7870}
7871impl GraphQLFields for OrganizationPayload {
7872    type FullType = Self;
7873    fn selection() -> String {
7874        "lastSyncId success".into()
7875    }
7876}
7877/// Workspace trial start response.
7878#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7879#[serde(rename_all = "camelCase", default)]
7880pub struct OrganizationStartTrialPayload {
7881    /// Whether the operation was successful.
7882    pub success: Option<bool>,
7883}
7884impl GraphQLFields for OrganizationStartTrialPayload {
7885    type FullType = Self;
7886    fn selection() -> String {
7887        "success".into()
7888    }
7889}
7890#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7891#[serde(rename_all = "camelCase", default)]
7892pub struct PageInfo {
7893    /// Indicates if there are more results when paginating backward.
7894    pub has_previous_page: Option<bool>,
7895    /// Indicates if there are more results when paginating forward.
7896    pub has_next_page: Option<bool>,
7897    /// Cursor representing the first result in the paginated results.
7898    pub start_cursor: Option<String>,
7899    /// Cursor representing the last result in the paginated results.
7900    pub end_cursor: Option<String>,
7901}
7902impl GraphQLFields for PageInfo {
7903    type FullType = Self;
7904    fn selection() -> String {
7905        "hasPreviousPage hasNextPage startCursor endCursor".into()
7906    }
7907}
7908/// The billing subscription of a workspace. Represents an active paid plan (e.g., Basic, Business, Enterprise) backed by a Stripe subscription. If a workspace has no Subscription record, it is on the free plan. Only one active subscription per workspace is expected.
7909#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7910#[serde(rename_all = "camelCase", default)]
7911pub struct PaidSubscription {
7912    /// The unique identifier of the entity.
7913    pub id: Option<String>,
7914    /// The time at which the entity was created.
7915    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
7916    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
7917    /// been updated after creation.
7918    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
7919    /// The time at which the entity was archived. Null if the entity has not been archived.
7920    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
7921    /// The subscription plan type (e.g., basic, business, enterprise). Determines the feature set and pricing tier for the workspace.
7922    pub r#type: Option<String>,
7923    /// The number of seats (active members) in the subscription. This is the raw count before applying minimum and maximum seat limits.
7924    pub seats: Option<f64>,
7925    /// The minimum number of seats that will be billed in the subscription. The billed seat count will never go below this value even if actual member count is lower. Null if no minimum is enforced.
7926    pub seats_minimum: Option<f64>,
7927    /// The maximum number of seats that will be billed in the subscription. The billed seat count will never exceed this value even if actual member count is higher. Null if no maximum is enforced.
7928    pub seats_maximum: Option<f64>,
7929    /// The user who initially created (purchased) the subscription. Null if the creator has been removed from the workspace.
7930    pub creator: Option<Box<User>>,
7931    /// The workspace that the subscription is associated with.
7932    pub organization: Option<Box<Organization>>,
7933    /// The billing collection method for this subscription. 'automatic' means the payment method on file is charged automatically. 'send_invoice' means invoices are sent to the billing email for manual payment.
7934    pub collection_method: Option<String>,
7935    /// The date the subscription was canceled. Null if the subscription has not been canceled.
7936    pub canceled_at: Option<chrono::DateTime<chrono::Utc>>,
7937    /// The date the subscription is scheduled to be canceled in the future. Null if no cancellation is scheduled. The subscription remains active until this date.
7938    pub cancel_at: Option<chrono::DateTime<chrono::Utc>>,
7939    /// The subscription plan type that the workspace is scheduled to change to at the next billing cycle. Null if no plan change is pending.
7940    pub pending_change_type: Option<String>,
7941    /// The date the subscription will be billed next. Null if the subscription is canceled or has no upcoming billing date.
7942    pub next_billing_at: Option<chrono::DateTime<chrono::Utc>>,
7943}
7944impl GraphQLFields for PaidSubscription {
7945    type FullType = Self;
7946    fn selection() -> String {
7947        "id createdAt updatedAt archivedAt type seats seatsMinimum seatsMaximum collectionMethod canceledAt cancelAt pendingChangeType nextBillingAt"
7948            .into()
7949    }
7950}
7951#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7952#[serde(rename_all = "camelCase", default)]
7953pub struct PasskeyLoginStartResponse {
7954    /// Whether the operation was successful.
7955    pub success: Option<bool>,
7956    /// The passkey authentication options to pass to the WebAuthn API.
7957    pub options: Option<serde_json::Value>,
7958}
7959impl GraphQLFields for PasskeyLoginStartResponse {
7960    type FullType = Self;
7961    fn selection() -> String {
7962        "success options".into()
7963    }
7964}
7965/// `Internal` A post or announcement in a team or user feed. Posts can be manually authored by users or AI-generated summaries of team activity. They support rich text content (ProseMirror), emoji reactions, threaded comments, and audio summaries. Posts are associated with either a team or a user, but not both.
7966#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7967#[serde(rename_all = "camelCase", default)]
7968pub struct Post {
7969    /// The unique identifier of the entity.
7970    pub id: Option<String>,
7971    /// The time at which the entity was created.
7972    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
7973    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
7974    /// been updated after creation.
7975    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
7976    /// The time at which the entity was archived. Null if the entity has not been archived.
7977    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
7978    /// The post content in markdown format.
7979    pub body: Option<String>,
7980    /// `Internal` The content of the post as a ProseMirror document. This is the canonical rich-text representation of the post body.
7981    pub body_data: Option<String>,
7982    /// `Internal` The structured data used to compose an AI-generated written summary post, including section content and source references.
7983    pub written_summary_data: Option<serde_json::Value>,
7984    /// The post content summarized for audio text-to-speech consumption. Null if no audio summary has been generated.
7985    pub audio_summary: Option<String>,
7986    /// The post's title. Null or empty for posts that do not have a title.
7987    pub title: Option<String>,
7988    /// The post's unique URL slug, used to construct human-readable URLs.
7989    pub slug_id: Option<String>,
7990    /// The user who created the post. Null for system-generated posts.
7991    pub creator: Option<Box<User>>,
7992    /// The time the post was last edited. Null if the post has not been edited since creation.
7993    pub edited_at: Option<chrono::DateTime<chrono::Utc>>,
7994    /// Emoji reaction summary for this post, grouped by emoji type. Each entry contains the emoji name, count, and the IDs of users who reacted.
7995    pub reaction_data: Option<serde_json::Value>,
7996    /// A URL of the text-to-speech audio rendering of the post body. Null if no audio has been generated.
7997    pub ttl_url: Option<String>,
7998    /// The user that the post is scoped to, for user-level feed posts. Null for team-scoped posts.
7999    pub user: Option<Box<User>>,
8000    /// The team that the post is scoped to, for team-level feed posts. Null for user-scoped posts.
8001    pub team: Option<Box<Team>>,
8002    /// The type of the post, such as 'summary' for AI-generated feed summaries. Null for standard user-authored posts.
8003    pub r#type: Option<PostType>,
8004    /// The evaluation log ID of the AI response that generated this post. Null for non-AI-generated posts.
8005    pub eval_log_id: Option<String>,
8006    /// The feed summary schedule cadence that was active when this post was created. Null for non-summary posts.
8007    pub feed_summary_schedule_at_create: Option<FeedSummarySchedule>,
8008}
8009impl GraphQLFields for Post {
8010    type FullType = Self;
8011    fn selection() -> String {
8012        "id createdAt updatedAt archivedAt body bodyData writtenSummaryData audioSummary title slugId editedAt reactionData ttlUrl type evalLogId feedSummaryScheduleAtCreate"
8013            .into()
8014    }
8015}
8016/// A notification related to a post, such as new comments or reactions.
8017#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8018#[serde(rename_all = "camelCase", default)]
8019pub struct PostNotification {
8020    /// Related comment ID. Null if the notification is not related to a comment.
8021    pub comment_id: Option<String>,
8022    /// Related parent comment ID. Null if the notification is not related to a comment.
8023    pub parent_comment_id: Option<String>,
8024    /// Name of the reaction emoji related to the notification.
8025    pub reaction_emoji: Option<String>,
8026    /// The unique identifier of the entity.
8027    pub id: Option<String>,
8028    /// The time at which the entity was created.
8029    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
8030    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
8031    /// been updated after creation.
8032    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
8033    /// The time at which the entity was archived. Null if the entity has not been archived.
8034    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
8035    /// Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated.
8036    pub r#type: Option<String>,
8037    /// The user that caused the notification. Null if the notification was triggered by a non-user actor such as an integration, external user, or system event.
8038    pub actor: Option<User>,
8039    /// The external user that caused the notification. Populated when the notification was triggered by an external user (e.g., a commenter from a connected integration like Slack or GitHub) rather than a Linear workspace member.
8040    pub external_user_actor: Option<ExternalUser>,
8041    /// The recipient user of this notification.
8042    pub user: Option<User>,
8043    /// The time at which the user marked the notification as read. Null if the notification is unread.
8044    pub read_at: Option<chrono::DateTime<chrono::Utc>>,
8045    /// The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent.
8046    pub emailed_at: Option<chrono::DateTime<chrono::Utc>>,
8047    /// The time until which a notification is snoozed. After this time, the notification reappears in the user's inbox. Null if the notification is not currently snoozed.
8048    pub snoozed_until_at: Option<chrono::DateTime<chrono::Utc>>,
8049    /// The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed.
8050    pub unsnoozed_at: Option<chrono::DateTime<chrono::Utc>>,
8051    /// The category of the notification.
8052    pub category: Option<NotificationCategory>,
8053    /// `Internal` URL to the target of the notification.
8054    pub url: Option<String>,
8055    /// `Internal` Inbox URL for the notification.
8056    pub inbox_url: Option<String>,
8057    /// `Internal` Notification title.
8058    pub title: Option<String>,
8059    /// `Internal` Notification subtitle.
8060    pub subtitle: Option<String>,
8061    /// `Internal` If notification actor was Linear.
8062    pub is_linear_actor: Option<bool>,
8063    /// `Internal` Notification avatar URL.
8064    pub actor_avatar_url: Option<String>,
8065    /// `Internal` Notification actor initials if avatar is not available.
8066    pub actor_initials: Option<String>,
8067    /// `Internal` Notification actor initials if avatar is not available.
8068    pub actor_avatar_color: Option<String>,
8069    /// `Internal` Issue's status type for issue notifications.
8070    pub issue_status_type: Option<String>,
8071    /// `Internal` Project update health for new updates.
8072    pub project_update_health: Option<String>,
8073    /// `Internal` Initiative update health for new updates.
8074    pub initiative_update_health: Option<String>,
8075    /// `Internal` Notifications with the same grouping key will be grouped together in the UI.
8076    pub grouping_key: Option<String>,
8077    /// `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`.
8078    pub grouping_priority: Option<f64>,
8079    /// The bot that caused the notification.
8080    pub bot_actor: Option<ActorBot>,
8081    /// Related post ID.
8082    pub post_id: Option<String>,
8083}
8084impl GraphQLFields for PostNotification {
8085    type FullType = Self;
8086    fn selection() -> String {
8087        "commentId parentCommentId reactionEmoji id createdAt updatedAt archivedAt type readAt emailedAt snoozedUntilAt unsnoozedAt category url inboxUrl title subtitle isLinearActor actorAvatarUrl actorInitials actorAvatarColor issueStatusType projectUpdateHealth initiativeUpdateHealth groupingKey groupingPriority postId"
8088            .into()
8089    }
8090}
8091/// A project is a collection of issues working toward a shared goal. Projects have start and target dates, milestones, status tracking, and progress metrics. They can span multiple teams and be grouped under initiatives.
8092#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8093#[serde(rename_all = "camelCase", default)]
8094pub struct Project {
8095    /// The unique identifier of the entity.
8096    pub id: Option<String>,
8097    /// The time at which the entity was created.
8098    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
8099    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
8100    /// been updated after creation.
8101    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
8102    /// The time at which the entity was archived. Null if the entity has not been archived.
8103    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
8104    /// The n-weekly frequency at which to prompt for updates. When not set, reminders are inherited from workspace.
8105    pub update_reminder_frequency_in_weeks: Option<f64>,
8106    /// The frequency at which to prompt for updates. When not set, reminders are inherited from workspace.
8107    pub update_reminder_frequency: Option<f64>,
8108    /// The resolution of the reminder frequency.
8109    pub frequency_resolution: Option<FrequencyResolutionType>,
8110    /// The day at which to prompt for updates.
8111    pub update_reminders_day: Option<Day>,
8112    /// The hour at which to prompt for updates.
8113    pub update_reminders_hour: Option<f64>,
8114    /// The name of the project.
8115    pub name: Option<String>,
8116    /// The short description of the project.
8117    pub description: Option<String>,
8118    /// The project's unique URL slug, used to construct human-readable URLs.
8119    pub slug_id: Option<String>,
8120    /// The icon of the project. Can be an emoji or a decorative icon type.
8121    pub icon: Option<String>,
8122    /// The project's color as a HEX string. Used in the UI to visually identify the project.
8123    pub color: Option<String>,
8124    /// The current project status. Defines the project's position in its lifecycle (e.g., backlog, planned, started, paused, completed, canceled).
8125    pub status: Option<ProjectStatus>,
8126    /// The user who created the project.
8127    pub creator: Option<Box<User>>,
8128    /// The user who leads the project. The project lead is typically responsible for posting status updates and driving the project to completion. Null if no lead is assigned.
8129    pub lead: Option<Box<User>>,
8130    /// `Internal` Facets associated with the project, used for filtering and categorization.
8131    pub facets: Option<Vec<Facet>>,
8132    /// The time until which project update reminders are paused. When set, no update reminders will be sent for this project until this date passes. Null means reminders are active.
8133    pub project_update_reminders_paused_until_at: Option<chrono::DateTime<chrono::Utc>>,
8134    /// The estimated start date of the project. Null if no start date is set.
8135    pub start_date: Option<chrono::NaiveDate>,
8136    /// The resolution of the project's start date, indicating whether it refers to a specific month, quarter, half-year, or year.
8137    pub start_date_resolution: Option<DateResolutionType>,
8138    /// The estimated completion date of the project. Null if no target date is set.
8139    pub target_date: Option<chrono::NaiveDate>,
8140    /// The resolution of the project's estimated completion date, indicating whether it refers to a specific month, quarter, half-year, or year.
8141    pub target_date_resolution: Option<DateResolutionType>,
8142    /// The time at which the project was moved into a started status. Null if the project has not been started.
8143    pub started_at: Option<chrono::DateTime<chrono::Utc>>,
8144    /// The time at which the project was moved into a completed status. Null if the project has not been completed.
8145    pub completed_at: Option<chrono::DateTime<chrono::Utc>>,
8146    /// The time at which the project was moved into a canceled status. Null if the project has not been canceled.
8147    pub canceled_at: Option<chrono::DateTime<chrono::Utc>>,
8148    /// The time at which the project was automatically archived by the auto-pruning process. Null if the project has not been auto-archived.
8149    pub auto_archived_at: Option<chrono::DateTime<chrono::Utc>>,
8150    /// A flag that indicates whether the project is in the trash bin.
8151    pub trashed: Option<bool>,
8152    /// The sort order for the project within the workspace. Used for manual ordering in list views.
8153    pub sort_order: Option<f64>,
8154    /// The sort order for the project within the workspace when ordered by priority.
8155    pub priority_sort_order: Option<f64>,
8156    /// The issue that was converted into this project. Null if the project was not created from an issue.
8157    pub converted_from_issue: Option<Box<Issue>>,
8158    /// The last template that was applied to this project.
8159    pub last_applied_template: Option<Box<Template>>,
8160    /// The priority of the project. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low.
8161    pub priority: Option<i64>,
8162    /// The most recent status update posted for this project. Null if no updates have been posted.
8163    pub last_update: Option<Box<ProjectUpdate>>,
8164    /// The overall health of the project, derived from the most recent project update. Possible values are onTrack, atRisk, or offTrack. Null if no health has been reported.
8165    pub health: Option<ProjectUpdateHealthType>,
8166    /// The time at which the project health was last updated, typically when a new project update is posted. Null if health has never been set.
8167    pub health_updated_at: Option<chrono::DateTime<chrono::Utc>>,
8168    /// The total number of issues in the project at the end of each week since project creation. Each entry represents one week.
8169    pub issue_count_history: Option<Vec<f64>>,
8170    /// The number of completed issues in the project at the end of each week since project creation. Each entry represents one week.
8171    pub completed_issue_count_history: Option<Vec<f64>>,
8172    /// The total scope (estimation points) of the project at the end of each week since project creation. Each entry represents one week.
8173    pub scope_history: Option<Vec<f64>>,
8174    /// The number of completed estimation points at the end of each week since project creation. Each entry represents one week.
8175    pub completed_scope_history: Option<Vec<f64>>,
8176    /// The number of in-progress estimation points at the end of each week since project creation. Each entry represents one week.
8177    pub in_progress_scope_history: Option<Vec<f64>>,
8178    /// `INTERNAL` The progress history of the project, tracking issue completion over time.
8179    pub progress_history: Option<serde_json::Value>,
8180    /// `INTERNAL` The current progress of the project, broken down by issue status category.
8181    pub current_progress: Option<serde_json::Value>,
8182    /// Whether to send new issue notifications to Slack.
8183    pub slack_new_issue: Option<bool>,
8184    /// Whether to send new issue comment notifications to Slack.
8185    pub slack_issue_comments: Option<bool>,
8186    /// Whether to send new issue status updates to Slack.
8187    pub slack_issue_statuses: Option<bool>,
8188    /// The IDs of the project labels associated with this project.
8189    pub label_ids: Option<Vec<String>>,
8190    /// The user's favorite associated with this project.
8191    pub favorite: Option<Box<Favorite>>,
8192    /// Project URL.
8193    pub url: Option<String>,
8194    /// Initiatives that this project belongs to.
8195    pub initiatives: Option<InitiativeConnection>,
8196    /// Associations of this project to parent initiatives.
8197    pub initiative_to_projects: Option<InitiativeToProjectConnection>,
8198    /// Teams associated with this project.
8199    pub teams: Option<TeamConnection>,
8200    /// Users that are members of the project.
8201    pub members: Option<UserConnection>,
8202    /// Project updates associated with the project.
8203    pub project_updates: Option<ProjectUpdateConnection>,
8204    /// Documents associated with the project.
8205    pub documents: Option<DocumentConnection>,
8206    /// Milestones associated with the project.
8207    pub project_milestones: Option<ProjectMilestoneConnection>,
8208    /// Issues associated with the project.
8209    pub issues: Option<IssueConnection>,
8210    /// External links associated with the project.
8211    pub external_links: Option<EntityExternalLinkConnection>,
8212    /// Attachments associated with the project.
8213    pub attachments: Option<ProjectAttachmentConnection>,
8214    /// History entries associated with the project.
8215    pub history: Option<ProjectHistoryConnection>,
8216    /// Labels associated with this project.
8217    pub labels: Option<ProjectLabelConnection>,
8218    /// The overall progress of the project. This is the (completed estimate points + 0.25 * in progress estimate points) / total estimate points.
8219    pub progress: Option<f64>,
8220    /// The overall scope (total estimate points) of the project.
8221    pub scope: Option<f64>,
8222    /// Settings for all integrations associated with that project.
8223    pub integrations_settings: Option<Box<IntegrationsSettings>>,
8224    /// The project's content in markdown format.
8225    pub content: Option<String>,
8226    /// `Internal` The project's content as YJS state.
8227    pub content_state: Option<String>,
8228    /// The content of the project description.
8229    pub document_content: Option<Box<DocumentContent>>,
8230    /// Comments associated with the project overview.
8231    pub comments: Option<CommentConnection>,
8232    /// Relations associated with this project.
8233    pub relations: Option<ProjectRelationConnection>,
8234    /// Inverse relations associated with this project.
8235    pub inverse_relations: Option<ProjectRelationConnection>,
8236    /// Customer needs associated with the project.
8237    pub needs: Option<CustomerNeedConnection>,
8238    /// `DEPRECATED` The type of the state.
8239    pub state: Option<String>,
8240    /// The priority of the project as a label.
8241    pub priority_label: Option<String>,
8242    /// The external services the project is synced with.
8243    pub synced_with: Option<Vec<ExternalEntityInfo>>,
8244}
8245impl GraphQLFields for Project {
8246    type FullType = Self;
8247    fn selection() -> String {
8248        "id createdAt updatedAt archivedAt updateReminderFrequencyInWeeks updateReminderFrequency frequencyResolution updateRemindersDay updateRemindersHour name description slugId icon color projectUpdateRemindersPausedUntilAt startDate startDateResolution targetDate targetDateResolution startedAt completedAt canceledAt autoArchivedAt trashed sortOrder prioritySortOrder priority health healthUpdatedAt issueCountHistory completedIssueCountHistory scopeHistory completedScopeHistory inProgressScopeHistory progressHistory currentProgress slackNewIssue slackIssueComments slackIssueStatuses labelIds url progress scope content contentState state priorityLabel"
8249            .into()
8250    }
8251}
8252/// A generic payload return from entity archive mutations.
8253#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8254#[serde(rename_all = "camelCase", default)]
8255pub struct ProjectArchivePayload {
8256    /// The identifier of the last sync operation.
8257    pub last_sync_id: Option<f64>,
8258    /// Whether the operation was successful.
8259    pub success: Option<bool>,
8260    /// The archived/unarchived entity. Null if entity was deleted.
8261    pub entity: Option<Project>,
8262}
8263impl GraphQLFields for ProjectArchivePayload {
8264    type FullType = Self;
8265    fn selection() -> String {
8266        "lastSyncId success".into()
8267    }
8268}
8269/// An attachment (link, reference, or integration data) associated with a project. Attachments are typically created by integrations and contain metadata for rendering in the client.
8270#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8271#[serde(rename_all = "camelCase", default)]
8272pub struct ProjectAttachment {
8273    /// The unique identifier of the entity.
8274    pub id: Option<String>,
8275    /// The time at which the entity was created.
8276    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
8277    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
8278    /// been updated after creation.
8279    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
8280    /// The time at which the entity was archived. Null if the entity has not been archived.
8281    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
8282    /// Title of the attachment.
8283    pub title: Option<String>,
8284    /// Optional subtitle of the attachment, providing additional context below the title.
8285    pub subtitle: Option<String>,
8286    /// URL of the attachment.
8287    pub url: Option<String>,
8288    /// The creator of the attachment.
8289    pub creator: Option<User>,
8290    /// Custom metadata related to the attachment. Contains user-facing content such as conversation messages or rendered attributes from integrations.
8291    pub metadata: Option<serde_json::Value>,
8292    /// Metadata about the external source which created the attachment, including foreign identifiers used for syncing with external services. Null if the attachment was not created by an integration.
8293    pub source: Option<serde_json::Value>,
8294    /// The source type of the attachment, derived from the source metadata. Returns the integration type that created the attachment (e.g., 'slack', 'github'), or null if not set.
8295    pub source_type: Option<String>,
8296}
8297impl GraphQLFields for ProjectAttachment {
8298    type FullType = Self;
8299    fn selection() -> String {
8300        "id createdAt updatedAt archivedAt title subtitle url metadata source sourceType".into()
8301    }
8302}
8303#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8304#[serde(rename_all = "camelCase", default)]
8305pub struct ProjectAttachmentConnection {
8306    pub edges: Option<Vec<ProjectAttachmentEdge>>,
8307    pub nodes: Option<Vec<ProjectAttachment>>,
8308    pub page_info: Option<PageInfo>,
8309}
8310impl GraphQLFields for ProjectAttachmentConnection {
8311    type FullType = Self;
8312    fn selection() -> String {
8313        "".into()
8314    }
8315}
8316#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8317#[serde(rename_all = "camelCase", default)]
8318pub struct ProjectAttachmentEdge {
8319    pub node: Option<ProjectAttachment>,
8320    /// Used in `before` and `after` args
8321    pub cursor: Option<String>,
8322}
8323impl GraphQLFields for ProjectAttachmentEdge {
8324    type FullType = Self;
8325    fn selection() -> String {
8326        "cursor".into()
8327    }
8328}
8329#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8330#[serde(rename_all = "camelCase", default)]
8331pub struct ProjectConnection {
8332    pub edges: Option<Vec<ProjectEdge>>,
8333    pub nodes: Option<Vec<Project>>,
8334    pub page_info: Option<PageInfo>,
8335}
8336impl GraphQLFields for ProjectConnection {
8337    type FullType = Self;
8338    fn selection() -> String {
8339        "".into()
8340    }
8341}
8342#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8343#[serde(rename_all = "camelCase", default)]
8344pub struct ProjectEdge {
8345    pub node: Option<Project>,
8346    /// Used in `before` and `after` args
8347    pub cursor: Option<String>,
8348}
8349impl GraphQLFields for ProjectEdge {
8350    type FullType = Self;
8351    fn selection() -> String {
8352        "cursor".into()
8353    }
8354}
8355/// The result of a project filter suggestion query.
8356#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8357#[serde(rename_all = "camelCase", default)]
8358pub struct ProjectFilterSuggestionPayload {
8359    /// The json filter that is suggested.
8360    pub filter: Option<serde_json::Value>,
8361    /// The log id of the prompt, that created this filter.
8362    pub log_id: Option<String>,
8363}
8364impl GraphQLFields for ProjectFilterSuggestionPayload {
8365    type FullType = Self;
8366    fn selection() -> String {
8367        "filter logId".into()
8368    }
8369}
8370/// A history record associated with a project. Tracks changes to project properties, status, members, teams, milestones, labels, and relationships over time.
8371#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8372#[serde(rename_all = "camelCase", default)]
8373pub struct ProjectHistory {
8374    /// The unique identifier of the entity.
8375    pub id: Option<String>,
8376    /// The time at which the entity was created.
8377    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
8378    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
8379    /// been updated after creation.
8380    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
8381    /// The time at which the entity was archived. Null if the entity has not been archived.
8382    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
8383    /// The events that happened while recording that history.
8384    pub entries: Option<serde_json::Value>,
8385    /// The project that this history record belongs to.
8386    pub project: Option<Project>,
8387}
8388impl GraphQLFields for ProjectHistory {
8389    type FullType = Self;
8390    fn selection() -> String {
8391        "id createdAt updatedAt archivedAt entries".into()
8392    }
8393}
8394#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8395#[serde(rename_all = "camelCase", default)]
8396pub struct ProjectHistoryConnection {
8397    pub edges: Option<Vec<ProjectHistoryEdge>>,
8398    pub nodes: Option<Vec<ProjectHistory>>,
8399    pub page_info: Option<PageInfo>,
8400}
8401impl GraphQLFields for ProjectHistoryConnection {
8402    type FullType = Self;
8403    fn selection() -> String {
8404        "".into()
8405    }
8406}
8407#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8408#[serde(rename_all = "camelCase", default)]
8409pub struct ProjectHistoryEdge {
8410    pub node: Option<ProjectHistory>,
8411    /// Used in `before` and `after` args
8412    pub cursor: Option<String>,
8413}
8414impl GraphQLFields for ProjectHistoryEdge {
8415    type FullType = Self;
8416    fn selection() -> String {
8417        "cursor".into()
8418    }
8419}
8420/// A label that can be applied to projects for categorization. Project labels are workspace-level and can be organized into groups with a parent-child hierarchy. Only child labels (not group labels) can be directly applied to projects.
8421#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8422#[serde(rename_all = "camelCase", default)]
8423pub struct ProjectLabel {
8424    /// The unique identifier of the entity.
8425    pub id: Option<String>,
8426    /// The time at which the entity was created.
8427    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
8428    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
8429    /// been updated after creation.
8430    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
8431    /// The time at which the entity was archived. Null if the entity has not been archived.
8432    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
8433    /// The label's name.
8434    pub name: Option<String>,
8435    /// The label's description.
8436    pub description: Option<String>,
8437    /// The label's color as a HEX string (e.g., '#EB5757'). Used for visual identification of the label in the UI.
8438    pub color: Option<String>,
8439    /// Whether the label is a group. When true, this label acts as a container for child labels and cannot be directly applied to issues or projects. When false, the label can be directly applied.
8440    pub is_group: Option<bool>,
8441    /// The date when the label was last applied to an issue or project. Null if the label has never been applied.
8442    pub last_applied_at: Option<chrono::DateTime<chrono::Utc>>,
8443    /// `Internal` When the label was retired.
8444    pub retired_at: Option<chrono::DateTime<chrono::Utc>>,
8445    /// The workspace that the project label belongs to.
8446    pub organization: Option<Box<Organization>>,
8447    /// The user who created the label.
8448    pub creator: Option<Box<User>>,
8449    /// The user who retired the label. Retired labels cannot be applied to new projects but remain on existing ones. Null if the label is active.
8450    pub retired_by: Option<Box<User>>,
8451    /// The parent label group. If set, this label is a child within a group. Only one child label from each group can be applied to a project at a time.
8452    pub parent: Option<Box<ProjectLabel>>,
8453    /// Projects associated with the label.
8454    pub projects: Option<ProjectConnection>,
8455    /// Children of the label.
8456    pub children: Option<ProjectLabelConnection>,
8457}
8458impl GraphQLFields for ProjectLabel {
8459    type FullType = Self;
8460    fn selection() -> String {
8461        "id createdAt updatedAt archivedAt name description color isGroup lastAppliedAt retiredAt"
8462            .into()
8463    }
8464}
8465#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8466#[serde(rename_all = "camelCase", default)]
8467pub struct ProjectLabelConnection {
8468    pub edges: Option<Vec<ProjectLabelEdge>>,
8469    pub nodes: Option<Vec<ProjectLabel>>,
8470    pub page_info: Option<PageInfo>,
8471}
8472impl GraphQLFields for ProjectLabelConnection {
8473    type FullType = Self;
8474    fn selection() -> String {
8475        "".into()
8476    }
8477}
8478#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8479#[serde(rename_all = "camelCase", default)]
8480pub struct ProjectLabelEdge {
8481    pub node: Option<ProjectLabel>,
8482    /// Used in `before` and `after` args
8483    pub cursor: Option<String>,
8484}
8485impl GraphQLFields for ProjectLabelEdge {
8486    type FullType = Self;
8487    fn selection() -> String {
8488        "cursor".into()
8489    }
8490}
8491/// The result of a project label mutation.
8492#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8493#[serde(rename_all = "camelCase", default)]
8494pub struct ProjectLabelPayload {
8495    /// The identifier of the last sync operation.
8496    pub last_sync_id: Option<f64>,
8497    /// The label that was created or updated.
8498    pub project_label: Option<ProjectLabel>,
8499    /// Whether the operation was successful.
8500    pub success: Option<bool>,
8501}
8502impl GraphQLFields for ProjectLabelPayload {
8503    type FullType = Self;
8504    fn selection() -> String {
8505        "lastSyncId success".into()
8506    }
8507}
8508/// A milestone within a project. Milestones break a project into phases or target checkpoints, each with its own target date and set of issues. Issues can be assigned to a milestone to track progress toward that checkpoint.
8509#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8510#[serde(rename_all = "camelCase", default)]
8511pub struct ProjectMilestone {
8512    /// The unique identifier of the entity.
8513    pub id: Option<String>,
8514    /// The time at which the entity was created.
8515    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
8516    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
8517    /// been updated after creation.
8518    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
8519    /// The time at which the entity was archived. Null if the entity has not been archived.
8520    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
8521    /// The name of the project milestone.
8522    pub name: Option<String>,
8523    /// The rich-text content of the milestone description. Null if no description has been set.
8524    pub document_content: Option<Box<DocumentContent>>,
8525    /// The planned completion date of the milestone. Null if no target date is set.
8526    pub target_date: Option<chrono::NaiveDate>,
8527    /// The project that this milestone belongs to.
8528    pub project: Option<Box<Project>>,
8529    /// `Internal` The progress history of the milestone, tracking issue completion over time.
8530    pub progress_history: Option<serde_json::Value>,
8531    /// `Internal` The current progress of the milestone, broken down by issue status category.
8532    pub current_progress: Option<serde_json::Value>,
8533    /// The order of the milestone in relation to other milestones within a project.
8534    pub sort_order: Option<f64>,
8535    /// The project milestone's description in markdown format.
8536    pub description: Option<String>,
8537    /// The status of the project milestone.
8538    pub status: Option<ProjectMilestoneStatus>,
8539    /// The progress % of the project milestone.
8540    pub progress: Option<f64>,
8541    /// `Internal` The project milestone's description as YJS state.
8542    pub description_state: Option<String>,
8543    /// Issues associated with the project milestone.
8544    pub issues: Option<IssueConnection>,
8545}
8546impl GraphQLFields for ProjectMilestone {
8547    type FullType = Self;
8548    fn selection() -> String {
8549        "id createdAt updatedAt archivedAt name targetDate progressHistory currentProgress sortOrder description status progress"
8550            .into()
8551    }
8552}
8553#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8554#[serde(rename_all = "camelCase", default)]
8555pub struct ProjectMilestoneConnection {
8556    pub edges: Option<Vec<ProjectMilestoneEdge>>,
8557    pub nodes: Option<Vec<ProjectMilestone>>,
8558    pub page_info: Option<PageInfo>,
8559}
8560impl GraphQLFields for ProjectMilestoneConnection {
8561    type FullType = Self;
8562    fn selection() -> String {
8563        "".into()
8564    }
8565}
8566#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8567#[serde(rename_all = "camelCase", default)]
8568pub struct ProjectMilestoneEdge {
8569    pub node: Option<ProjectMilestone>,
8570    /// Used in `before` and `after` args
8571    pub cursor: Option<String>,
8572}
8573impl GraphQLFields for ProjectMilestoneEdge {
8574    type FullType = Self;
8575    fn selection() -> String {
8576        "cursor".into()
8577    }
8578}
8579#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8580#[serde(rename_all = "camelCase", default)]
8581pub struct ProjectMilestoneMoveIssueToTeam {
8582    /// The issue id in this relationship, you can use * as wildcard if all issues are being moved to the same team
8583    pub issue_id: Option<String>,
8584    /// The team id in this relationship
8585    pub team_id: Option<String>,
8586}
8587impl GraphQLFields for ProjectMilestoneMoveIssueToTeam {
8588    type FullType = Self;
8589    fn selection() -> String {
8590        "issueId teamId".into()
8591    }
8592}
8593/// `Internal` The result of a project milestone move mutation.
8594#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8595#[serde(rename_all = "camelCase", default)]
8596pub struct ProjectMilestoneMovePayload {
8597    /// The identifier of the last sync operation.
8598    pub last_sync_id: Option<f64>,
8599    /// The project milestone that was created or updated.
8600    pub project_milestone: Option<ProjectMilestone>,
8601    /// Whether the operation was successful.
8602    pub success: Option<bool>,
8603    /// A snapshot of the issues that were moved to new teams, if the user selected to do it, containing an array of mappings between an issue and its previous team. Store on the client to use for undoing a previous milestone move.
8604    pub previous_issue_team_ids: Option<Vec<ProjectMilestoneMoveIssueToTeam>>,
8605    /// A snapshot of the project that had new teams added to it, if the user selected to do it, containing an array of mappings between a project and its previous teams. Store on the client to use for undoing a previous milestone move.
8606    pub previous_project_team_ids: Option<ProjectMilestoneMoveProjectTeams>,
8607}
8608impl GraphQLFields for ProjectMilestoneMovePayload {
8609    type FullType = Self;
8610    fn selection() -> String {
8611        "lastSyncId success".into()
8612    }
8613}
8614#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8615#[serde(rename_all = "camelCase", default)]
8616pub struct ProjectMilestoneMoveProjectTeams {
8617    /// The project id
8618    pub project_id: Option<String>,
8619    /// The team ids for the project
8620    pub team_ids: Option<Vec<String>>,
8621}
8622impl GraphQLFields for ProjectMilestoneMoveProjectTeams {
8623    type FullType = Self;
8624    fn selection() -> String {
8625        "projectId teamIds".into()
8626    }
8627}
8628/// The result of a project milestone mutation.
8629#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8630#[serde(rename_all = "camelCase", default)]
8631pub struct ProjectMilestonePayload {
8632    /// The identifier of the last sync operation.
8633    pub last_sync_id: Option<f64>,
8634    /// The project milestone that was created or updated.
8635    pub project_milestone: Option<ProjectMilestone>,
8636    /// Whether the operation was successful.
8637    pub success: Option<bool>,
8638}
8639impl GraphQLFields for ProjectMilestonePayload {
8640    type FullType = Self;
8641    fn selection() -> String {
8642        "lastSyncId success".into()
8643    }
8644}
8645/// A notification related to a project, such as being added as a member or lead, project updates, comments, or mentions on the project or its milestones.
8646#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8647#[serde(rename_all = "camelCase", default)]
8648pub struct ProjectNotification {
8649    /// Related comment ID. Null if the notification is not related to a comment.
8650    pub comment_id: Option<String>,
8651    /// Related parent comment ID. Null if the notification is not related to a comment.
8652    pub parent_comment_id: Option<String>,
8653    /// Name of the reaction emoji related to the notification.
8654    pub reaction_emoji: Option<String>,
8655    /// The unique identifier of the entity.
8656    pub id: Option<String>,
8657    /// The time at which the entity was created.
8658    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
8659    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
8660    /// been updated after creation.
8661    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
8662    /// The time at which the entity was archived. Null if the entity has not been archived.
8663    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
8664    /// Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated.
8665    pub r#type: Option<String>,
8666    /// The user that caused the notification. Null if the notification was triggered by a non-user actor such as an integration, external user, or system event.
8667    pub actor: Option<User>,
8668    /// The external user that caused the notification. Populated when the notification was triggered by an external user (e.g., a commenter from a connected integration like Slack or GitHub) rather than a Linear workspace member.
8669    pub external_user_actor: Option<ExternalUser>,
8670    /// The recipient user of this notification.
8671    pub user: Option<User>,
8672    /// The time at which the user marked the notification as read. Null if the notification is unread.
8673    pub read_at: Option<chrono::DateTime<chrono::Utc>>,
8674    /// The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent.
8675    pub emailed_at: Option<chrono::DateTime<chrono::Utc>>,
8676    /// The time until which a notification is snoozed. After this time, the notification reappears in the user's inbox. Null if the notification is not currently snoozed.
8677    pub snoozed_until_at: Option<chrono::DateTime<chrono::Utc>>,
8678    /// The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed.
8679    pub unsnoozed_at: Option<chrono::DateTime<chrono::Utc>>,
8680    /// The category of the notification.
8681    pub category: Option<NotificationCategory>,
8682    /// `Internal` URL to the target of the notification.
8683    pub url: Option<String>,
8684    /// `Internal` Inbox URL for the notification.
8685    pub inbox_url: Option<String>,
8686    /// `Internal` Notification title.
8687    pub title: Option<String>,
8688    /// `Internal` Notification subtitle.
8689    pub subtitle: Option<String>,
8690    /// `Internal` If notification actor was Linear.
8691    pub is_linear_actor: Option<bool>,
8692    /// `Internal` Notification avatar URL.
8693    pub actor_avatar_url: Option<String>,
8694    /// `Internal` Notification actor initials if avatar is not available.
8695    pub actor_initials: Option<String>,
8696    /// `Internal` Notification actor initials if avatar is not available.
8697    pub actor_avatar_color: Option<String>,
8698    /// `Internal` Issue's status type for issue notifications.
8699    pub issue_status_type: Option<String>,
8700    /// `Internal` Project update health for new updates.
8701    pub project_update_health: Option<String>,
8702    /// `Internal` Initiative update health for new updates.
8703    pub initiative_update_health: Option<String>,
8704    /// `Internal` Notifications with the same grouping key will be grouped together in the UI.
8705    pub grouping_key: Option<String>,
8706    /// `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`.
8707    pub grouping_priority: Option<f64>,
8708    /// The bot that caused the notification.
8709    pub bot_actor: Option<ActorBot>,
8710    /// Related project ID.
8711    pub project_id: Option<String>,
8712    /// Related project milestone ID.
8713    pub project_milestone_id: Option<String>,
8714    /// Related project update ID.
8715    pub project_update_id: Option<String>,
8716    /// The project related to the notification.
8717    pub project: Option<Project>,
8718    /// The document related to the notification.
8719    pub document: Option<Document>,
8720    /// The project update related to the notification.
8721    pub project_update: Option<ProjectUpdate>,
8722    /// The comment related to the notification.
8723    pub comment: Option<Comment>,
8724    /// The parent comment related to the notification, if a notification is a reply comment notification.
8725    pub parent_comment: Option<Comment>,
8726}
8727impl GraphQLFields for ProjectNotification {
8728    type FullType = Self;
8729    fn selection() -> String {
8730        "commentId parentCommentId reactionEmoji id createdAt updatedAt archivedAt type readAt emailedAt snoozedUntilAt unsnoozedAt category url inboxUrl title subtitle isLinearActor actorAvatarUrl actorInitials actorAvatarColor issueStatusType projectUpdateHealth initiativeUpdateHealth groupingKey groupingPriority projectId projectMilestoneId projectUpdateId"
8731            .into()
8732    }
8733}
8734/// A notification subscription scoped to a specific project. The subscriber receives notifications for events related to this project, such as updates, comments, and membership changes.
8735#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8736#[serde(rename_all = "camelCase", default)]
8737pub struct ProjectNotificationSubscription {
8738    /// The unique identifier of the entity.
8739    pub id: Option<String>,
8740    /// The time at which the entity was created.
8741    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
8742    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
8743    /// been updated after creation.
8744    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
8745    /// The time at which the entity was archived. Null if the entity has not been archived.
8746    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
8747    /// The user who will receive notifications from this subscription.
8748    pub subscriber: Option<User>,
8749    /// The customer that this notification subscription is scoped to. Null if the subscription targets a different entity type.
8750    pub customer: Option<Customer>,
8751    /// The custom view that this notification subscription is scoped to. Null if the subscription targets a different entity type.
8752    pub custom_view: Option<CustomView>,
8753    /// The cycle that this notification subscription is scoped to. Null if the subscription targets a different entity type.
8754    pub cycle: Option<Cycle>,
8755    /// The issue label that this notification subscription is scoped to. Null if the subscription targets a different entity type.
8756    pub label: Option<IssueLabel>,
8757    /// The project subscribed to.
8758    pub project: Option<Project>,
8759    /// The initiative that this notification subscription is scoped to. Null if the subscription targets a different entity type.
8760    pub initiative: Option<Initiative>,
8761    /// The team that this notification subscription is scoped to. Null if the subscription targets a different entity type.
8762    pub team: Option<Team>,
8763    /// The user that this notification subscription is scoped to, for user-specific view subscriptions. Null if the subscription targets a different entity type.
8764    pub user: Option<User>,
8765    /// The type of contextual view (e.g., active issues, backlog) that further scopes a team notification subscription. Null if the subscription is not associated with a specific view type.
8766    pub context_view_type: Option<ContextViewType>,
8767    /// The type of user-specific view that further scopes a user notification subscription. Null if the subscription is not associated with a user view type.
8768    pub user_context_view_type: Option<UserContextViewType>,
8769    /// Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists.
8770    pub active: Option<bool>,
8771    /// The notification event types that this subscription will deliver to the subscriber.
8772    pub notification_subscription_types: Option<Vec<String>>,
8773}
8774impl GraphQLFields for ProjectNotificationSubscription {
8775    type FullType = Self;
8776    fn selection() -> String {
8777        "id createdAt updatedAt archivedAt contextViewType userContextViewType active notificationSubscriptionTypes"
8778            .into()
8779    }
8780}
8781/// The result of a project mutation.
8782#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8783#[serde(rename_all = "camelCase", default)]
8784pub struct ProjectPayload {
8785    /// The identifier of the last sync operation.
8786    pub last_sync_id: Option<f64>,
8787    /// The project that was created or updated.
8788    pub project: Option<Project>,
8789    /// Whether the operation was successful.
8790    pub success: Option<bool>,
8791}
8792impl GraphQLFields for ProjectPayload {
8793    type FullType = Self;
8794    fn selection() -> String {
8795        "lastSyncId success".into()
8796    }
8797}
8798/// A dependency relation between two projects. Relations can optionally be anchored to specific milestones within each project, allowing fine-grained dependency tracking.
8799#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8800#[serde(rename_all = "camelCase", default)]
8801pub struct ProjectRelation {
8802    /// The unique identifier of the entity.
8803    pub id: Option<String>,
8804    /// The time at which the entity was created.
8805    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
8806    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
8807    /// been updated after creation.
8808    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
8809    /// The time at which the entity was archived. Null if the entity has not been archived.
8810    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
8811    /// The type of dependency relationship from the project to the related project (e.g., blocks).
8812    pub r#type: Option<String>,
8813    /// The source project in the dependency relation.
8814    pub project: Option<Project>,
8815    /// The specific milestone within the source project that the relation is anchored to. Null if the relation applies to the project as a whole.
8816    pub project_milestone: Option<ProjectMilestone>,
8817    /// The type of anchor on the source project end of the relation, indicating whether it is anchored to the project itself or a specific milestone.
8818    pub anchor_type: Option<String>,
8819    /// The target project in the dependency relation.
8820    pub related_project: Option<Project>,
8821    /// The specific milestone within the target project that the relation is anchored to. Null if the relation applies to the target project as a whole.
8822    pub related_project_milestone: Option<ProjectMilestone>,
8823    /// The type of anchor on the target project end of the relation, indicating whether it is anchored to the project itself or a specific milestone.
8824    pub related_anchor_type: Option<String>,
8825    /// The user who last created or modified the relation. Null if the user has been deleted.
8826    pub user: Option<User>,
8827}
8828impl GraphQLFields for ProjectRelation {
8829    type FullType = Self;
8830    fn selection() -> String {
8831        "id createdAt updatedAt archivedAt type anchorType relatedAnchorType".into()
8832    }
8833}
8834#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8835#[serde(rename_all = "camelCase", default)]
8836pub struct ProjectRelationConnection {
8837    pub edges: Option<Vec<ProjectRelationEdge>>,
8838    pub nodes: Option<Vec<ProjectRelation>>,
8839    pub page_info: Option<PageInfo>,
8840}
8841impl GraphQLFields for ProjectRelationConnection {
8842    type FullType = Self;
8843    fn selection() -> String {
8844        "".into()
8845    }
8846}
8847#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8848#[serde(rename_all = "camelCase", default)]
8849pub struct ProjectRelationEdge {
8850    pub node: Option<ProjectRelation>,
8851    /// Used in `before` and `after` args
8852    pub cursor: Option<String>,
8853}
8854impl GraphQLFields for ProjectRelationEdge {
8855    type FullType = Self;
8856    fn selection() -> String {
8857        "cursor".into()
8858    }
8859}
8860/// The result of a project relation mutation.
8861#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8862#[serde(rename_all = "camelCase", default)]
8863pub struct ProjectRelationPayload {
8864    /// The identifier of the last sync operation.
8865    pub last_sync_id: Option<f64>,
8866    /// The project relation that was created or updated.
8867    pub project_relation: Option<ProjectRelation>,
8868    /// Whether the operation was successful.
8869    pub success: Option<bool>,
8870}
8871impl GraphQLFields for ProjectRelationPayload {
8872    type FullType = Self;
8873    fn selection() -> String {
8874        "lastSyncId success".into()
8875    }
8876}
8877#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8878#[serde(rename_all = "camelCase", default)]
8879pub struct ProjectSearchPayload {
8880    pub edges: Option<Vec<ProjectSearchResultEdge>>,
8881    pub nodes: Option<Vec<ProjectSearchResult>>,
8882    pub page_info: Option<PageInfo>,
8883    /// Archived entities matching the search term along with all their dependencies, serialized for the client sync engine.
8884    pub archive_payload: Option<ArchiveResponse>,
8885    /// Total number of matching results before pagination is applied.
8886    pub total_count: Option<f64>,
8887}
8888impl GraphQLFields for ProjectSearchPayload {
8889    type FullType = Self;
8890    fn selection() -> String {
8891        "totalCount".into()
8892    }
8893}
8894#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8895#[serde(rename_all = "camelCase", default)]
8896pub struct ProjectSearchResult {
8897    /// The unique identifier of the entity.
8898    pub id: Option<String>,
8899    /// The time at which the entity was created.
8900    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
8901    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
8902    /// been updated after creation.
8903    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
8904    /// The time at which the entity was archived. Null if the entity has not been archived.
8905    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
8906    /// The n-weekly frequency at which to prompt for updates. When not set, reminders are inherited from workspace.
8907    pub update_reminder_frequency_in_weeks: Option<f64>,
8908    /// The frequency at which to prompt for updates. When not set, reminders are inherited from workspace.
8909    pub update_reminder_frequency: Option<f64>,
8910    /// The resolution of the reminder frequency.
8911    pub frequency_resolution: Option<FrequencyResolutionType>,
8912    /// The day at which to prompt for updates.
8913    pub update_reminders_day: Option<Day>,
8914    /// The hour at which to prompt for updates.
8915    pub update_reminders_hour: Option<f64>,
8916    /// The name of the project.
8917    pub name: Option<String>,
8918    /// The short description of the project.
8919    pub description: Option<String>,
8920    /// The project's unique URL slug, used to construct human-readable URLs.
8921    pub slug_id: Option<String>,
8922    /// The icon of the project. Can be an emoji or a decorative icon type.
8923    pub icon: Option<String>,
8924    /// The project's color as a HEX string. Used in the UI to visually identify the project.
8925    pub color: Option<String>,
8926    /// The current project status. Defines the project's position in its lifecycle (e.g., backlog, planned, started, paused, completed, canceled).
8927    pub status: Option<ProjectStatus>,
8928    /// The user who created the project.
8929    pub creator: Option<User>,
8930    /// The user who leads the project. The project lead is typically responsible for posting status updates and driving the project to completion. Null if no lead is assigned.
8931    pub lead: Option<User>,
8932    /// `Internal` Facets associated with the project, used for filtering and categorization.
8933    pub facets: Option<Vec<Facet>>,
8934    /// The time until which project update reminders are paused. When set, no update reminders will be sent for this project until this date passes. Null means reminders are active.
8935    pub project_update_reminders_paused_until_at: Option<chrono::DateTime<chrono::Utc>>,
8936    /// The estimated start date of the project. Null if no start date is set.
8937    pub start_date: Option<chrono::NaiveDate>,
8938    /// The resolution of the project's start date, indicating whether it refers to a specific month, quarter, half-year, or year.
8939    pub start_date_resolution: Option<DateResolutionType>,
8940    /// The estimated completion date of the project. Null if no target date is set.
8941    pub target_date: Option<chrono::NaiveDate>,
8942    /// The resolution of the project's estimated completion date, indicating whether it refers to a specific month, quarter, half-year, or year.
8943    pub target_date_resolution: Option<DateResolutionType>,
8944    /// The time at which the project was moved into a started status. Null if the project has not been started.
8945    pub started_at: Option<chrono::DateTime<chrono::Utc>>,
8946    /// The time at which the project was moved into a completed status. Null if the project has not been completed.
8947    pub completed_at: Option<chrono::DateTime<chrono::Utc>>,
8948    /// The time at which the project was moved into a canceled status. Null if the project has not been canceled.
8949    pub canceled_at: Option<chrono::DateTime<chrono::Utc>>,
8950    /// The time at which the project was automatically archived by the auto-pruning process. Null if the project has not been auto-archived.
8951    pub auto_archived_at: Option<chrono::DateTime<chrono::Utc>>,
8952    /// A flag that indicates whether the project is in the trash bin.
8953    pub trashed: Option<bool>,
8954    /// The sort order for the project within the workspace. Used for manual ordering in list views.
8955    pub sort_order: Option<f64>,
8956    /// The sort order for the project within the workspace when ordered by priority.
8957    pub priority_sort_order: Option<f64>,
8958    /// The issue that was converted into this project. Null if the project was not created from an issue.
8959    pub converted_from_issue: Option<Issue>,
8960    /// The last template that was applied to this project.
8961    pub last_applied_template: Option<Template>,
8962    /// The priority of the project. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low.
8963    pub priority: Option<i64>,
8964    /// The most recent status update posted for this project. Null if no updates have been posted.
8965    pub last_update: Option<ProjectUpdate>,
8966    /// The overall health of the project, derived from the most recent project update. Possible values are onTrack, atRisk, or offTrack. Null if no health has been reported.
8967    pub health: Option<ProjectUpdateHealthType>,
8968    /// The time at which the project health was last updated, typically when a new project update is posted. Null if health has never been set.
8969    pub health_updated_at: Option<chrono::DateTime<chrono::Utc>>,
8970    /// The total number of issues in the project at the end of each week since project creation. Each entry represents one week.
8971    pub issue_count_history: Option<Vec<f64>>,
8972    /// The number of completed issues in the project at the end of each week since project creation. Each entry represents one week.
8973    pub completed_issue_count_history: Option<Vec<f64>>,
8974    /// The total scope (estimation points) of the project at the end of each week since project creation. Each entry represents one week.
8975    pub scope_history: Option<Vec<f64>>,
8976    /// The number of completed estimation points at the end of each week since project creation. Each entry represents one week.
8977    pub completed_scope_history: Option<Vec<f64>>,
8978    /// The number of in-progress estimation points at the end of each week since project creation. Each entry represents one week.
8979    pub in_progress_scope_history: Option<Vec<f64>>,
8980    /// `INTERNAL` The progress history of the project, tracking issue completion over time.
8981    pub progress_history: Option<serde_json::Value>,
8982    /// `INTERNAL` The current progress of the project, broken down by issue status category.
8983    pub current_progress: Option<serde_json::Value>,
8984    /// Whether to send new issue notifications to Slack.
8985    pub slack_new_issue: Option<bool>,
8986    /// Whether to send new issue comment notifications to Slack.
8987    pub slack_issue_comments: Option<bool>,
8988    /// Whether to send new issue status updates to Slack.
8989    pub slack_issue_statuses: Option<bool>,
8990    /// The IDs of the project labels associated with this project.
8991    pub label_ids: Option<Vec<String>>,
8992    /// The user's favorite associated with this project.
8993    pub favorite: Option<Favorite>,
8994    /// Project URL.
8995    pub url: Option<String>,
8996    /// Initiatives that this project belongs to.
8997    pub initiatives: Option<InitiativeConnection>,
8998    /// Associations of this project to parent initiatives.
8999    pub initiative_to_projects: Option<InitiativeToProjectConnection>,
9000    /// Teams associated with this project.
9001    pub teams: Option<TeamConnection>,
9002    /// Users that are members of the project.
9003    pub members: Option<UserConnection>,
9004    /// Project updates associated with the project.
9005    pub project_updates: Option<ProjectUpdateConnection>,
9006    /// Documents associated with the project.
9007    pub documents: Option<DocumentConnection>,
9008    /// Milestones associated with the project.
9009    pub project_milestones: Option<ProjectMilestoneConnection>,
9010    /// Issues associated with the project.
9011    pub issues: Option<IssueConnection>,
9012    /// External links associated with the project.
9013    pub external_links: Option<EntityExternalLinkConnection>,
9014    /// Attachments associated with the project.
9015    pub attachments: Option<ProjectAttachmentConnection>,
9016    /// History entries associated with the project.
9017    pub history: Option<ProjectHistoryConnection>,
9018    /// Labels associated with this project.
9019    pub labels: Option<ProjectLabelConnection>,
9020    /// The overall progress of the project. This is the (completed estimate points + 0.25 * in progress estimate points) / total estimate points.
9021    pub progress: Option<f64>,
9022    /// The overall scope (total estimate points) of the project.
9023    pub scope: Option<f64>,
9024    /// Settings for all integrations associated with that project.
9025    pub integrations_settings: Option<IntegrationsSettings>,
9026    /// The project's content in markdown format.
9027    pub content: Option<String>,
9028    /// `Internal` The project's content as YJS state.
9029    pub content_state: Option<String>,
9030    /// The content of the project description.
9031    pub document_content: Option<DocumentContent>,
9032    /// Comments associated with the project overview.
9033    pub comments: Option<CommentConnection>,
9034    /// Relations associated with this project.
9035    pub relations: Option<ProjectRelationConnection>,
9036    /// Inverse relations associated with this project.
9037    pub inverse_relations: Option<ProjectRelationConnection>,
9038    /// Customer needs associated with the project.
9039    pub needs: Option<CustomerNeedConnection>,
9040    /// `DEPRECATED` The type of the state.
9041    pub state: Option<String>,
9042    /// The priority of the project as a label.
9043    pub priority_label: Option<String>,
9044    /// The external services the project is synced with.
9045    pub synced_with: Option<Vec<ExternalEntityInfo>>,
9046    /// Metadata related to search result.
9047    pub metadata: Option<serde_json::Value>,
9048}
9049impl GraphQLFields for ProjectSearchResult {
9050    type FullType = Self;
9051    fn selection() -> String {
9052        "id createdAt updatedAt archivedAt updateReminderFrequencyInWeeks updateReminderFrequency frequencyResolution updateRemindersDay updateRemindersHour name description slugId icon color projectUpdateRemindersPausedUntilAt startDate startDateResolution targetDate targetDateResolution startedAt completedAt canceledAt autoArchivedAt trashed sortOrder prioritySortOrder priority health healthUpdatedAt issueCountHistory completedIssueCountHistory scopeHistory completedScopeHistory inProgressScopeHistory progressHistory currentProgress slackNewIssue slackIssueComments slackIssueStatuses labelIds url progress scope content contentState state priorityLabel metadata"
9053            .into()
9054    }
9055}
9056#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9057#[serde(rename_all = "camelCase", default)]
9058pub struct ProjectSearchResultEdge {
9059    pub node: Option<ProjectSearchResult>,
9060    /// Used in `before` and `after` args
9061    pub cursor: Option<String>,
9062}
9063impl GraphQLFields for ProjectSearchResultEdge {
9064    type FullType = Self;
9065    fn selection() -> String {
9066        "cursor".into()
9067    }
9068}
9069/// A custom project status within a workspace. Statuses are grouped by type (backlog, planned, started, paused, completed, canceled) and define the lifecycle stages a project can move through. Each workspace can customize the names and colors of its project statuses.
9070#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9071#[serde(rename_all = "camelCase", default)]
9072pub struct ProjectStatus {
9073    /// The unique identifier of the entity.
9074    pub id: Option<String>,
9075    /// The time at which the entity was created.
9076    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
9077    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
9078    /// been updated after creation.
9079    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
9080    /// The time at which the entity was archived. Null if the entity has not been archived.
9081    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
9082    /// The name of the status.
9083    pub name: Option<String>,
9084    /// The color of the status as a HEX string, used for display in the UI.
9085    pub color: Option<String>,
9086    /// Description of the status.
9087    pub description: Option<String>,
9088    /// The position of the status within its type group in the workspace's project flow. Used for ordering statuses of the same type.
9089    pub position: Option<f64>,
9090    /// The category type of the project status (e.g., backlog, planned, started, paused, completed, canceled). Determines the status's behavior and position in the project lifecycle.
9091    pub r#type: Option<ProjectStatusType>,
9092    /// Whether a project can remain in this status indefinitely. When false, projects in this status may trigger reminders or auto-archiving after a period of inactivity.
9093    pub indefinite: Option<bool>,
9094}
9095impl GraphQLFields for ProjectStatus {
9096    type FullType = Self;
9097    fn selection() -> String {
9098        "id createdAt updatedAt archivedAt name color description position type indefinite".into()
9099    }
9100}
9101/// A generic payload return from entity archive mutations.
9102#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9103#[serde(rename_all = "camelCase", default)]
9104pub struct ProjectStatusArchivePayload {
9105    /// The identifier of the last sync operation.
9106    pub last_sync_id: Option<f64>,
9107    /// Whether the operation was successful.
9108    pub success: Option<bool>,
9109    /// The archived/unarchived entity. Null if entity was deleted.
9110    pub entity: Option<ProjectStatus>,
9111}
9112impl GraphQLFields for ProjectStatusArchivePayload {
9113    type FullType = Self;
9114    fn selection() -> String {
9115        "lastSyncId success".into()
9116    }
9117}
9118#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9119#[serde(rename_all = "camelCase", default)]
9120pub struct ProjectStatusConnection {
9121    pub edges: Option<Vec<ProjectStatusEdge>>,
9122    pub nodes: Option<Vec<ProjectStatus>>,
9123    pub page_info: Option<PageInfo>,
9124}
9125impl GraphQLFields for ProjectStatusConnection {
9126    type FullType = Self;
9127    fn selection() -> String {
9128        "".into()
9129    }
9130}
9131/// The count of projects using a specific project status.
9132#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9133#[serde(rename_all = "camelCase", default)]
9134pub struct ProjectStatusCountPayload {
9135    /// Total number of projects using this project status.
9136    pub count: Option<f64>,
9137    /// Total number of projects using this project status that are not visible to the user because they are in a private team.
9138    pub private_count: Option<f64>,
9139    /// Total number of projects using this project status that are not visible to the user because they are in an archived team.
9140    pub archived_team_count: Option<f64>,
9141}
9142impl GraphQLFields for ProjectStatusCountPayload {
9143    type FullType = Self;
9144    fn selection() -> String {
9145        "count privateCount archivedTeamCount".into()
9146    }
9147}
9148#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9149#[serde(rename_all = "camelCase", default)]
9150pub struct ProjectStatusEdge {
9151    pub node: Option<ProjectStatus>,
9152    /// Used in `before` and `after` args
9153    pub cursor: Option<String>,
9154}
9155impl GraphQLFields for ProjectStatusEdge {
9156    type FullType = Self;
9157    fn selection() -> String {
9158        "cursor".into()
9159    }
9160}
9161/// The result of a project status mutation.
9162#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9163#[serde(rename_all = "camelCase", default)]
9164pub struct ProjectStatusPayload {
9165    /// The identifier of the last sync operation.
9166    pub last_sync_id: Option<f64>,
9167    /// The project status that was created or updated.
9168    pub status: Option<ProjectStatus>,
9169    /// Whether the operation was successful.
9170    pub success: Option<bool>,
9171}
9172impl GraphQLFields for ProjectStatusPayload {
9173    type FullType = Self;
9174    fn selection() -> String {
9175        "lastSyncId success".into()
9176    }
9177}
9178/// A status update posted to a project. Project updates communicate progress, health, and blockers to stakeholders. Each update captures the project's health at the time of writing and includes a rich-text body with the update content.
9179#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9180#[serde(rename_all = "camelCase", default)]
9181pub struct ProjectUpdate {
9182    /// The unique identifier of the entity.
9183    pub id: Option<String>,
9184    /// The time at which the entity was created.
9185    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
9186    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
9187    /// been updated after creation.
9188    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
9189    /// The time at which the entity was archived. Null if the entity has not been archived.
9190    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
9191    /// The update content in markdown format.
9192    pub body: Option<String>,
9193    /// The time the update was edited.
9194    pub edited_at: Option<chrono::DateTime<chrono::Utc>>,
9195    /// Emoji reaction summary, grouped by emoji type.
9196    pub reaction_data: Option<serde_json::Value>,
9197    /// `Internal` The content of the update as a Prosemirror document.
9198    pub body_data: Option<String>,
9199    /// The update's unique URL slug.
9200    pub slug_id: Option<String>,
9201    /// The project that this status update was posted to.
9202    pub project: Option<Box<Project>>,
9203    /// The health of the project at the time this update was posted. Possible values are onTrack, atRisk, or offTrack.
9204    pub health: Option<ProjectUpdateHealthType>,
9205    /// The user who wrote the update.
9206    pub user: Option<Box<User>>,
9207    /// `Internal` A snapshot of project properties at the time the update was posted, including team, milestone, and issue statistics. Used to compute diffs between consecutive updates.
9208    pub info_snapshot: Option<serde_json::Value>,
9209    /// Whether the diff between this update and the previous one should be hidden in the UI.
9210    pub is_diff_hidden: Option<bool>,
9211    /// The URL to the project update.
9212    pub url: Option<String>,
9213    /// Whether the project update is stale.
9214    pub is_stale: Option<bool>,
9215    /// The diff between the current update and the previous one.
9216    pub diff: Option<serde_json::Value>,
9217    /// The diff between the current update and the previous one, formatted as markdown.
9218    pub diff_markdown: Option<String>,
9219    /// Reactions associated with the project update.
9220    pub reactions: Option<Vec<Reaction>>,
9221    /// Comments associated with the project update.
9222    pub comments: Option<CommentConnection>,
9223    /// Number of comments associated with the project update.
9224    pub comment_count: Option<i64>,
9225}
9226impl GraphQLFields for ProjectUpdate {
9227    type FullType = Self;
9228    fn selection() -> String {
9229        "id createdAt updatedAt archivedAt body editedAt reactionData bodyData slugId health infoSnapshot isDiffHidden url isStale diff diffMarkdown commentCount"
9230            .into()
9231    }
9232}
9233/// A generic payload return from entity archive mutations.
9234#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9235#[serde(rename_all = "camelCase", default)]
9236pub struct ProjectUpdateArchivePayload {
9237    /// The identifier of the last sync operation.
9238    pub last_sync_id: Option<f64>,
9239    /// Whether the operation was successful.
9240    pub success: Option<bool>,
9241    /// The archived/unarchived entity. Null if entity was deleted.
9242    pub entity: Option<ProjectUpdate>,
9243}
9244impl GraphQLFields for ProjectUpdateArchivePayload {
9245    type FullType = Self;
9246    fn selection() -> String {
9247        "lastSyncId success".into()
9248    }
9249}
9250#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9251#[serde(rename_all = "camelCase", default)]
9252pub struct ProjectUpdateConnection {
9253    pub edges: Option<Vec<ProjectUpdateEdge>>,
9254    pub nodes: Option<Vec<ProjectUpdate>>,
9255    pub page_info: Option<PageInfo>,
9256}
9257impl GraphQLFields for ProjectUpdateConnection {
9258    type FullType = Self;
9259    fn selection() -> String {
9260        "".into()
9261    }
9262}
9263#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9264#[serde(rename_all = "camelCase", default)]
9265pub struct ProjectUpdateEdge {
9266    pub node: Option<ProjectUpdate>,
9267    /// Used in `before` and `after` args
9268    pub cursor: Option<String>,
9269}
9270impl GraphQLFields for ProjectUpdateEdge {
9271    type FullType = Self;
9272    fn selection() -> String {
9273        "cursor".into()
9274    }
9275}
9276/// The result of a project update mutation.
9277#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9278#[serde(rename_all = "camelCase", default)]
9279pub struct ProjectUpdatePayload {
9280    /// The identifier of the last sync operation.
9281    pub last_sync_id: Option<f64>,
9282    /// The project update that was created or updated.
9283    pub project_update: Option<ProjectUpdate>,
9284    /// Whether the operation was successful.
9285    pub success: Option<bool>,
9286}
9287impl GraphQLFields for ProjectUpdatePayload {
9288    type FullType = Self;
9289    fn selection() -> String {
9290        "lastSyncId success".into()
9291    }
9292}
9293/// The result of a project update reminder mutation.
9294#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9295#[serde(rename_all = "camelCase", default)]
9296pub struct ProjectUpdateReminderPayload {
9297    /// The identifier of the last sync operation.
9298    pub last_sync_id: Option<f64>,
9299    /// Whether the operation was successful.
9300    pub success: Option<bool>,
9301}
9302impl GraphQLFields for ProjectUpdateReminderPayload {
9303    type FullType = Self;
9304    fn selection() -> String {
9305        "lastSyncId success".into()
9306    }
9307}
9308/// `Internal` A pull or merge request from a connected version control system (GitHub or GitLab). Pull requests are automatically linked to Linear issues via branch names or commit messages containing issue identifiers. They track the full lifecycle including status, reviewers, checks, and merge state, and are synced bidirectionally with the hosting provider.
9309#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9310#[serde(rename_all = "camelCase", default)]
9311pub struct PullRequest {
9312    /// The unique identifier of the entity.
9313    pub id: Option<String>,
9314    /// The time at which the entity was created.
9315    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
9316    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
9317    /// been updated after creation.
9318    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
9319    /// The time at which the entity was archived. Null if the entity has not been archived.
9320    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
9321    /// The pull request's unique URL slug, used to construct human-readable URLs within the Linear app.
9322    pub slug_id: Option<String>,
9323    /// The title of the pull request.
9324    pub title: Option<String>,
9325    /// The pull request number as assigned by the hosting provider (e.g., #123 on GitHub). Unique within a repository.
9326    pub number: Option<f64>,
9327    /// The source (head) branch of the pull request that contains the proposed changes.
9328    pub source_branch: Option<String>,
9329    /// The target (base) branch that the pull request will be merged into.
9330    pub target_branch: Option<String>,
9331    /// The Git SHA of the latest commit on the source branch. Updated as new commits are pushed. Null if not yet synced.
9332    pub head_sha: Option<String>,
9333    /// The Git SHA of the base commit on the target branch that the pull request is compared against. Null if not yet synced.
9334    pub base_sha: Option<String>,
9335    /// The URL of the pull request on the hosting provider (e.g., a GitHub or GitLab URL).
9336    pub url: Option<String>,
9337    /// The current status of the pull request (open, closed, merged, or draft). Synced from the hosting provider.
9338    pub status: Option<PullRequestStatus>,
9339    /// Merge settings and allowed merge methods for this pull request's repository. Null if the settings have not been synced from the provider.
9340    pub merge_settings: Option<PullRequestMergeSettings>,
9341    /// The merge commit created when the pull request was merged. Null if the pull request has not been merged or if the merge commit data is not available.
9342    pub merge_commit: Option<PullRequestCommit>,
9343    /// `Internal` The CI/CD checks and status checks associated with the pull request, synced from the hosting provider.
9344    pub checks: Option<Vec<PullRequestCheck>>,
9345    /// `ALPHA` The commits included in the pull request, synced from the hosting provider. Includes metadata such as SHA, message, diff stats, and author information.
9346    pub commits: Option<Vec<PullRequestCommit>>,
9347    /// `Internal` The Linear user who created the pull request. Null if the creator is an external user not mapped to a Linear account, or if the creator's account has been deleted.
9348    pub creator: Option<Box<User>>,
9349}
9350impl GraphQLFields for PullRequest {
9351    type FullType = Self;
9352    fn selection() -> String {
9353        "id createdAt updatedAt archivedAt slugId title number sourceBranch targetBranch headSha baseSha url status"
9354            .into()
9355    }
9356}
9357/// `ALPHA` A CI/CD check or status check associated with a pull request (e.g., a GitHub Actions workflow run or a required status check).
9358#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9359#[serde(rename_all = "camelCase", default)]
9360pub struct PullRequestCheck {
9361    /// The name of the check.
9362    pub name: Option<String>,
9363    /// The name of the CI workflow that triggered the check (e.g., 'CI' or 'Build and Test'). Null if the check is not part of a named workflow.
9364    pub workflow_name: Option<String>,
9365    /// The status of the check.
9366    pub status: Option<String>,
9367    /// The URL to view the check details on the hosting provider. Null if no URL is available.
9368    pub url: Option<String>,
9369    /// Whether this check is required to pass before the pull request can be merged. Null if the required status is unknown.
9370    pub is_required: Option<bool>,
9371    /// How the check should be opened in the client.
9372    pub presentation: Option<PullRequestCheckPresentation>,
9373    /// The date and time when the check started running. Null if the check has not started yet.
9374    pub started_at: Option<chrono::DateTime<chrono::Utc>>,
9375    /// The date and time when the check finished running. Null if the check has not completed yet.
9376    pub completed_at: Option<chrono::DateTime<chrono::Utc>>,
9377}
9378impl GraphQLFields for PullRequestCheck {
9379    type FullType = Self;
9380    fn selection() -> String {
9381        "name workflowName status url isRequired presentation startedAt completedAt".into()
9382    }
9383}
9384/// `ALPHA` A Git commit associated with a pull request, including metadata about the commit's content and authors.
9385#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9386#[serde(rename_all = "camelCase", default)]
9387pub struct PullRequestCommit {
9388    /// The Git commit SHA.
9389    pub sha: Option<String>,
9390    /// The full commit message.
9391    pub message: Option<String>,
9392    /// The timestamp when the commit was committed, as an ISO 8601 string.
9393    pub committed_at: Option<String>,
9394    /// Number of additions in this commit.
9395    pub additions: Option<f64>,
9396    /// Number of deletions in this commit.
9397    pub deletions: Option<f64>,
9398    /// The number of files changed in this commit. Null if the hosting provider did not include this information.
9399    pub changed_files: Option<f64>,
9400    /// Whether this commit is a merge commit (has multiple parents). Merge commits are typically filtered out when counting diff stats.
9401    pub is_merge_commit: Option<bool>,
9402    /// Linear user IDs for commit authors (includes co-authors).
9403    pub author_user_ids: Option<Vec<String>>,
9404    /// External user IDs for commit authors (includes co-authors).
9405    pub author_external_user_ids: Option<Vec<String>>,
9406}
9407impl GraphQLFields for PullRequestCommit {
9408    type FullType = Self;
9409    fn selection() -> String {
9410        "sha message committedAt additions deletions changedFiles isMergeCommit authorUserIds authorExternalUserIds"
9411            .into()
9412    }
9413}
9414/// `Internal` Merge settings and capabilities for a pull request's repository, including which merge methods are allowed and whether features like merge queues and auto-merge are enabled.
9415#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9416#[serde(rename_all = "camelCase", default)]
9417pub struct PullRequestMergeSettings {
9418    /// Whether a merge queue is enabled for pull requests in this repository. When enabled, merges go through an ordered queue rather than being merged directly.
9419    pub is_merge_queue_enabled: Option<bool>,
9420    /// Whether squash merge is allowed for this pull request's repository.
9421    pub squash_merge_allowed: Option<bool>,
9422    /// Whether auto-merge is allowed for the PR's repository.
9423    pub auto_merge_allowed: Option<bool>,
9424    /// Whether rebase merge is allowed for pull requests PR's repository.
9425    pub rebase_merge_allowed: Option<bool>,
9426    /// Whether merge commits are allowed for pull requests PR's repository.
9427    pub merge_commit_allowed: Option<bool>,
9428    /// Whether the branch will be deleted when the pull request is merged.
9429    pub delete_branch_on_merge: Option<bool>,
9430    /// The merge method used by the merge queue, if applicable. Null when merge queue is not enabled or the method is not specified.
9431    pub merge_queue_merge_method: Option<PullRequestMergeMethod>,
9432}
9433impl GraphQLFields for PullRequestMergeSettings {
9434    type FullType = Self;
9435    fn selection() -> String {
9436        "isMergeQueueEnabled squashMergeAllowed autoMergeAllowed rebaseMergeAllowed mergeCommitAllowed deleteBranchOnMerge mergeQueueMergeMethod"
9437            .into()
9438    }
9439}
9440/// A notification related to a pull request, such as review requests, approvals, comments, check failures, or merge queue events.
9441#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9442#[serde(rename_all = "camelCase", default)]
9443pub struct PullRequestNotification {
9444    /// The unique identifier of the entity.
9445    pub id: Option<String>,
9446    /// The time at which the entity was created.
9447    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
9448    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
9449    /// been updated after creation.
9450    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
9451    /// The time at which the entity was archived. Null if the entity has not been archived.
9452    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
9453    /// Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated.
9454    pub r#type: Option<String>,
9455    /// The user that caused the notification. Null if the notification was triggered by a non-user actor such as an integration, external user, or system event.
9456    pub actor: Option<User>,
9457    /// The external user that caused the notification. Populated when the notification was triggered by an external user (e.g., a commenter from a connected integration like Slack or GitHub) rather than a Linear workspace member.
9458    pub external_user_actor: Option<ExternalUser>,
9459    /// The recipient user of this notification.
9460    pub user: Option<User>,
9461    /// The time at which the user marked the notification as read. Null if the notification is unread.
9462    pub read_at: Option<chrono::DateTime<chrono::Utc>>,
9463    /// The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent.
9464    pub emailed_at: Option<chrono::DateTime<chrono::Utc>>,
9465    /// The time until which a notification is snoozed. After this time, the notification reappears in the user's inbox. Null if the notification is not currently snoozed.
9466    pub snoozed_until_at: Option<chrono::DateTime<chrono::Utc>>,
9467    /// The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed.
9468    pub unsnoozed_at: Option<chrono::DateTime<chrono::Utc>>,
9469    /// The category of the notification.
9470    pub category: Option<NotificationCategory>,
9471    /// `Internal` URL to the target of the notification.
9472    pub url: Option<String>,
9473    /// `Internal` Inbox URL for the notification.
9474    pub inbox_url: Option<String>,
9475    /// `Internal` Notification title.
9476    pub title: Option<String>,
9477    /// `Internal` Notification subtitle.
9478    pub subtitle: Option<String>,
9479    /// `Internal` If notification actor was Linear.
9480    pub is_linear_actor: Option<bool>,
9481    /// `Internal` Notification avatar URL.
9482    pub actor_avatar_url: Option<String>,
9483    /// `Internal` Notification actor initials if avatar is not available.
9484    pub actor_initials: Option<String>,
9485    /// `Internal` Notification actor initials if avatar is not available.
9486    pub actor_avatar_color: Option<String>,
9487    /// `Internal` Issue's status type for issue notifications.
9488    pub issue_status_type: Option<String>,
9489    /// `Internal` Project update health for new updates.
9490    pub project_update_health: Option<String>,
9491    /// `Internal` Initiative update health for new updates.
9492    pub initiative_update_health: Option<String>,
9493    /// `Internal` Notifications with the same grouping key will be grouped together in the UI.
9494    pub grouping_key: Option<String>,
9495    /// `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`.
9496    pub grouping_priority: Option<f64>,
9497    /// The bot that caused the notification.
9498    pub bot_actor: Option<ActorBot>,
9499    /// Related pull request.
9500    pub pull_request_id: Option<String>,
9501    /// Related pull request comment ID. Null if the notification is not related to a pull request comment.
9502    pub pull_request_comment_id: Option<String>,
9503    /// The pull request related to the notification.
9504    pub pull_request: Option<PullRequest>,
9505}
9506impl GraphQLFields for PullRequestNotification {
9507    type FullType = Self;
9508    fn selection() -> String {
9509        "id createdAt updatedAt archivedAt type readAt emailedAt snoozedUntilAt unsnoozedAt category url inboxUrl title subtitle isLinearActor actorAvatarUrl actorInitials actorAvatarColor issueStatusType projectUpdateHealth initiativeUpdateHealth groupingKey groupingPriority pullRequestId pullRequestCommentId"
9510            .into()
9511    }
9512}
9513/// A device registration for receiving push notifications. Each PushSubscription represents a specific browser or mobile device endpoint where a user has opted in to receive real-time push notifications. A user may have multiple push subscriptions across different devices and browsers.
9514#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9515#[serde(rename_all = "camelCase", default)]
9516pub struct PushSubscription {
9517    /// The unique identifier of the entity.
9518    pub id: Option<String>,
9519    /// The time at which the entity was created.
9520    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
9521    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
9522    /// been updated after creation.
9523    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
9524    /// The time at which the entity was archived. Null if the entity has not been archived.
9525    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
9526}
9527impl GraphQLFields for PushSubscription {
9528    type FullType = Self;
9529    fn selection() -> String {
9530        "id createdAt updatedAt archivedAt".into()
9531    }
9532}
9533/// Return type for push subscription mutations.
9534#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9535#[serde(rename_all = "camelCase", default)]
9536pub struct PushSubscriptionPayload {
9537    /// The identifier of the last sync operation.
9538    pub last_sync_id: Option<f64>,
9539    /// The push subscription that was created or deleted.
9540    pub entity: Option<PushSubscription>,
9541    /// Whether the operation was successful.
9542    pub success: Option<bool>,
9543}
9544impl GraphQLFields for PushSubscriptionPayload {
9545    type FullType = Self;
9546    fn selection() -> String {
9547        "lastSyncId success".into()
9548    }
9549}
9550/// Return type for the push subscription test query.
9551#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9552#[serde(rename_all = "camelCase", default)]
9553pub struct PushSubscriptionTestPayload {
9554    /// Whether the operation was successful.
9555    pub success: Option<bool>,
9556}
9557impl GraphQLFields for PushSubscriptionTestPayload {
9558    type FullType = Self;
9559    fn selection() -> String {
9560        "success".into()
9561    }
9562}
9563/// The current rate limit status for the authenticated entity.
9564#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9565#[serde(rename_all = "camelCase", default)]
9566pub struct RateLimitPayload {
9567    /// The identifier being rate limited, typically the API key or user ID.
9568    pub identifier: Option<String>,
9569    /// The category of rate limit applied to this request, such as API complexity or request count.
9570    pub kind: Option<String>,
9571    /// The current state of each rate limit type, including remaining quota and reset timing.
9572    pub limits: Option<Vec<RateLimitResultPayload>>,
9573}
9574impl GraphQLFields for RateLimitPayload {
9575    type FullType = Self;
9576    fn selection() -> String {
9577        "identifier kind".into()
9578    }
9579}
9580/// The state of a specific rate limit type, including remaining quota and reset timing.
9581#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9582#[serde(rename_all = "camelCase", default)]
9583pub struct RateLimitResultPayload {
9584    /// The specific type of rate limit being tracked, such as query complexity or mutation count.
9585    pub r#type: Option<String>,
9586    /// The requested quantity for this type of limit.
9587    pub requested_amount: Option<f64>,
9588    /// The total allowed quantity for this type of limit.
9589    pub allowed_amount: Option<f64>,
9590    /// The duration in milliseconds of the rate limit window. After this period elapses, the limit is fully replenished.
9591    pub period: Option<f64>,
9592    /// The remaining quantity for this type of limit after this request.
9593    pub remaining_amount: Option<f64>,
9594    /// The UNIX timestamp (in milliseconds) at which the rate limit will be fully replenished.
9595    pub reset: Option<f64>,
9596}
9597impl GraphQLFields for RateLimitResultPayload {
9598    type FullType = Self;
9599    fn selection() -> String {
9600        "type requestedAmount allowedAmount period remainingAmount reset".into()
9601    }
9602}
9603/// An emoji reaction on a comment, issue, project update, initiative update, post, pull request, or pull request comment. Each reaction is associated with exactly one parent entity and is created by either a workspace user or an external user. Reactions are persisted individually but surfaced on their parent entities as aggregated reactionData.
9604#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9605#[serde(rename_all = "camelCase", default)]
9606pub struct Reaction {
9607    /// The unique identifier of the entity.
9608    pub id: Option<String>,
9609    /// The time at which the entity was created.
9610    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
9611    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
9612    /// been updated after creation.
9613    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
9614    /// The time at which the entity was archived. Null if the entity has not been archived.
9615    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
9616    /// The name of the emoji used for this reaction. For custom workspace emojis, this is the custom emoji name; for standard emojis, this is the normalized emoji name.
9617    pub emoji: Option<String>,
9618    /// The issue that the reaction is associated with. Null if the reaction belongs to a different parent entity type.
9619    pub issue: Option<Issue>,
9620    /// The comment that the reaction is associated with. Null if the reaction belongs to a different parent entity type.
9621    pub comment: Option<Comment>,
9622    /// The project update that the reaction is associated with. Null if the reaction belongs to a different parent entity type.
9623    pub project_update: Option<ProjectUpdate>,
9624    /// The initiative update that the reaction is associated with. Null if the reaction belongs to a different parent entity type.
9625    pub initiative_update: Option<InitiativeUpdate>,
9626    /// The post that the reaction is associated with. Null if the reaction belongs to a different parent entity type.
9627    pub post: Option<Post>,
9628    /// The workspace user that created the reaction. Null if the reaction was created by an external user through an integration.
9629    pub user: Option<User>,
9630    /// The external user that created the reaction through an integration. Null if the reaction was created by a workspace user.
9631    pub external_user: Option<ExternalUser>,
9632}
9633impl GraphQLFields for Reaction {
9634    type FullType = Self;
9635    fn selection() -> String {
9636        "id createdAt updatedAt archivedAt emoji".into()
9637    }
9638}
9639/// The result of a reaction mutation.
9640#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9641#[serde(rename_all = "camelCase", default)]
9642pub struct ReactionPayload {
9643    /// The identifier of the last sync operation.
9644    pub last_sync_id: Option<f64>,
9645    /// The reaction that was created.
9646    pub reaction: Option<Reaction>,
9647    /// Whether the operation was successful.
9648    pub success: Option<bool>,
9649}
9650impl GraphQLFields for ReactionPayload {
9651    type FullType = Self;
9652    fn selection() -> String {
9653        "lastSyncId success".into()
9654    }
9655}
9656/// `Internal` A release that bundles issues together for a software deployment or version. Releases belong to a release pipeline and progress through stages (e.g., planned, started, completed, canceled). Issues are associated with releases via the IssueToRelease join entity, and the release tracks lifecycle timestamps such as when it was started, completed, or canceled.
9657#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9658#[serde(rename_all = "camelCase", default)]
9659pub struct Release {
9660    /// The unique identifier of the entity.
9661    pub id: Option<String>,
9662    /// The time at which the entity was created.
9663    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
9664    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
9665    /// been updated after creation.
9666    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
9667    /// The time at which the entity was archived. Null if the entity has not been archived.
9668    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
9669    /// The name of the release.
9670    pub name: Option<String>,
9671    /// The description of the release in plain text or markdown. Null if no description has been set.
9672    pub description: Option<String>,
9673    /// The version identifier for this release (e.g., 'v1.2.3' or a short commit hash). Must be unique within the pipeline. Null if no version has been assigned.
9674    pub version: Option<String>,
9675    /// The Git commit SHA associated with this release. Used for SHA-based idempotency when completing releases and for linking releases to specific points in the repository history. Null if the release was created without a commit reference.
9676    pub commit_sha: Option<String>,
9677    /// The release pipeline that this release belongs to. A release always belongs to exactly one pipeline.
9678    pub pipeline: Option<ReleasePipeline>,
9679    /// The current stage of the release within its pipeline (e.g., Planned, In Progress, Completed, Canceled). Changing the stage triggers lifecycle timestamp updates and may move non-closed issues to a new release when completing a scheduled pipeline release.
9680    pub stage: Option<ReleaseStage>,
9681    /// The user who created the release. Null if the release was created by a non-user context such as an access key or automation.
9682    pub creator: Option<Box<User>>,
9683    /// The release's unique URL slug, used to construct human-readable URLs for the release.
9684    pub slug_id: Option<String>,
9685    /// The estimated start date of the release. This is a date-only value without a time component. Automatically set to today when the release moves to a started stage if not already set. Null if no start date has been specified.
9686    pub start_date: Option<chrono::NaiveDate>,
9687    /// The estimated completion date of the release. This is a date-only value without a time component. Null if no target date has been specified.
9688    pub target_date: Option<chrono::NaiveDate>,
9689    /// The time at which the release first entered a started stage. Null if the release has not yet been started.
9690    pub started_at: Option<chrono::DateTime<chrono::Utc>>,
9691    /// The time at which the release was completed. Set automatically when the release moves to a completed stage. Reset to null if the release moves back to a non-completed stage.
9692    pub completed_at: Option<chrono::DateTime<chrono::Utc>>,
9693    /// The time at which the release was canceled. Set automatically when the release moves to a canceled stage. Reset to null if the release moves back to a non-canceled stage.
9694    pub canceled_at: Option<chrono::DateTime<chrono::Utc>>,
9695    /// A flag that indicates whether the release is in the trash bin. Trashed releases are archived and will be permanently deleted after a retention period. Null when the release is not trashed.
9696    pub trashed: Option<bool>,
9697    /// `Internal` The historical progress snapshots for the release, tracking how issue completion has evolved over time.
9698    pub progress_history: Option<serde_json::Value>,
9699    /// `Internal` The current progress summary for the release, including counts of issues by workflow state type (e.g., completed, in progress, unstarted).
9700    pub current_progress: Option<serde_json::Value>,
9701    /// `Internal` History entries associated with the release.
9702    pub history: Option<ReleaseHistoryConnection>,
9703    /// The URL to the release page in the Linear app.
9704    pub url: Option<String>,
9705    /// `Internal` Documents associated with the release.
9706    pub documents: Option<DocumentConnection>,
9707    /// `ALPHA` Issues associated with the release.
9708    pub issues: Option<IssueConnection>,
9709    /// `ALPHA` Number of issues associated with the release.
9710    pub issue_count: Option<i64>,
9711    /// `Internal` Links associated with the release.
9712    pub links: Option<EntityExternalLinkConnection>,
9713    /// `ALPHA` Release notes for the release.
9714    pub release_notes: Option<Vec<ReleaseNote>>,
9715}
9716impl GraphQLFields for Release {
9717    type FullType = Self;
9718    fn selection() -> String {
9719        "id createdAt updatedAt archivedAt name description version commitSha slugId startDate targetDate startedAt completedAt canceledAt trashed progressHistory currentProgress url issueCount"
9720            .into()
9721    }
9722}
9723/// A generic payload return from entity archive mutations.
9724#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9725#[serde(rename_all = "camelCase", default)]
9726pub struct ReleaseArchivePayload {
9727    /// The identifier of the last sync operation.
9728    pub last_sync_id: Option<f64>,
9729    /// Whether the operation was successful.
9730    pub success: Option<bool>,
9731    /// The archived/unarchived entity. Null if entity was deleted.
9732    pub entity: Option<Release>,
9733}
9734impl GraphQLFields for ReleaseArchivePayload {
9735    type FullType = Self;
9736    fn selection() -> String {
9737        "lastSyncId success".into()
9738    }
9739}
9740#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9741#[serde(rename_all = "camelCase", default)]
9742pub struct ReleaseConnection {
9743    pub edges: Option<Vec<ReleaseEdge>>,
9744    pub nodes: Option<Vec<Release>>,
9745    pub page_info: Option<PageInfo>,
9746}
9747impl GraphQLFields for ReleaseConnection {
9748    type FullType = Self;
9749    fn selection() -> String {
9750        "".into()
9751    }
9752}
9753#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9754#[serde(rename_all = "camelCase", default)]
9755pub struct ReleaseEdge {
9756    pub node: Option<Release>,
9757    /// Used in `before` and `after` args
9758    pub cursor: Option<String>,
9759}
9760impl GraphQLFields for ReleaseEdge {
9761    type FullType = Self;
9762    fn selection() -> String {
9763        "cursor".into()
9764    }
9765}
9766/// `Internal` A release history record containing a batch of chronologically ordered change events for a release. Each record holds up to 30 entries, and new records are created once the current record is full and a time window has elapsed. Tracks changes to name, description, version, stage, dates, pipeline, and archive status.
9767#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9768#[serde(rename_all = "camelCase", default)]
9769pub struct ReleaseHistory {
9770    /// The unique identifier of the entity.
9771    pub id: Option<String>,
9772    /// The time at which the entity was created.
9773    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
9774    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
9775    /// been updated after creation.
9776    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
9777    /// The time at which the entity was archived. Null if the entity has not been archived.
9778    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
9779    /// The events that happened while recording that history.
9780    pub entries: Option<serde_json::Value>,
9781    /// The release that this history record tracks changes for.
9782    pub release: Option<Release>,
9783}
9784impl GraphQLFields for ReleaseHistory {
9785    type FullType = Self;
9786    fn selection() -> String {
9787        "id createdAt updatedAt archivedAt entries".into()
9788    }
9789}
9790#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9791#[serde(rename_all = "camelCase", default)]
9792pub struct ReleaseHistoryConnection {
9793    pub edges: Option<Vec<ReleaseHistoryEdge>>,
9794    pub nodes: Option<Vec<ReleaseHistory>>,
9795    pub page_info: Option<PageInfo>,
9796}
9797impl GraphQLFields for ReleaseHistoryConnection {
9798    type FullType = Self;
9799    fn selection() -> String {
9800        "".into()
9801    }
9802}
9803#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9804#[serde(rename_all = "camelCase", default)]
9805pub struct ReleaseHistoryEdge {
9806    pub node: Option<ReleaseHistory>,
9807    /// Used in `before` and `after` args
9808    pub cursor: Option<String>,
9809}
9810impl GraphQLFields for ReleaseHistoryEdge {
9811    type FullType = Self;
9812    fn selection() -> String {
9813        "cursor".into()
9814    }
9815}
9816/// `Internal` A release note. The note body is stored in related document content, and the releases it covers are tracked in releaseIds.
9817#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9818#[serde(rename_all = "camelCase", default)]
9819pub struct ReleaseNote {
9820    /// The unique identifier of the entity.
9821    pub id: Option<String>,
9822    /// The time at which the entity was created.
9823    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
9824    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
9825    /// been updated after creation.
9826    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
9827    /// The time at which the entity was archived. Null if the entity has not been archived.
9828    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
9829    /// `ALPHA` Releases included in the note.
9830    pub releases: Option<Vec<Release>>,
9831    /// `Internal` Document content backing the release note body.
9832    pub document_content: Option<DocumentContent>,
9833}
9834impl GraphQLFields for ReleaseNote {
9835    type FullType = Self;
9836    fn selection() -> String {
9837        "id createdAt updatedAt archivedAt".into()
9838    }
9839}
9840#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9841#[serde(rename_all = "camelCase", default)]
9842pub struct ReleaseNoteConnection {
9843    pub edges: Option<Vec<ReleaseNoteEdge>>,
9844    pub nodes: Option<Vec<ReleaseNote>>,
9845    pub page_info: Option<PageInfo>,
9846}
9847impl GraphQLFields for ReleaseNoteConnection {
9848    type FullType = Self;
9849    fn selection() -> String {
9850        "".into()
9851    }
9852}
9853#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9854#[serde(rename_all = "camelCase", default)]
9855pub struct ReleaseNoteEdge {
9856    pub node: Option<ReleaseNote>,
9857    /// Used in `before` and `after` args
9858    pub cursor: Option<String>,
9859}
9860impl GraphQLFields for ReleaseNoteEdge {
9861    type FullType = Self;
9862    fn selection() -> String {
9863        "cursor".into()
9864    }
9865}
9866/// `ALPHA` The result of a release note mutation.
9867#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9868#[serde(rename_all = "camelCase", default)]
9869pub struct ReleaseNotePayload {
9870    /// The identifier of the last sync operation.
9871    pub last_sync_id: Option<f64>,
9872    /// The release note that was created or updated.
9873    pub release_note: Option<ReleaseNote>,
9874    /// Whether the operation was successful.
9875    pub success: Option<bool>,
9876}
9877impl GraphQLFields for ReleaseNotePayload {
9878    type FullType = Self;
9879    fn selection() -> String {
9880        "lastSyncId success".into()
9881    }
9882}
9883/// The result of a release mutation, containing the release that was created or updated and a success indicator.
9884#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9885#[serde(rename_all = "camelCase", default)]
9886pub struct ReleasePayload {
9887    /// The identifier of the last sync operation.
9888    pub last_sync_id: Option<f64>,
9889    /// The release that was created or updated.
9890    pub release: Option<Release>,
9891    /// Whether the operation was successful.
9892    pub success: Option<bool>,
9893}
9894impl GraphQLFields for ReleasePayload {
9895    type FullType = Self;
9896    fn selection() -> String {
9897        "lastSyncId success".into()
9898    }
9899}
9900/// `Internal` A release pipeline that defines a release workflow with ordered stages. Pipelines can be continuous (each sync creates a completed release) or scheduled (issues accumulate in a started release that is explicitly completed). Pipelines are associated with teams and can filter commits by file path patterns.
9901#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9902#[serde(rename_all = "camelCase", default)]
9903pub struct ReleasePipeline {
9904    /// The unique identifier of the entity.
9905    pub id: Option<String>,
9906    /// The time at which the entity was created.
9907    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
9908    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
9909    /// been updated after creation.
9910    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
9911    /// The time at which the entity was archived. Null if the entity has not been archived.
9912    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
9913    /// The name of the pipeline.
9914    pub name: Option<String>,
9915    /// The pipeline's unique slug identifier, used in URLs and for lookup by human-readable identifier instead of UUID.
9916    pub slug_id: Option<String>,
9917    /// The type of the pipeline, which determines how releases are created and managed. Continuous pipelines create a completed release per sync, while scheduled pipelines accumulate issues in a started release.
9918    pub r#type: Option<ReleasePipelineType>,
9919    /// `ALPHA` Whether this pipeline targets a production environment. Defaults to true. Used to distinguish production pipelines from staging or development pipelines.
9920    pub is_production: Option<bool>,
9921    /// Glob patterns to filter commits by file path. When non-empty, only commits that modify files matching at least one pattern will be included in release syncs. An empty array means all commits are included regardless of file paths.
9922    pub include_path_patterns: Option<Vec<String>>,
9923    /// `ALPHA` The approximate number of non-archived releases in this pipeline. This is a denormalized count that is updated when releases are created or archived, and may not reflect the exact count at all times.
9924    pub approximate_release_count: Option<i64>,
9925    /// `Internal` The URL to the release pipeline's releases list in the Linear app.
9926    pub url: Option<String>,
9927    /// `ALPHA` Teams associated with this pipeline.
9928    pub teams: Option<TeamConnection>,
9929    /// `ALPHA` Stages associated with this pipeline.
9930    pub stages: Option<ReleaseStageConnection>,
9931    /// `ALPHA` Releases associated with this pipeline.
9932    pub releases: Option<ReleaseConnection>,
9933}
9934impl GraphQLFields for ReleasePipeline {
9935    type FullType = Self;
9936    fn selection() -> String {
9937        "id createdAt updatedAt archivedAt name slugId type isProduction includePathPatterns approximateReleaseCount url"
9938            .into()
9939    }
9940}
9941/// A generic payload return from entity archive mutations.
9942#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9943#[serde(rename_all = "camelCase", default)]
9944pub struct ReleasePipelineArchivePayload {
9945    /// The identifier of the last sync operation.
9946    pub last_sync_id: Option<f64>,
9947    /// Whether the operation was successful.
9948    pub success: Option<bool>,
9949    /// The archived/unarchived entity. Null if entity was deleted.
9950    pub entity: Option<ReleasePipeline>,
9951}
9952impl GraphQLFields for ReleasePipelineArchivePayload {
9953    type FullType = Self;
9954    fn selection() -> String {
9955        "lastSyncId success".into()
9956    }
9957}
9958#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9959#[serde(rename_all = "camelCase", default)]
9960pub struct ReleasePipelineConnection {
9961    pub edges: Option<Vec<ReleasePipelineEdge>>,
9962    pub nodes: Option<Vec<ReleasePipeline>>,
9963    pub page_info: Option<PageInfo>,
9964}
9965impl GraphQLFields for ReleasePipelineConnection {
9966    type FullType = Self;
9967    fn selection() -> String {
9968        "".into()
9969    }
9970}
9971#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9972#[serde(rename_all = "camelCase", default)]
9973pub struct ReleasePipelineEdge {
9974    pub node: Option<ReleasePipeline>,
9975    /// Used in `before` and `after` args
9976    pub cursor: Option<String>,
9977}
9978impl GraphQLFields for ReleasePipelineEdge {
9979    type FullType = Self;
9980    fn selection() -> String {
9981        "cursor".into()
9982    }
9983}
9984/// The result of a release pipeline mutation.
9985#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9986#[serde(rename_all = "camelCase", default)]
9987pub struct ReleasePipelinePayload {
9988    /// The identifier of the last sync operation.
9989    pub last_sync_id: Option<f64>,
9990    /// The release pipeline that was created or updated.
9991    pub release_pipeline: Option<ReleasePipeline>,
9992    /// Whether the operation was successful.
9993    pub success: Option<bool>,
9994}
9995impl GraphQLFields for ReleasePipelinePayload {
9996    type FullType = Self;
9997    fn selection() -> String {
9998        "lastSyncId success".into()
9999    }
10000}
10001/// `Internal` A stage within a release pipeline that represents a phase in the release lifecycle (e.g., Planned, In Progress, Completed, Canceled). Releases progress through stages as they move toward production. Started-type stages can be frozen to prevent new issues from being automatically synced into releases at that stage.
10002#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10003#[serde(rename_all = "camelCase", default)]
10004pub struct ReleaseStage {
10005    /// The unique identifier of the entity.
10006    pub id: Option<String>,
10007    /// The time at which the entity was created.
10008    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
10009    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
10010    /// been updated after creation.
10011    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
10012    /// The time at which the entity was archived. Null if the entity has not been archived.
10013    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
10014    /// The name of the stage.
10015    pub name: Option<String>,
10016    /// The display color of the stage as a HEX string (e.g., '#0f783c'), used for visual representation in the UI.
10017    pub color: Option<String>,
10018    /// The lifecycle type of the stage (planned, started, completed, or canceled). The type determines what lifecycle timestamps are set on a release when it enters this stage.
10019    pub r#type: Option<ReleaseStageType>,
10020    /// The position of the stage within its pipeline, used for ordering stages in the UI. Lower values appear first.
10021    pub position: Option<f64>,
10022    /// Whether this stage is frozen. Only applicable to started-type stages. When a stage is frozen, automated release syncs will not target releases in this stage, and new issues will not be automatically added. At least one started stage in the pipeline must remain non-frozen.
10023    pub frozen: Option<bool>,
10024    /// The release pipeline that this stage belongs to. A stage always belongs to exactly one pipeline.
10025    pub pipeline: Option<ReleasePipeline>,
10026    /// `ALPHA` Releases associated with this stage.
10027    pub releases: Option<ReleaseConnection>,
10028}
10029impl GraphQLFields for ReleaseStage {
10030    type FullType = Self;
10031    fn selection() -> String {
10032        "id createdAt updatedAt archivedAt name color type position frozen".into()
10033    }
10034}
10035/// A generic payload return from entity archive mutations.
10036#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10037#[serde(rename_all = "camelCase", default)]
10038pub struct ReleaseStageArchivePayload {
10039    /// The identifier of the last sync operation.
10040    pub last_sync_id: Option<f64>,
10041    /// Whether the operation was successful.
10042    pub success: Option<bool>,
10043    /// The archived/unarchived entity. Null if entity was deleted.
10044    pub entity: Option<ReleaseStage>,
10045}
10046impl GraphQLFields for ReleaseStageArchivePayload {
10047    type FullType = Self;
10048    fn selection() -> String {
10049        "lastSyncId success".into()
10050    }
10051}
10052#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10053#[serde(rename_all = "camelCase", default)]
10054pub struct ReleaseStageConnection {
10055    pub edges: Option<Vec<ReleaseStageEdge>>,
10056    pub nodes: Option<Vec<ReleaseStage>>,
10057    pub page_info: Option<PageInfo>,
10058}
10059impl GraphQLFields for ReleaseStageConnection {
10060    type FullType = Self;
10061    fn selection() -> String {
10062        "".into()
10063    }
10064}
10065#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10066#[serde(rename_all = "camelCase", default)]
10067pub struct ReleaseStageEdge {
10068    pub node: Option<ReleaseStage>,
10069    /// Used in `before` and `after` args
10070    pub cursor: Option<String>,
10071}
10072impl GraphQLFields for ReleaseStageEdge {
10073    type FullType = Self;
10074    fn selection() -> String {
10075        "cursor".into()
10076    }
10077}
10078/// The result of a release stage mutation.
10079#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10080#[serde(rename_all = "camelCase", default)]
10081pub struct ReleaseStagePayload {
10082    /// The identifier of the last sync operation.
10083    pub last_sync_id: Option<f64>,
10084    /// The release stage that was created or updated.
10085    pub release_stage: Option<ReleaseStage>,
10086    /// Whether the operation was successful.
10087    pub success: Option<bool>,
10088}
10089impl GraphQLFields for ReleaseStagePayload {
10090    type FullType = Self;
10091    fn selection() -> String {
10092        "lastSyncId success".into()
10093    }
10094}
10095/// A suggested code repository that may be relevant for implementing an issue.
10096#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10097#[serde(rename_all = "camelCase", default)]
10098pub struct RepositorySuggestion {
10099    /// The full name of the repository in owner/name format (e.g., 'acme/backend').
10100    pub repository_full_name: Option<String>,
10101    /// Hostname of the Git service (e.g., 'github.com', 'github.company.com').
10102    pub hostname: Option<String>,
10103    /// Confidence score from 0.0 to 1.0.
10104    pub confidence: Option<f64>,
10105}
10106impl GraphQLFields for RepositorySuggestion {
10107    type FullType = Self;
10108    fn selection() -> String {
10109        "repositoryFullName hostname confidence".into()
10110    }
10111}
10112/// The result of a repository suggestions query, containing the list of suggested repositories.
10113#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10114#[serde(rename_all = "camelCase", default)]
10115pub struct RepositorySuggestionsPayload {
10116    /// The suggested repositories.
10117    pub suggestions: Option<Vec<RepositorySuggestion>>,
10118}
10119impl GraphQLFields for RepositorySuggestionsPayload {
10120    type FullType = Self;
10121    fn selection() -> String {
10122        "".into()
10123    }
10124}
10125/// `Deprecated` A roadmap for grouping projects. Use Initiative instead, which supersedes this entity and provides richer hierarchy and tracking capabilities.
10126#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10127#[serde(rename_all = "camelCase", default)]
10128pub struct Roadmap {
10129    /// The unique identifier of the entity.
10130    pub id: Option<String>,
10131    /// The time at which the entity was created.
10132    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
10133    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
10134    /// been updated after creation.
10135    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
10136    /// The time at which the entity was archived. Null if the entity has not been archived.
10137    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
10138    /// The name of the roadmap.
10139    pub name: Option<String>,
10140    /// The description of the roadmap.
10141    pub description: Option<String>,
10142    /// The workspace of the roadmap.
10143    pub organization: Option<Organization>,
10144    /// The user who created the roadmap.
10145    pub creator: Option<User>,
10146    /// The user who owns the roadmap.
10147    pub owner: Option<User>,
10148    /// The roadmap's unique URL slug.
10149    pub slug_id: Option<String>,
10150    /// The sort order of the roadmap within the workspace.
10151    pub sort_order: Option<f64>,
10152    /// The roadmap's color.
10153    pub color: Option<String>,
10154    /// Projects associated with the roadmap.
10155    pub projects: Option<ProjectConnection>,
10156    /// The canonical url for the roadmap.
10157    pub url: Option<String>,
10158}
10159impl GraphQLFields for Roadmap {
10160    type FullType = Self;
10161    fn selection() -> String {
10162        "id createdAt updatedAt archivedAt name description slugId sortOrder color url".into()
10163    }
10164}
10165/// A generic payload return from entity archive mutations.
10166#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10167#[serde(rename_all = "camelCase", default)]
10168pub struct RoadmapArchivePayload {
10169    /// The identifier of the last sync operation.
10170    pub last_sync_id: Option<f64>,
10171    /// Whether the operation was successful.
10172    pub success: Option<bool>,
10173    /// The archived/unarchived entity. Null if entity was deleted.
10174    pub entity: Option<Roadmap>,
10175}
10176impl GraphQLFields for RoadmapArchivePayload {
10177    type FullType = Self;
10178    fn selection() -> String {
10179        "lastSyncId success".into()
10180    }
10181}
10182#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10183#[serde(rename_all = "camelCase", default)]
10184pub struct RoadmapConnection {
10185    pub edges: Option<Vec<RoadmapEdge>>,
10186    pub nodes: Option<Vec<Roadmap>>,
10187    pub page_info: Option<PageInfo>,
10188}
10189impl GraphQLFields for RoadmapConnection {
10190    type FullType = Self;
10191    fn selection() -> String {
10192        "".into()
10193    }
10194}
10195#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10196#[serde(rename_all = "camelCase", default)]
10197pub struct RoadmapEdge {
10198    pub node: Option<Roadmap>,
10199    /// Used in `before` and `after` args
10200    pub cursor: Option<String>,
10201}
10202impl GraphQLFields for RoadmapEdge {
10203    type FullType = Self;
10204    fn selection() -> String {
10205        "cursor".into()
10206    }
10207}
10208/// The result of a roadmap mutation.
10209#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10210#[serde(rename_all = "camelCase", default)]
10211pub struct RoadmapPayload {
10212    /// The identifier of the last sync operation.
10213    pub last_sync_id: Option<f64>,
10214    /// The roadmap that was created or updated.
10215    pub roadmap: Option<Roadmap>,
10216    /// Whether the operation was successful.
10217    pub success: Option<bool>,
10218}
10219impl GraphQLFields for RoadmapPayload {
10220    type FullType = Self;
10221    fn selection() -> String {
10222        "lastSyncId success".into()
10223    }
10224}
10225/// `Deprecated` The join entity linking a project to a roadmap. Use InitiativeToProject instead, which supersedes this entity.
10226#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10227#[serde(rename_all = "camelCase", default)]
10228pub struct RoadmapToProject {
10229    /// The unique identifier of the entity.
10230    pub id: Option<String>,
10231    /// The time at which the entity was created.
10232    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
10233    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
10234    /// been updated after creation.
10235    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
10236    /// The time at which the entity was archived. Null if the entity has not been archived.
10237    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
10238    /// The project that the roadmap is associated with.
10239    pub project: Option<Project>,
10240    /// The roadmap that the project is associated with.
10241    pub roadmap: Option<Roadmap>,
10242    /// The sort order of the project within the roadmap.
10243    pub sort_order: Option<String>,
10244}
10245impl GraphQLFields for RoadmapToProject {
10246    type FullType = Self;
10247    fn selection() -> String {
10248        "id createdAt updatedAt archivedAt sortOrder".into()
10249    }
10250}
10251#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10252#[serde(rename_all = "camelCase", default)]
10253pub struct RoadmapToProjectConnection {
10254    pub edges: Option<Vec<RoadmapToProjectEdge>>,
10255    pub nodes: Option<Vec<RoadmapToProject>>,
10256    pub page_info: Option<PageInfo>,
10257}
10258impl GraphQLFields for RoadmapToProjectConnection {
10259    type FullType = Self;
10260    fn selection() -> String {
10261        "".into()
10262    }
10263}
10264#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10265#[serde(rename_all = "camelCase", default)]
10266pub struct RoadmapToProjectEdge {
10267    pub node: Option<RoadmapToProject>,
10268    /// Used in `before` and `after` args
10269    pub cursor: Option<String>,
10270}
10271impl GraphQLFields for RoadmapToProjectEdge {
10272    type FullType = Self;
10273    fn selection() -> String {
10274        "cursor".into()
10275    }
10276}
10277/// The result of a roadmap-to-project mutation.
10278#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10279#[serde(rename_all = "camelCase", default)]
10280pub struct RoadmapToProjectPayload {
10281    /// The identifier of the last sync operation.
10282    pub last_sync_id: Option<f64>,
10283    /// The roadmapToProject that was created or updated.
10284    pub roadmap_to_project: Option<RoadmapToProject>,
10285    /// Whether the operation was successful.
10286    pub success: Option<bool>,
10287}
10288impl GraphQLFields for RoadmapToProjectPayload {
10289    type FullType = Self;
10290    fn selection() -> String {
10291        "lastSyncId success".into()
10292    }
10293}
10294/// The payload returned by the semantic search query, containing the list of matching results.
10295#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10296#[serde(rename_all = "camelCase", default)]
10297pub struct SemanticSearchPayload {
10298    /// Whether the semantic search is enabled.
10299    pub enabled: Option<bool>,
10300    /// The list of matching search results, ordered by relevance score.
10301    pub results: Option<Vec<SemanticSearchResult>>,
10302}
10303impl GraphQLFields for SemanticSearchPayload {
10304    type FullType = Self;
10305    fn selection() -> String {
10306        "enabled".into()
10307    }
10308}
10309/// A reference to an entity returned by semantic search, containing its type and ID. Resolve the specific entity using the type-specific field resolvers (issue, project, initiative, document).
10310#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10311#[serde(rename_all = "camelCase", default)]
10312pub struct SemanticSearchResult {
10313    /// The unique identifier of the entity.
10314    pub id: Option<String>,
10315    /// The type of the semantic search result.
10316    pub r#type: Option<SemanticSearchResultType>,
10317    /// The issue entity, if this search result is of type Issue. Null for other result types.
10318    pub issue: Option<Issue>,
10319    /// The project entity, if this search result is of type Project. Null for other result types.
10320    pub project: Option<Project>,
10321    /// The initiative entity, if this search result is of type Initiative. Null for other result types.
10322    pub initiative: Option<Initiative>,
10323    /// The document entity, if this search result is of type Document. Null for other result types.
10324    pub document: Option<Document>,
10325}
10326impl GraphQLFields for SemanticSearchResult {
10327    type FullType = Self;
10328    fn selection() -> String {
10329        "id type".into()
10330    }
10331}
10332/// A verified Amazon SES domain identity that enables sending emails from a custom domain. Organizations configure SES domain identities to send issue notification replies and Asks auto-replies from their own domain instead of the default Linear domain. Full verification requires DKIM signing, a custom MAIL FROM domain, and organization ownership confirmation. Multiple organizations sharing the same domain each have their own SesDomainIdentity record but share the underlying SES identity.
10333#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10334#[serde(rename_all = "camelCase", default)]
10335pub struct SesDomainIdentity {
10336    /// The unique identifier of the entity.
10337    pub id: Option<String>,
10338    /// The time at which the entity was created.
10339    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
10340    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
10341    /// been updated after creation.
10342    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
10343    /// The time at which the entity was archived. Null if the entity has not been archived.
10344    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
10345    /// The domain of the SES domain identity.
10346    pub domain: Option<String>,
10347    /// The AWS region of the SES domain identity.
10348    pub region: Option<String>,
10349    /// The workspace of the SES domain identity.
10350    pub organization: Option<Organization>,
10351    /// The user who created the SES domain identity.
10352    pub creator: Option<User>,
10353    /// Whether the domain is fully verified and can be used for sending emails.
10354    pub can_send_from_custom_domain: Option<bool>,
10355    /// The DNS records for the SES domain identity.
10356    pub dns_records: Option<Vec<SesDomainIdentityDnsRecord>>,
10357}
10358impl GraphQLFields for SesDomainIdentity {
10359    type FullType = Self;
10360    fn selection() -> String {
10361        "id createdAt updatedAt archivedAt domain region canSendFromCustomDomain".into()
10362    }
10363}
10364/// A DNS record for a SES domain identity.
10365#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10366#[serde(rename_all = "camelCase", default)]
10367pub struct SesDomainIdentityDnsRecord {
10368    /// The type of the DNS record.
10369    pub r#type: Option<String>,
10370    /// The name of the DNS record.
10371    pub name: Option<String>,
10372    /// The content of the DNS record.
10373    pub content: Option<String>,
10374    /// Whether the DNS record is verified in the domain's DNS configuration.
10375    pub is_verified: Option<bool>,
10376}
10377impl GraphQLFields for SesDomainIdentityDnsRecord {
10378    type FullType = Self;
10379    fn selection() -> String {
10380        "type name content isVerified".into()
10381    }
10382}
10383/// Configuration for a Linear team within a Slack Asks channel mapping. Controls whether the default Asks template is enabled for the team in a given Slack channel.
10384#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10385#[serde(rename_all = "camelCase", default)]
10386pub struct SlackAsksTeamSettings {
10387    /// The Linear team ID.
10388    pub id: Option<String>,
10389    /// Whether the default Asks template is enabled in the given channel for this team.
10390    pub has_default_ask: Option<bool>,
10391}
10392impl GraphQLFields for SlackAsksTeamSettings {
10393    type FullType = Self;
10394    fn selection() -> String {
10395        "id hasDefaultAsk".into()
10396    }
10397}
10398#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10399#[serde(rename_all = "camelCase", default)]
10400pub struct SlackChannelConnectPayload {
10401    /// The identifier of the last sync operation.
10402    pub last_sync_id: Option<f64>,
10403    /// The integration that was created or updated.
10404    pub integration: Option<Integration>,
10405    /// Whether the operation was successful.
10406    pub success: Option<bool>,
10407    /// Whether the bot needs to be manually added to the channel.
10408    pub add_bot: Option<bool>,
10409    /// Whether it's recommended to connect main Slack integration.
10410    pub nudge_to_connect_main_slack_integration: Option<bool>,
10411    /// Whether it's recommended to update main Slack integration.
10412    pub nudge_to_update_main_slack_integration: Option<bool>,
10413}
10414impl GraphQLFields for SlackChannelConnectPayload {
10415    type FullType = Self;
10416    fn selection() -> String {
10417        "lastSyncId success addBot nudgeToConnectMainSlackIntegration nudgeToUpdateMainSlackIntegration"
10418            .into()
10419    }
10420}
10421/// Configuration for a Slack channel connected to Linear via Slack Asks. Maps the Slack channel ID and name to team assignments and auto-creation settings that control how issues are created from Slack messages in this channel.
10422#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10423#[serde(rename_all = "camelCase", default)]
10424pub struct SlackChannelNameMapping {
10425    /// The Slack channel ID.
10426    pub id: Option<String>,
10427    /// The Slack channel name.
10428    pub name: Option<String>,
10429    /// Whether or not the Slack channel is private.
10430    pub is_private: Option<bool>,
10431    /// Whether or not the Slack channel is shared with an external org.
10432    pub is_shared: Option<bool>,
10433    /// Whether or not the Linear Asks bot has been added to this Slack channel.
10434    pub bot_added: Option<bool>,
10435    /// Which teams are connected to the channel and settings for those teams.
10436    pub teams: Option<Vec<SlackAsksTeamSettings>>,
10437    /// Whether or not top-level messages in this channel should automatically create Asks.
10438    pub auto_create_on_message: Option<bool>,
10439    /// Whether or not using the :ticket: emoji in this channel should automatically create Asks.
10440    pub auto_create_on_emoji: Option<bool>,
10441    /// Whether or not @-mentioning the bot should automatically create an Ask with the message.
10442    pub auto_create_on_bot_mention: Option<bool>,
10443    /// The optional template ID to use for Asks auto-created in this channel. If not set, auto-created Asks won't use any template.
10444    pub auto_create_template_id: Option<String>,
10445    /// Whether or not synced Slack threads should be updated with a message and emoji when their Ask is canceled.
10446    pub post_cancellation_updates: Option<bool>,
10447    /// Whether or not synced Slack threads should be updated with a message and emoji when their Ask is completed.
10448    pub post_completion_updates: Option<bool>,
10449    /// Whether or not synced Slack threads should be updated with a message when their Ask is accepted from triage.
10450    pub post_accepted_from_triage_updates: Option<bool>,
10451    /// Whether or not to use AI to generate titles for Asks created in this channel.
10452    pub ai_titles: Option<bool>,
10453}
10454impl GraphQLFields for SlackChannelNameMapping {
10455    type FullType = Self;
10456    fn selection() -> String {
10457        "id name isPrivate isShared botAdded autoCreateOnMessage autoCreateOnEmoji autoCreateOnBotMention autoCreateTemplateId postCancellationUpdates postCompletionUpdates postAcceptedFromTriageUpdates aiTitles"
10458            .into()
10459    }
10460}
10461#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10462#[serde(rename_all = "camelCase", default)]
10463pub struct SsoUrlFromEmailResponse {
10464    /// Whether the operation was successful.
10465    pub success: Option<bool>,
10466    /// SAML SSO sign-in URL.
10467    pub saml_sso_url: Option<String>,
10468}
10469impl GraphQLFields for SsoUrlFromEmailResponse {
10470    type FullType = Self;
10471    fn selection() -> String {
10472        "success samlSsoUrl".into()
10473    }
10474}
10475#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10476#[serde(rename_all = "camelCase", default)]
10477pub struct Subscription {
10478    /// Triggered when a comment is created
10479    pub comment_created: Option<Comment>,
10480    /// Triggered when a comment is updated
10481    pub comment_updated: Option<Comment>,
10482    /// Triggered when a comment is archived
10483    pub comment_archived: Option<Comment>,
10484    /// Triggered when a a comment is unarchived
10485    pub comment_unarchived: Option<Comment>,
10486    /// Triggered when a comment is deleted
10487    pub comment_deleted: Option<Comment>,
10488    /// Triggered when a cycle is created
10489    pub cycle_created: Option<Cycle>,
10490    /// Triggered when a cycle is updated
10491    pub cycle_updated: Option<Cycle>,
10492    /// Triggered when a cycle is archived
10493    pub cycle_archived: Option<Cycle>,
10494    /// Triggered when a document is created
10495    pub document_created: Option<Document>,
10496    /// Triggered when a document is updated
10497    pub document_updated: Option<Document>,
10498    /// Triggered when a document is archived
10499    pub document_archived: Option<Document>,
10500    /// Triggered when a a document is unarchived
10501    pub document_unarchived: Option<Document>,
10502    /// Triggered when a document content is created
10503    pub document_content_created: Option<DocumentContent>,
10504    /// Triggered when a document content is updated
10505    pub document_content_updated: Option<DocumentContent>,
10506    /// Triggered when a document content draft is created
10507    pub document_content_draft_created: Option<DocumentContentDraft>,
10508    /// Triggered when a document content draft is updated
10509    pub document_content_draft_updated: Option<DocumentContentDraft>,
10510    /// Triggered when a document content draft is deleted
10511    pub document_content_draft_deleted: Option<DocumentContentDraft>,
10512    /// Triggered when a draft is created
10513    pub draft_created: Option<Draft>,
10514    /// Triggered when a draft is updated
10515    pub draft_updated: Option<Draft>,
10516    /// Triggered when a draft is deleted
10517    pub draft_deleted: Option<Draft>,
10518    /// Triggered when a favorite is created
10519    pub favorite_created: Option<Favorite>,
10520    /// Triggered when a favorite is updated
10521    pub favorite_updated: Option<Favorite>,
10522    /// Triggered when a favorite is deleted
10523    pub favorite_deleted: Option<Favorite>,
10524    /// Triggered when an issue is created
10525    pub issue_created: Option<Issue>,
10526    /// Triggered when an issue is updated
10527    pub issue_updated: Option<Issue>,
10528    /// Triggered when an issue is archived
10529    pub issue_archived: Option<Issue>,
10530    /// Triggered when a an issue is unarchived
10531    pub issue_unarchived: Option<Issue>,
10532    /// Triggered when an issue history is created
10533    pub issue_history_created: Option<IssueHistory>,
10534    /// Triggered when an issue history is updated
10535    pub issue_history_updated: Option<IssueHistory>,
10536    /// Triggered when an issue draft is created
10537    pub issue_draft_created: Option<IssueDraft>,
10538    /// Triggered when an issue draft is updated
10539    pub issue_draft_updated: Option<IssueDraft>,
10540    /// Triggered when an issue draft is deleted
10541    pub issue_draft_deleted: Option<IssueDraft>,
10542    /// Triggered when an issue label is created
10543    pub issue_label_created: Option<IssueLabel>,
10544    /// Triggered when an issue label is updated
10545    pub issue_label_updated: Option<IssueLabel>,
10546    /// Triggered when an issue label is deleted
10547    pub issue_label_deleted: Option<IssueLabel>,
10548    /// Triggered when an issue relation is created
10549    pub issue_relation_created: Option<IssueRelation>,
10550    /// Triggered when an issue relation is updated
10551    pub issue_relation_updated: Option<IssueRelation>,
10552    /// Triggered when an issue relation is deleted
10553    pub issue_relation_deleted: Option<IssueRelation>,
10554    /// Triggered when an organization is updated
10555    pub organization_updated: Option<Organization>,
10556    /// Triggered when a project is created
10557    pub project_created: Option<Project>,
10558    /// Triggered when a project is updated
10559    pub project_updated: Option<Project>,
10560    /// Triggered when a project is archived
10561    pub project_archived: Option<Project>,
10562    /// Triggered when a a project is unarchived
10563    pub project_unarchived: Option<Project>,
10564    /// Triggered when a project update is created
10565    pub project_update_created: Option<ProjectUpdate>,
10566    /// Triggered when a project update is updated
10567    pub project_update_updated: Option<ProjectUpdate>,
10568    /// Triggered when a project update is deleted
10569    pub project_update_deleted: Option<ProjectUpdate>,
10570    /// Triggered when a roadmap is created
10571    pub roadmap_created: Option<Roadmap>,
10572    /// Triggered when a roadmap is updated
10573    pub roadmap_updated: Option<Roadmap>,
10574    /// Triggered when a roadmap is deleted
10575    pub roadmap_deleted: Option<Roadmap>,
10576    /// Triggered when an initiative is created
10577    pub initiative_created: Option<Initiative>,
10578    /// Triggered when an initiative is updated
10579    pub initiative_updated: Option<Initiative>,
10580    /// Triggered when an initiative is deleted
10581    pub initiative_deleted: Option<Initiative>,
10582    /// Triggered when an agent session is created
10583    pub agent_session_created: Option<AgentSession>,
10584    /// Triggered when an agent session is updated
10585    pub agent_session_updated: Option<AgentSession>,
10586    /// Triggered when an agent activity is created
10587    pub agent_activity_created: Option<AgentActivity>,
10588    /// Triggered when an agent activity is updated
10589    pub agent_activity_updated: Option<AgentActivity>,
10590    /// Triggered when an ai conversation is updated
10591    pub ai_conversation_updated: Option<AiConversation>,
10592    /// Triggered when an ai prompt progress is created
10593    pub ai_prompt_progress_created: Option<AiPromptProgress>,
10594    /// Triggered when an ai prompt progress is updated
10595    pub ai_prompt_progress_updated: Option<AiPromptProgress>,
10596    /// Triggered when a team is created
10597    pub team_created: Option<Team>,
10598    /// Triggered when a team is updated
10599    pub team_updated: Option<Team>,
10600    /// Triggered when a team is deleted
10601    pub team_deleted: Option<Team>,
10602    /// Triggered when a team membership is created
10603    pub team_membership_created: Option<TeamMembership>,
10604    /// Triggered when a team membership is updated
10605    pub team_membership_updated: Option<TeamMembership>,
10606    /// Triggered when a team membership is deleted
10607    pub team_membership_deleted: Option<TeamMembership>,
10608    /// Triggered when an user is created
10609    pub user_created: Option<User>,
10610    /// Triggered when an user is updated
10611    pub user_updated: Option<User>,
10612    /// Triggered when a workflow state is created
10613    pub workflow_state_created: Option<WorkflowState>,
10614    /// Triggered when a workflow state is updated
10615    pub workflow_state_updated: Option<WorkflowState>,
10616    /// Triggered when a workflow state is archived
10617    pub workflow_state_archived: Option<WorkflowState>,
10618}
10619impl GraphQLFields for Subscription {
10620    type FullType = Self;
10621    fn selection() -> String {
10622        "".into()
10623    }
10624}
10625#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10626#[serde(rename_all = "camelCase", default)]
10627pub struct SuccessPayload {
10628    /// The identifier of the last sync operation.
10629    pub last_sync_id: Option<f64>,
10630    /// Whether the operation was successful.
10631    pub success: Option<bool>,
10632}
10633impl GraphQLFields for SuccessPayload {
10634    type FullType = Self;
10635    fn selection() -> String {
10636        "lastSyncId success".into()
10637    }
10638}
10639/// An AI-generated summary of an issue. Each issue can have at most one summary. The summary content is stored as ProseMirror data and tracks its generation status and timing.
10640#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10641#[serde(rename_all = "camelCase", default)]
10642pub struct Summary {
10643    /// The unique identifier of the entity.
10644    pub id: Option<String>,
10645    /// The time at which the entity was created.
10646    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
10647    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
10648    /// been updated after creation.
10649    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
10650    /// The time at which the entity was archived. Null if the entity has not been archived.
10651    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
10652    /// The issue that this summary was generated for.
10653    pub issue: Option<Box<Issue>>,
10654    /// The summary content as a ProseMirror document containing the AI-generated summary text.
10655    pub content: Option<serde_json::Value>,
10656    /// The evaluation log ID for this summary generation, used for tracking and debugging AI output quality. Null if not available.
10657    pub eval_log_id: Option<String>,
10658    /// The current generation status of the summary, indicating whether generation is in progress, completed, or failed.
10659    pub generation_status: Option<SummaryGenerationStatus>,
10660    /// The time at which the summary content was generated or last regenerated.
10661    pub generated_at: Option<chrono::DateTime<chrono::Utc>>,
10662}
10663impl GraphQLFields for Summary {
10664    type FullType = Self;
10665    fn selection() -> String {
10666        "id createdAt updatedAt archivedAt content evalLogId generationStatus generatedAt".into()
10667    }
10668}
10669/// A comment thread that is synced with an external source such as Slack, Jira, GitHub, Salesforce, or email. Provides information about the external thread's origin, its current sync status, and whether the user has the necessary personal integration connected to participate in the thread.
10670#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10671#[serde(rename_all = "camelCase", default)]
10672pub struct SyncedExternalThread {
10673    /// The unique identifier of this synced external thread. Auto-generated if not provided.
10674    pub id: Option<String>,
10675    /// The category of the external source (e.g., 'integration' for service integrations, 'email' for email-based threads).
10676    pub r#type: Option<String>,
10677    /// The specific integration service for the external source (e.g., 'slack', 'jira', 'github', 'salesforce'). Null if the source type does not have a sub-type.
10678    pub sub_type: Option<String>,
10679    /// A human-readable display name for the external source (e.g., 'Slack', 'Jira', 'GitHub').
10680    pub name: Option<String>,
10681    /// A human-readable display name for the thread, derived from the external source. For Slack threads this is the channel name, for Jira it's the issue key, for email it's the sender name and count of other participants.
10682    pub display_name: Option<String>,
10683    /// A URL linking to the thread in the external service. For example, a Slack message permalink, a Jira issue URL, or a GitHub issue URL.
10684    pub url: Option<String>,
10685    /// Whether this thread is currently syncing comments bidirectionally with the external service. False if the external entity relation has been removed or if the thread was explicitly unsynced.
10686    pub is_connected: Option<bool>,
10687    /// Whether the current user has a working personal integration connected for the external service. For example, whether they have connected their personal Jira, GitHub, or Slack account. A connected personal integration may still return false if it has an authentication error.
10688    pub is_personal_integration_connected: Option<bool>,
10689    /// Whether a connected personal integration is required to post comments in this synced thread. True for Jira and GitHub threads, where comments must be attributed to a specific user in the external system. False for Slack and other services where the workspace integration can post on behalf of users.
10690    pub is_personal_integration_required: Option<bool>,
10691}
10692impl GraphQLFields for SyncedExternalThread {
10693    type FullType = Self;
10694    fn selection() -> String {
10695        "id type subType name displayName url isConnected isPersonalIntegrationConnected isPersonalIntegrationRequired"
10696            .into()
10697    }
10698}
10699/// A team is the primary organizational unit in Linear. Issues belong to teams, and each team has its own workflow states, cycles, labels, and settings. Teams can be public (visible to all workspace members) or private (visible only to team members). Teams can also have sub-teams that inherit settings from their parent.
10700#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10701#[serde(rename_all = "camelCase", default)]
10702pub struct Team {
10703    /// The unique identifier of the entity.
10704    pub id: Option<String>,
10705    /// The time at which the entity was created.
10706    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
10707    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
10708    /// been updated after creation.
10709    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
10710    /// The time at which the entity was archived. Null if the entity has not been archived.
10711    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
10712    /// The team's name.
10713    pub name: Option<String>,
10714    /// The team's unique key, used as a prefix in issue identifiers (e.g., 'ENG' in 'ENG-123') and in URLs.
10715    pub key: Option<String>,
10716    /// The team's description.
10717    pub description: Option<String>,
10718    /// The icon of the team.
10719    pub icon: Option<String>,
10720    /// The team's color.
10721    pub color: Option<String>,
10722    /// The time at which the team was retired. Retired teams no longer accept new issues or members. Null if the team has not been retired.
10723    pub retired_at: Option<chrono::DateTime<chrono::Utc>>,
10724    /// The workspace that the team belongs to.
10725    pub organization: Option<Box<Organization>>,
10726    /// The team's parent team.
10727    pub parent: Option<Box<Team>>,
10728    /// `Internal` The team's sub-teams.
10729    pub children: Option<Vec<Team>>,
10730    /// Whether the team uses cycles for sprint-style issue management.
10731    pub cycles_enabled: Option<bool>,
10732    /// The day of the week that a new cycle starts (0 = Sunday, 1 = Monday, ..., 6 = Saturday).
10733    pub cycle_start_day: Option<f64>,
10734    /// The duration of each cycle in weeks.
10735    pub cycle_duration: Option<f64>,
10736    /// The cooldown time after each cycle in weeks.
10737    pub cycle_cooldown_time: Option<f64>,
10738    /// Auto assign started issues to current cycle.
10739    pub cycle_issue_auto_assign_started: Option<bool>,
10740    /// Auto assign completed issues to current cycle.
10741    pub cycle_issue_auto_assign_completed: Option<bool>,
10742    /// Auto assign issues to current cycle if in active status.
10743    pub cycle_lock_to_active: Option<bool>,
10744    /// How many upcoming cycles to create.
10745    pub upcoming_cycle_count: Option<f64>,
10746    /// The timezone of the team. Defaults to "America/Los_Angeles"
10747    pub timezone: Option<String>,
10748    /// Whether the team should inherit its workflow statuses from its parent. Only applies to sub-teams.
10749    pub inherit_workflow_statuses: Option<bool>,
10750    /// Whether the team should inherit its estimation settings from its parent. Only applies to sub-teams.
10751    pub inherit_issue_estimation: Option<bool>,
10752    /// The issue estimation type to use. Must be one of "notUsed", "exponential", "fibonacci", "linear", "tShirt".
10753    pub issue_estimation_type: Option<String>,
10754    /// `DEPRECATED` Whether issues without priority should be sorted first.
10755    pub issue_ordering_no_priority_first: Option<bool>,
10756    /// Whether to allow zeros in issues estimates.
10757    pub issue_estimation_allow_zero: Option<bool>,
10758    /// Where to move issues when changing state.
10759    pub set_issue_sort_order_on_state_change: Option<String>,
10760    /// Whether to add additional points to the estimate scale.
10761    pub issue_estimation_extended: Option<bool>,
10762    /// What to use as a default estimate for unestimated issues.
10763    pub default_issue_estimate: Option<f64>,
10764    /// Whether triage mode is enabled for the team. When enabled, issues created by non-members or integrations are routed to a triage state for review before entering the normal workflow.
10765    pub triage_enabled: Option<bool>,
10766    /// Whether an issue needs to have a priority set before leaving triage.
10767    pub require_priority_to_leave_triage: Option<bool>,
10768    /// The default workflow state into which issues are set when they are opened by team members.
10769    pub default_issue_state: Option<Box<WorkflowState>>,
10770    /// The default template to use for new issues created by members of the team.
10771    pub default_template_for_members: Option<Box<Template>>,
10772    /// The id of the default template to use for new issues created by members of the team.
10773    pub default_template_for_members_id: Option<String>,
10774    /// The default template to use for new issues created by non-members of the team.
10775    pub default_template_for_non_members: Option<Box<Template>>,
10776    /// The id of the default template to use for new issues created by non-members of the team.
10777    pub default_template_for_non_members_id: Option<String>,
10778    /// The default template to use for new projects created for the team.
10779    pub default_project_template: Option<Box<Template>>,
10780    /// The workflow state into which issues are set when they are opened by non-team members or integrations if triage is enabled.
10781    pub triage_issue_state: Option<Box<WorkflowState>>,
10782    /// Whether the team is private. Private teams are only visible to their members and require an explicit invitation to join.
10783    pub private: Option<bool>,
10784    /// Whether all members in the workspace can join the team. Only used for public teams.
10785    pub all_members_can_join: Option<bool>,
10786    /// Security settings for the team, including role-based restrictions for issue sharing, label management, member management, and template management.
10787    pub security_settings: Option<serde_json::Value>,
10788    /// `Internal` Facets associated with the team.
10789    pub facets: Option<Vec<Facet>>,
10790    /// `Internal` Posts associated with the team.
10791    pub posts: Option<Vec<Post>>,
10792    /// Whether the team is managed by a SCIM integration. SCIM-managed teams have their membership controlled by the identity provider.
10793    pub scim_managed: Option<bool>,
10794    /// The SCIM group name for the team.
10795    pub scim_group_name: Option<String>,
10796    /// `Internal` The progress history of the team.
10797    pub progress_history: Option<serde_json::Value>,
10798    /// `Internal` The current progress of the team.
10799    pub current_progress: Option<serde_json::Value>,
10800    /// The workflow state into which issues are moved when a PR has been opened as draft.
10801    pub draft_workflow_state: Option<Box<WorkflowState>>,
10802    /// The workflow state into which issues are moved when a PR has been opened.
10803    pub start_workflow_state: Option<Box<WorkflowState>>,
10804    /// The workflow state into which issues are moved when a review has been requested for the PR.
10805    pub review_workflow_state: Option<Box<WorkflowState>>,
10806    /// The workflow state into which issues are moved when a PR is ready to be merged.
10807    pub mergeable_workflow_state: Option<Box<WorkflowState>>,
10808    /// The workflow state into which issues are moved when a PR has been merged.
10809    pub merge_workflow_state: Option<Box<WorkflowState>>,
10810    /// Whether to group recent issue history entries.
10811    pub group_issue_history: Option<bool>,
10812    /// Whether to enable resolved thread AI summaries.
10813    pub ai_thread_summaries_enabled: Option<bool>,
10814    /// Whether to enable AI discussion summaries for issues in this team.
10815    pub ai_discussion_summaries_enabled: Option<bool>,
10816    /// Whether to send new issue notifications to Slack.
10817    pub slack_new_issue: Option<bool>,
10818    /// Whether to send new issue comment notifications to Slack.
10819    pub slack_issue_comments: Option<bool>,
10820    /// Whether to send new issue status updates to Slack.
10821    pub slack_issue_statuses: Option<bool>,
10822    /// Period after which issues are automatically closed in months. Null/undefined means disabled.
10823    pub auto_close_period: Option<f64>,
10824    /// The canceled workflow state which auto closed issues will be set to. Defaults to the first canceled state.
10825    pub auto_close_state_id: Option<String>,
10826    /// Period after which automatically closed, completed, and duplicate issues are automatically archived in months.
10827    pub auto_archive_period: Option<f64>,
10828    /// Whether parent issues should automatically close when all child issues are closed
10829    pub auto_close_parent_issues: Option<bool>,
10830    /// Whether child issues should automatically close when their parent issue is closed
10831    pub auto_close_child_issues: Option<bool>,
10832    /// The workflow state into which issues are moved when they are marked as a duplicate of another issue. Defaults to the first canceled state.
10833    pub marked_as_duplicate_workflow_state: Option<Box<WorkflowState>>,
10834    /// `Internal` Whether new users should join this team by default.
10835    pub join_by_default: Option<bool>,
10836    /// `Internal` Whether the team should inherit its Slack auto-create project channel setting from its parent. Only applies to sub-teams.
10837    pub inherit_slack_auto_create_project_channel: Option<bool>,
10838    /// `Internal` Whether to automatically create a Slack channel when a new project is created in this team.
10839    pub slack_auto_create_project_channel: Option<bool>,
10840    /// Calendar feed URL (iCal) for cycles.
10841    pub cycle_calender_url: Option<String>,
10842    /// The name of the team including its parent team name if it has one.
10843    pub display_name: Option<String>,
10844    /// `Internal` The team's ancestor teams, ordered from the root to the immediate parent.
10845    pub ancestors: Option<Vec<Team>>,
10846    /// Issues belonging to the team. Supports filtering and optional inclusion of sub-team issues.
10847    pub issues: Option<IssueConnection>,
10848    /// The total number of issues in the team. By default excludes archived issues; use the includeArchived argument to include them.
10849    pub issue_count: Option<i64>,
10850    /// Cycles associated with the team.
10851    pub cycles: Option<CycleConnection>,
10852    /// Team's currently active cycle.
10853    pub active_cycle: Option<Box<Cycle>>,
10854    /// Team's triage responsibility.
10855    pub triage_responsibility: Option<Box<TriageResponsibility>>,
10856    /// Users who are members of this team. Supports filtering and pagination.
10857    pub members: Option<UserConnection>,
10858    /// `ALPHA` The membership of the given user in the team.
10859    pub membership: Option<Box<TeamMembership>>,
10860    /// Memberships associated with the team. For easier access of the same data, use `members` query.
10861    pub memberships: Option<TeamMembershipConnection>,
10862    /// Projects associated with the team.
10863    pub projects: Option<ProjectConnection>,
10864    /// `ALPHA` Release pipelines associated with the team.
10865    pub release_pipelines: Option<ReleasePipelineConnection>,
10866    /// The states that define the workflow associated with the team.
10867    pub states: Option<WorkflowStateConnection>,
10868    /// The Git automation states for the team.
10869    pub git_automation_states: Option<GitAutomationStateConnection>,
10870    /// Templates associated with the team.
10871    pub templates: Option<TemplateConnection>,
10872    /// Labels associated with the team.
10873    pub labels: Option<IssueLabelConnection>,
10874    /// Webhooks associated with the team.
10875    pub webhooks: Option<WebhookConnection>,
10876    /// Settings for all integrations associated with that team.
10877    pub integrations_settings: Option<Box<IntegrationsSettings>>,
10878    /// `DEPRECATED` Whether to move issues to bottom of the column when changing state.
10879    pub issue_sort_order_default_to_bottom: Option<bool>,
10880    /// `DEPRECATED` Unique hash for the team to be used in invite URLs.
10881    pub invite_hash: Option<String>,
10882}
10883impl GraphQLFields for Team {
10884    type FullType = Self;
10885    fn selection() -> String {
10886        "id createdAt updatedAt archivedAt name key description icon color retiredAt cyclesEnabled cycleStartDay cycleDuration cycleCooldownTime cycleIssueAutoAssignStarted cycleIssueAutoAssignCompleted cycleLockToActive upcomingCycleCount timezone inheritWorkflowStatuses inheritIssueEstimation issueEstimationType issueOrderingNoPriorityFirst issueEstimationAllowZero setIssueSortOrderOnStateChange issueEstimationExtended defaultIssueEstimate triageEnabled requirePriorityToLeaveTriage defaultTemplateForMembersId defaultTemplateForNonMembersId private allMembersCanJoin securitySettings scimManaged scimGroupName progressHistory currentProgress groupIssueHistory aiThreadSummariesEnabled aiDiscussionSummariesEnabled slackNewIssue slackIssueComments slackIssueStatuses autoClosePeriod autoCloseStateId autoArchivePeriod autoCloseParentIssues autoCloseChildIssues joinByDefault inheritSlackAutoCreateProjectChannel slackAutoCreateProjectChannel cycleCalenderUrl displayName issueCount issueSortOrderDefaultToBottom inviteHash"
10887            .into()
10888    }
10889}
10890/// A generic payload return from entity archive mutations.
10891#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10892#[serde(rename_all = "camelCase", default)]
10893pub struct TeamArchivePayload {
10894    /// The identifier of the last sync operation.
10895    pub last_sync_id: Option<f64>,
10896    /// Whether the operation was successful.
10897    pub success: Option<bool>,
10898    /// The archived/unarchived entity. Null if entity was deleted.
10899    pub entity: Option<Team>,
10900}
10901impl GraphQLFields for TeamArchivePayload {
10902    type FullType = Self;
10903    fn selection() -> String {
10904        "lastSyncId success".into()
10905    }
10906}
10907#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10908#[serde(rename_all = "camelCase", default)]
10909pub struct TeamConnection {
10910    pub edges: Option<Vec<TeamEdge>>,
10911    pub nodes: Option<Vec<Team>>,
10912    pub page_info: Option<PageInfo>,
10913}
10914impl GraphQLFields for TeamConnection {
10915    type FullType = Self;
10916    fn selection() -> String {
10917        "".into()
10918    }
10919}
10920#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10921#[serde(rename_all = "camelCase", default)]
10922pub struct TeamEdge {
10923    pub node: Option<Team>,
10924    /// Used in `before` and `after` args
10925    pub cursor: Option<String>,
10926}
10927impl GraphQLFields for TeamEdge {
10928    type FullType = Self;
10929    fn selection() -> String {
10930        "cursor".into()
10931    }
10932}
10933/// A join entity that defines a user's membership in a team. Each membership record links a user to a team and tracks whether the user is a team owner. Users can be members of multiple teams, and their memberships determine which teams' issues and resources they can access.
10934#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10935#[serde(rename_all = "camelCase", default)]
10936pub struct TeamMembership {
10937    /// The unique identifier of the entity.
10938    pub id: Option<String>,
10939    /// The time at which the entity was created.
10940    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
10941    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
10942    /// been updated after creation.
10943    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
10944    /// The time at which the entity was archived. Null if the entity has not been archived.
10945    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
10946    /// The user that the membership is associated with.
10947    pub user: Option<Box<User>>,
10948    /// The team that the membership is associated with.
10949    pub team: Option<Box<Team>>,
10950    /// Whether the user is an owner of the team. Team owners have elevated permissions for managing team settings, members, and resources.
10951    pub owner: Option<bool>,
10952    /// The sort order of this team in the user's personal team list. Lower values appear first.
10953    pub sort_order: Option<f64>,
10954}
10955impl GraphQLFields for TeamMembership {
10956    type FullType = Self;
10957    fn selection() -> String {
10958        "id createdAt updatedAt archivedAt owner sortOrder".into()
10959    }
10960}
10961#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10962#[serde(rename_all = "camelCase", default)]
10963pub struct TeamMembershipConnection {
10964    pub edges: Option<Vec<TeamMembershipEdge>>,
10965    pub nodes: Option<Vec<TeamMembership>>,
10966    pub page_info: Option<PageInfo>,
10967}
10968impl GraphQLFields for TeamMembershipConnection {
10969    type FullType = Self;
10970    fn selection() -> String {
10971        "".into()
10972    }
10973}
10974#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10975#[serde(rename_all = "camelCase", default)]
10976pub struct TeamMembershipEdge {
10977    pub node: Option<TeamMembership>,
10978    /// Used in `before` and `after` args
10979    pub cursor: Option<String>,
10980}
10981impl GraphQLFields for TeamMembershipEdge {
10982    type FullType = Self;
10983    fn selection() -> String {
10984        "cursor".into()
10985    }
10986}
10987/// Team membership operation response.
10988#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10989#[serde(rename_all = "camelCase", default)]
10990pub struct TeamMembershipPayload {
10991    /// The identifier of the last sync operation.
10992    pub last_sync_id: Option<f64>,
10993    /// The team membership that was created or updated.
10994    pub team_membership: Option<TeamMembership>,
10995    /// Whether the operation was successful.
10996    pub success: Option<bool>,
10997}
10998impl GraphQLFields for TeamMembershipPayload {
10999    type FullType = Self;
11000    fn selection() -> String {
11001        "lastSyncId success".into()
11002    }
11003}
11004/// A notification subscription scoped to a specific team. The subscriber receives notifications for events related to issues and activity in this team.
11005#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11006#[serde(rename_all = "camelCase", default)]
11007pub struct TeamNotificationSubscription {
11008    /// The unique identifier of the entity.
11009    pub id: Option<String>,
11010    /// The time at which the entity was created.
11011    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
11012    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
11013    /// been updated after creation.
11014    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
11015    /// The time at which the entity was archived. Null if the entity has not been archived.
11016    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
11017    /// The user who will receive notifications from this subscription.
11018    pub subscriber: Option<User>,
11019    /// The customer that this notification subscription is scoped to. Null if the subscription targets a different entity type.
11020    pub customer: Option<Customer>,
11021    /// The custom view that this notification subscription is scoped to. Null if the subscription targets a different entity type.
11022    pub custom_view: Option<CustomView>,
11023    /// The cycle that this notification subscription is scoped to. Null if the subscription targets a different entity type.
11024    pub cycle: Option<Cycle>,
11025    /// The issue label that this notification subscription is scoped to. Null if the subscription targets a different entity type.
11026    pub label: Option<IssueLabel>,
11027    /// The project that this notification subscription is scoped to. Null if the subscription targets a different entity type.
11028    pub project: Option<Project>,
11029    /// The initiative that this notification subscription is scoped to. Null if the subscription targets a different entity type.
11030    pub initiative: Option<Initiative>,
11031    /// The team subscribed to.
11032    pub team: Option<Team>,
11033    /// The user that this notification subscription is scoped to, for user-specific view subscriptions. Null if the subscription targets a different entity type.
11034    pub user: Option<User>,
11035    /// The type of contextual view (e.g., active issues, backlog) that further scopes a team notification subscription. Null if the subscription is not associated with a specific view type.
11036    pub context_view_type: Option<ContextViewType>,
11037    /// The type of user-specific view that further scopes a user notification subscription. Null if the subscription is not associated with a user view type.
11038    pub user_context_view_type: Option<UserContextViewType>,
11039    /// Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists.
11040    pub active: Option<bool>,
11041    /// The notification event types that this subscription will deliver to the subscriber.
11042    pub notification_subscription_types: Option<Vec<String>>,
11043}
11044impl GraphQLFields for TeamNotificationSubscription {
11045    type FullType = Self;
11046    fn selection() -> String {
11047        "id createdAt updatedAt archivedAt contextViewType userContextViewType active notificationSubscriptionTypes"
11048            .into()
11049    }
11050}
11051/// Team operation response.
11052#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11053#[serde(rename_all = "camelCase", default)]
11054pub struct TeamPayload {
11055    /// The identifier of the last sync operation.
11056    pub last_sync_id: Option<f64>,
11057    /// The team that was created or updated.
11058    pub team: Option<Team>,
11059    /// Whether the operation was successful.
11060    pub success: Option<bool>,
11061}
11062impl GraphQLFields for TeamPayload {
11063    type FullType = Self;
11064    fn selection() -> String {
11065        "lastSyncId success".into()
11066    }
11067}
11068/// A reusable template for creating issues, projects, or documents. Templates store pre-filled field values and content as JSON data. They can be scoped to a specific team or shared across the entire workspace. Team-scoped templates may be inherited from parent teams.
11069#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11070#[serde(rename_all = "camelCase", default)]
11071pub struct Template {
11072    /// The unique identifier of the entity.
11073    pub id: Option<String>,
11074    /// The time at which the entity was created.
11075    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
11076    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
11077    /// been updated after creation.
11078    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
11079    /// The time at which the entity was archived. Null if the entity has not been archived.
11080    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
11081    /// The entity type this template is for, such as 'issue', 'project', or 'document'.
11082    pub r#type: Option<String>,
11083    /// The name of the template.
11084    pub name: Option<String>,
11085    /// A description of what the template is used for.
11086    pub description: Option<String>,
11087    /// The icon of the template, either a decorative icon type or an emoji string. Null if no icon has been set.
11088    pub icon: Option<String>,
11089    /// The hex color of the template icon. Null if no custom color has been set.
11090    pub color: Option<String>,
11091    /// The template data as a JSON-encoded string containing the pre-filled attributes for the entity type (e.g., issue fields, project configuration, or document content).
11092    pub template_data: Option<serde_json::Value>,
11093    /// The sort order of the template within the templates list.
11094    pub sort_order: Option<f64>,
11095    /// The date when the template was last applied to create or update an entity. Null if the template has never been applied.
11096    pub last_applied_at: Option<chrono::DateTime<chrono::Utc>>,
11097    /// The workspace that owns this template.
11098    pub organization: Option<Box<Organization>>,
11099    /// The team that the template is associated with. If null, the template is global to the workspace.
11100    pub team: Option<Box<Team>>,
11101    /// The user who created the template. Null if the creator's account has been deleted.
11102    pub creator: Option<Box<User>>,
11103    /// The user who last updated the template. Null if the user's account has been deleted.
11104    pub last_updated_by: Option<Box<User>>,
11105    /// The parent team template this template was inherited from. Null for original (non-inherited) templates.
11106    pub inherited_from: Option<Box<Template>>,
11107    /// `Internal` Whether the template has form fields
11108    pub has_form_fields: Option<bool>,
11109}
11110impl GraphQLFields for Template {
11111    type FullType = Self;
11112    fn selection() -> String {
11113        "id createdAt updatedAt archivedAt type name description icon color templateData sortOrder lastAppliedAt hasFormFields"
11114            .into()
11115    }
11116}
11117#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11118#[serde(rename_all = "camelCase", default)]
11119pub struct TemplateConnection {
11120    pub edges: Option<Vec<TemplateEdge>>,
11121    pub nodes: Option<Vec<Template>>,
11122    pub page_info: Option<PageInfo>,
11123}
11124impl GraphQLFields for TemplateConnection {
11125    type FullType = Self;
11126    fn selection() -> String {
11127        "".into()
11128    }
11129}
11130#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11131#[serde(rename_all = "camelCase", default)]
11132pub struct TemplateEdge {
11133    pub node: Option<Template>,
11134    /// Used in `before` and `after` args
11135    pub cursor: Option<String>,
11136}
11137impl GraphQLFields for TemplateEdge {
11138    type FullType = Self;
11139    fn selection() -> String {
11140        "cursor".into()
11141    }
11142}
11143/// The result of a template mutation.
11144#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11145#[serde(rename_all = "camelCase", default)]
11146pub struct TemplatePayload {
11147    /// The identifier of the last sync operation.
11148    pub last_sync_id: Option<f64>,
11149    /// The template that was created or updated.
11150    pub template: Option<Template>,
11151    /// Whether the operation was successful.
11152    pub success: Option<bool>,
11153}
11154impl GraphQLFields for TemplatePayload {
11155    type FullType = Self;
11156    fn selection() -> String {
11157        "lastSyncId success".into()
11158    }
11159}
11160/// A time-based schedule defining on-call rotations or availability windows. Schedules contain a series of time entries, each specifying a user and their active period. They can be synced from external services (such as PagerDuty or Opsgenie) via integrations, or created manually. Schedules are used by triage responsibilities to determine who should be assigned or notified when issues enter triage.
11161#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11162#[serde(rename_all = "camelCase", default)]
11163pub struct TimeSchedule {
11164    /// The unique identifier of the entity.
11165    pub id: Option<String>,
11166    /// The time at which the entity was created.
11167    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
11168    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
11169    /// been updated after creation.
11170    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
11171    /// The time at which the entity was archived. Null if the entity has not been archived.
11172    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
11173    /// The name of the schedule.
11174    pub name: Option<String>,
11175    /// The schedule entries.
11176    pub entries: Option<Vec<TimeScheduleEntry>>,
11177    /// The identifier of the external schedule.
11178    pub external_id: Option<String>,
11179    /// The URL to the external schedule.
11180    pub external_url: Option<String>,
11181    /// The workspace of the schedule.
11182    pub organization: Option<Box<Organization>>,
11183    /// The identifier of the Linear integration populating the schedule.
11184    pub integration: Option<Box<Integration>>,
11185}
11186impl GraphQLFields for TimeSchedule {
11187    type FullType = Self;
11188    fn selection() -> String {
11189        "id createdAt updatedAt archivedAt name externalId externalUrl".into()
11190    }
11191}
11192#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11193#[serde(rename_all = "camelCase", default)]
11194pub struct TimeScheduleConnection {
11195    pub edges: Option<Vec<TimeScheduleEdge>>,
11196    pub nodes: Option<Vec<TimeSchedule>>,
11197    pub page_info: Option<PageInfo>,
11198}
11199impl GraphQLFields for TimeScheduleConnection {
11200    type FullType = Self;
11201    fn selection() -> String {
11202        "".into()
11203    }
11204}
11205#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11206#[serde(rename_all = "camelCase", default)]
11207pub struct TimeScheduleEdge {
11208    pub node: Option<TimeSchedule>,
11209    /// Used in `before` and `after` args
11210    pub cursor: Option<String>,
11211}
11212impl GraphQLFields for TimeScheduleEdge {
11213    type FullType = Self;
11214    fn selection() -> String {
11215        "cursor".into()
11216    }
11217}
11218/// A single entry in a time schedule, defining a time range and the user responsible during that period.
11219#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11220#[serde(rename_all = "camelCase", default)]
11221pub struct TimeScheduleEntry {
11222    /// The start time of the schedule entry in ISO 8601 date-time format.
11223    pub starts_at: Option<chrono::DateTime<chrono::Utc>>,
11224    /// The end time of the schedule entry in ISO 8601 date-time format.
11225    pub ends_at: Option<chrono::DateTime<chrono::Utc>>,
11226    /// 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.
11227    pub user_id: Option<String>,
11228    /// 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.
11229    pub user_email: Option<String>,
11230}
11231impl GraphQLFields for TimeScheduleEntry {
11232    type FullType = Self;
11233    fn selection() -> String {
11234        "startsAt endsAt userId userEmail".into()
11235    }
11236}
11237/// The result of a time schedule mutation.
11238#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11239#[serde(rename_all = "camelCase", default)]
11240pub struct TimeSchedulePayload {
11241    /// The identifier of the last sync operation.
11242    pub last_sync_id: Option<f64>,
11243    /// The time schedule that was created or updated.
11244    pub time_schedule: Option<TimeSchedule>,
11245    /// Whether the operation was successful.
11246    pub success: Option<bool>,
11247}
11248impl GraphQLFields for TimeSchedulePayload {
11249    type FullType = Self;
11250    fn selection() -> String {
11251        "lastSyncId success".into()
11252    }
11253}
11254/// A team's triage responsibility configuration that defines how issues entering triage are handled. Each team can have one triage responsibility, which specifies the action to take (notify or assign) and the responsible users, determined either by a manual selection of specific users or by an on-call time schedule.
11255#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11256#[serde(rename_all = "camelCase", default)]
11257pub struct TriageResponsibility {
11258    /// The unique identifier of the entity.
11259    pub id: Option<String>,
11260    /// The time at which the entity was created.
11261    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
11262    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
11263    /// been updated after creation.
11264    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
11265    /// The time at which the entity was archived. Null if the entity has not been archived.
11266    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
11267    /// The action to take when an issue is added to triage.
11268    pub action: Option<TriageResponsibilityAction>,
11269    /// Set of users used for triage responsibility.
11270    pub manual_selection: Option<TriageResponsibilityManualSelection>,
11271    /// The team to which the triage responsibility belongs to.
11272    pub team: Option<Box<Team>>,
11273    /// The time schedule used for scheduling.
11274    pub time_schedule: Option<Box<TimeSchedule>>,
11275    /// The user currently responsible for triage.
11276    pub current_user: Option<Box<User>>,
11277}
11278impl GraphQLFields for TriageResponsibility {
11279    type FullType = Self;
11280    fn selection() -> String {
11281        "id createdAt updatedAt archivedAt action".into()
11282    }
11283}
11284#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11285#[serde(rename_all = "camelCase", default)]
11286pub struct TriageResponsibilityConnection {
11287    pub edges: Option<Vec<TriageResponsibilityEdge>>,
11288    pub nodes: Option<Vec<TriageResponsibility>>,
11289    pub page_info: Option<PageInfo>,
11290}
11291impl GraphQLFields for TriageResponsibilityConnection {
11292    type FullType = Self;
11293    fn selection() -> String {
11294        "".into()
11295    }
11296}
11297#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11298#[serde(rename_all = "camelCase", default)]
11299pub struct TriageResponsibilityEdge {
11300    pub node: Option<TriageResponsibility>,
11301    /// Used in `before` and `after` args
11302    pub cursor: Option<String>,
11303}
11304impl GraphQLFields for TriageResponsibilityEdge {
11305    type FullType = Self;
11306    fn selection() -> String {
11307        "cursor".into()
11308    }
11309}
11310/// Manual triage responsibility configuration specifying a set of users to assign triaged issues to, with optional round-robin rotation.
11311#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11312#[serde(rename_all = "camelCase", default)]
11313pub struct TriageResponsibilityManualSelection {
11314    /// The set of users responsible for triage.
11315    pub user_ids: Option<Vec<String>>,
11316    /// `Internal` The index of the current userId used for the assign action when having more than one user.
11317    pub assignment_index: Option<i64>,
11318}
11319impl GraphQLFields for TriageResponsibilityManualSelection {
11320    type FullType = Self;
11321    fn selection() -> String {
11322        "userIds assignmentIndex".into()
11323    }
11324}
11325/// The result of a triage responsibility mutation.
11326#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11327#[serde(rename_all = "camelCase", default)]
11328pub struct TriageResponsibilityPayload {
11329    /// The identifier of the last sync operation.
11330    pub last_sync_id: Option<f64>,
11331    /// The triage responsibility that was created or updated.
11332    pub triage_responsibility: Option<TriageResponsibility>,
11333    /// Whether the operation was successful.
11334    pub success: Option<bool>,
11335}
11336impl GraphQLFields for TriageResponsibilityPayload {
11337    type FullType = Self;
11338    fn selection() -> String {
11339        "lastSyncId success".into()
11340    }
11341}
11342/// Represents a file upload destination with a pre-signed upload URL, asset URL, and required request headers for uploading to cloud storage.
11343#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11344#[serde(rename_all = "camelCase", default)]
11345pub struct UploadFile {
11346    /// The filename.
11347    pub filename: Option<String>,
11348    /// The content type.
11349    pub content_type: Option<String>,
11350    /// The size of the uploaded file.
11351    pub size: Option<i64>,
11352    /// The pre-signed URL to which the file should be uploaded via a PUT request.
11353    pub upload_url: Option<String>,
11354    /// The permanent asset URL where the file will be accessible after upload.
11355    pub asset_url: Option<String>,
11356    /// Optional metadata associated with the upload, such as the related issue or comment ID.
11357    pub meta_data: Option<serde_json::Value>,
11358    /// HTTP headers that must be included in the PUT request to the upload URL.
11359    pub headers: Option<Vec<UploadFileHeader>>,
11360}
11361impl GraphQLFields for UploadFile {
11362    type FullType = Self;
11363    fn selection() -> String {
11364        "filename contentType size uploadUrl assetUrl metaData".into()
11365    }
11366}
11367#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11368#[serde(rename_all = "camelCase", default)]
11369pub struct UploadFileHeader {
11370    /// Upload file header key.
11371    pub key: Option<String>,
11372    /// Upload file header value.
11373    pub value: Option<String>,
11374}
11375impl GraphQLFields for UploadFileHeader {
11376    type FullType = Self;
11377    fn selection() -> String {
11378        "key value".into()
11379    }
11380}
11381#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11382#[serde(rename_all = "camelCase", default)]
11383pub struct UploadPayload {
11384    /// The identifier of the last sync operation.
11385    pub last_sync_id: Option<f64>,
11386    /// The upload file details including signed URL, asset URL, and required headers. Null if the upload could not be prepared.
11387    pub upload_file: Option<UploadFile>,
11388    /// Whether the operation was successful.
11389    pub success: Option<bool>,
11390}
11391impl GraphQLFields for UploadPayload {
11392    type FullType = Self;
11393    fn selection() -> String {
11394        "lastSyncId success".into()
11395    }
11396}
11397/// A user that belongs to a workspace. Users can have different roles (admin, member, guest, or app) that determine their level of access. Users can be members of multiple teams, and can be active or deactivated. Guest users have limited access scoped to specific teams they are invited to.
11398#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11399#[serde(rename_all = "camelCase", default)]
11400pub struct User {
11401    /// The unique identifier of the entity.
11402    pub id: Option<String>,
11403    /// The time at which the entity was created.
11404    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
11405    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
11406    /// been updated after creation.
11407    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
11408    /// The time at which the entity was archived. Null if the entity has not been archived.
11409    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
11410    /// The user's full name.
11411    pub name: Option<String>,
11412    /// The user's display (nick) name. Must be unique within the workspace.
11413    pub display_name: Option<String>,
11414    /// The user's email address.
11415    pub email: Option<String>,
11416    /// An URL to the user's avatar image.
11417    pub avatar_url: Option<String>,
11418    /// The reason why the user account is disabled. Null if the user is active. Possible values include admin suspension, downgrade, voluntary departure, or pending invite.
11419    pub disable_reason: Option<String>,
11420    /// `DEPRECATED` Hash for the user to be used in calendar URLs.
11421    pub calendar_hash: Option<String>,
11422    /// A short description of the user, such as their title or a brief bio.
11423    pub description: Option<String>,
11424    /// The user's job title.
11425    pub title: Option<String>,
11426    /// The emoji representing the user's current status. Null if no status is set.
11427    pub status_emoji: Option<String>,
11428    /// The text label of the user's current status. Null if no status is set.
11429    pub status_label: Option<String>,
11430    /// The date and time at which the user's current status should be automatically cleared. Null if the status has no expiration.
11431    pub status_until_at: Option<chrono::DateTime<chrono::Utc>>,
11432    /// The local timezone of the user.
11433    pub timezone: Option<String>,
11434    /// The workspace that the user belongs to.
11435    pub organization: Option<Box<Organization>>,
11436    /// The last time the user was seen online. Updated based on user activity. Null if the user has never been seen.
11437    pub last_seen: Option<chrono::DateTime<chrono::Utc>>,
11438    /// `INTERNAL` Identity provider the user is managed by.
11439    pub identity_provider: Option<IdentityProvider>,
11440    /// The initials of the user.
11441    pub initials: Option<String>,
11442    /// The background color of the avatar for users without set avatar.
11443    pub avatar_background_color: Option<String>,
11444    /// Whether the user is a guest in the workspace and limited to accessing a subset of teams.
11445    pub guest: Option<bool>,
11446    /// Whether the user is an app.
11447    pub app: Option<bool>,
11448    /// Whether the user is mentionable.
11449    pub is_mentionable: Option<bool>,
11450    /// Whether the user account is active or disabled (suspended).
11451    pub active: Option<bool>,
11452    /// Issue drafts that the user has created but not yet submitted.
11453    pub issue_drafts: Option<IssueDraftConnection>,
11454    /// The user's saved drafts.
11455    pub drafts: Option<DraftConnection>,
11456    /// User's profile URL.
11457    pub url: Option<String>,
11458    /// Issues assigned to the user.
11459    pub assigned_issues: Option<IssueConnection>,
11460    /// Issues delegated to this user.
11461    pub delegated_issues: Option<IssueConnection>,
11462    /// Issues created by the user.
11463    pub created_issues: Option<IssueConnection>,
11464    /// Number of issues created.
11465    pub created_issue_count: Option<i64>,
11466    /// Teams the user is a member of. Supports filtering by team properties.
11467    pub teams: Option<TeamConnection>,
11468    /// Memberships associated with the user. For easier access of the same data, use `teams` query.
11469    pub team_memberships: Option<TeamMembershipConnection>,
11470    /// `INTERNAL` The user's pinned feeds.
11471    pub feed_facets: Option<FacetConnection>,
11472    /// Whether this user can access any public team in the workspace. True for non-guest members and app users with public team access.
11473    pub can_access_any_public_team: Option<bool>,
11474    /// Whether the user is the currently authenticated user.
11475    pub is_me: Option<bool>,
11476    /// Whether the user is a workspace administrator. On Free plans, all members are treated as admins.
11477    pub admin: Option<bool>,
11478    /// Whether the user is a workspace owner, which is the highest permission level.
11479    pub owner: Option<bool>,
11480    /// Whether the user can be assigned to issues. Regular users are always assignable; app users are assignable only if they have the app:assignable scope.
11481    pub is_assignable: Option<bool>,
11482    /// Whether this agent user supports agent sessions.
11483    pub supports_agent_sessions: Option<bool>,
11484    /// `DEPRECATED` Unique hash for the user to be used in invite URLs.
11485    pub invite_hash: Option<String>,
11486    /// The user's GitHub user ID.
11487    pub git_hub_user_id: Option<String>,
11488}
11489impl GraphQLFields for User {
11490    type FullType = Self;
11491    fn selection() -> String {
11492        "id createdAt updatedAt archivedAt name displayName email avatarUrl disableReason calendarHash description title statusEmoji statusLabel statusUntilAt timezone lastSeen initials avatarBackgroundColor guest app isMentionable active url createdIssueCount canAccessAnyPublicTeam isMe admin owner isAssignable supportsAgentSessions inviteHash gitHubUserId"
11493            .into()
11494    }
11495}
11496/// User admin operation response.
11497#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11498#[serde(rename_all = "camelCase", default)]
11499pub struct UserAdminPayload {
11500    /// Whether the operation was successful.
11501    pub success: Option<bool>,
11502}
11503impl GraphQLFields for UserAdminPayload {
11504    type FullType = Self;
11505    fn selection() -> String {
11506        "success".into()
11507    }
11508}
11509#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11510#[serde(rename_all = "camelCase", default)]
11511pub struct UserConnection {
11512    pub edges: Option<Vec<UserEdge>>,
11513    pub nodes: Option<Vec<User>>,
11514    pub page_info: Option<PageInfo>,
11515}
11516impl GraphQLFields for UserConnection {
11517    type FullType = Self;
11518    fn selection() -> String {
11519        "".into()
11520    }
11521}
11522#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11523#[serde(rename_all = "camelCase", default)]
11524pub struct UserEdge {
11525    pub node: Option<User>,
11526    /// Used in `before` and `after` args
11527    pub cursor: Option<String>,
11528}
11529impl GraphQLFields for UserEdge {
11530    type FullType = Self;
11531    fn selection() -> String {
11532        "cursor".into()
11533    }
11534}
11535/// A notification subscription scoped to a specific user view. The subscriber receives notifications for events in the context of a particular user's activity view.
11536#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11537#[serde(rename_all = "camelCase", default)]
11538pub struct UserNotificationSubscription {
11539    /// The unique identifier of the entity.
11540    pub id: Option<String>,
11541    /// The time at which the entity was created.
11542    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
11543    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
11544    /// been updated after creation.
11545    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
11546    /// The time at which the entity was archived. Null if the entity has not been archived.
11547    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
11548    /// The user who will receive notifications from this subscription.
11549    pub subscriber: Option<User>,
11550    /// The customer that this notification subscription is scoped to. Null if the subscription targets a different entity type.
11551    pub customer: Option<Customer>,
11552    /// The custom view that this notification subscription is scoped to. Null if the subscription targets a different entity type.
11553    pub custom_view: Option<CustomView>,
11554    /// The cycle that this notification subscription is scoped to. Null if the subscription targets a different entity type.
11555    pub cycle: Option<Cycle>,
11556    /// The issue label that this notification subscription is scoped to. Null if the subscription targets a different entity type.
11557    pub label: Option<IssueLabel>,
11558    /// The project that this notification subscription is scoped to. Null if the subscription targets a different entity type.
11559    pub project: Option<Project>,
11560    /// The initiative that this notification subscription is scoped to. Null if the subscription targets a different entity type.
11561    pub initiative: Option<Initiative>,
11562    /// The team that this notification subscription is scoped to. Null if the subscription targets a different entity type.
11563    pub team: Option<Team>,
11564    /// The user subscribed to.
11565    pub user: Option<User>,
11566    /// The type of contextual view (e.g., active issues, backlog) that further scopes a team notification subscription. Null if the subscription is not associated with a specific view type.
11567    pub context_view_type: Option<ContextViewType>,
11568    /// The type of user-specific view that further scopes a user notification subscription. Null if the subscription is not associated with a user view type.
11569    pub user_context_view_type: Option<UserContextViewType>,
11570    /// Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists.
11571    pub active: Option<bool>,
11572    /// The notification event types that this subscription will deliver to the subscriber.
11573    pub notification_subscription_types: Option<Vec<String>>,
11574}
11575impl GraphQLFields for UserNotificationSubscription {
11576    type FullType = Self;
11577    fn selection() -> String {
11578        "id createdAt updatedAt archivedAt contextViewType userContextViewType active notificationSubscriptionTypes"
11579            .into()
11580    }
11581}
11582/// User operation response.
11583#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11584#[serde(rename_all = "camelCase", default)]
11585pub struct UserPayload {
11586    /// The identifier of the last sync operation.
11587    pub last_sync_id: Option<f64>,
11588    /// The user that was created or updated.
11589    pub user: Option<User>,
11590    /// Whether the operation was successful.
11591    pub success: Option<bool>,
11592}
11593impl GraphQLFields for UserPayload {
11594    type FullType = Self;
11595    fn selection() -> String {
11596        "lastSyncId success".into()
11597    }
11598}
11599/// Per-user settings and preferences for a workspace member. Includes notification delivery preferences, email subscription settings, notification category and channel preferences, theme configuration, and various UI preferences. Each user has exactly one UserSettings record per workspace.
11600#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11601#[serde(rename_all = "camelCase", default)]
11602pub struct UserSettings {
11603    /// The unique identifier of the entity.
11604    pub id: Option<String>,
11605    /// The time at which the entity was created.
11606    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
11607    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
11608    /// been updated after creation.
11609    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
11610    /// The time at which the entity was archived. Null if the entity has not been archived.
11611    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
11612    /// The notification delivery preferences for the user. Note: notificationDisabled field is deprecated in favor of notificationChannelPreferences.
11613    pub notification_delivery_preferences: Option<NotificationDeliveryPreferences>,
11614    /// The email types the user has unsubscribed from.
11615    pub unsubscribed_from: Option<Vec<String>>,
11616    /// The user that these settings belong to.
11617    pub user: Option<User>,
11618    /// A unique hash for the user, used to construct secure calendar subscription URLs.
11619    pub calendar_hash: Option<String>,
11620    /// Whether this user is subscribed to receive changelog emails about Linear product updates.
11621    pub subscribed_to_changelog: Option<bool>,
11622    /// Whether this user is subscribed to receive Data Processing Agreement (DPA) related emails.
11623    pub subscribed_to_dpa: Option<bool>,
11624    /// Whether this user is subscribed to receive email notifications when their workspace invitations are accepted.
11625    pub subscribed_to_invite_accepted: Option<bool>,
11626    /// Whether this user is subscribed to receive emails about privacy policy and legal updates.
11627    pub subscribed_to_privacy_legal_updates: Option<bool>,
11628    /// The user's preferred schedule for receiving feed summary digests. Null if the user has not set a preference and will use the workspace default.
11629    pub feed_summary_schedule: Option<FeedSummarySchedule>,
11630    /// Whether to show full user names instead of display names.
11631    pub show_full_user_names: Option<bool>,
11632    /// The user's last seen time for the pulse feed.
11633    pub feed_last_seen_time: Option<chrono::DateTime<chrono::Utc>>,
11634    /// Whether to auto-assign newly created issues to the current user by default.
11635    pub auto_assign_to_self: Option<bool>,
11636    /// The user's notification category preferences, indicating which notification categories are enabled or disabled per notification channel.
11637    pub notification_category_preferences: Option<NotificationCategoryPreferences>,
11638    /// The user's notification channel preferences, indicating which notification delivery channels (email, in-app, mobile push, Slack) are enabled.
11639    pub notification_channel_preferences: Option<NotificationChannelPreferences>,
11640    /// The user's theme configuration for the specified color mode (light/dark) and device type (desktop/mobile). Returns null if no valid theme preset is configured.
11641    pub theme: Option<UserSettingsTheme>,
11642}
11643impl GraphQLFields for UserSettings {
11644    type FullType = Self;
11645    fn selection() -> String {
11646        "id createdAt updatedAt archivedAt unsubscribedFrom calendarHash subscribedToChangelog subscribedToDPA subscribedToInviteAccepted subscribedToPrivacyLegalUpdates feedSummarySchedule showFullUserNames feedLastSeenTime autoAssignToSelf"
11647            .into()
11648    }
11649}
11650/// Custom sidebar theme definition with accent, base colors and contrast.
11651#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11652#[serde(rename_all = "camelCase", default)]
11653pub struct UserSettingsCustomSidebarTheme {
11654    /// The accent color in LCH format.
11655    pub accent: Option<Vec<f64>>,
11656    /// The base color in LCH format.
11657    pub base: Option<Vec<f64>>,
11658    /// The contrast value.
11659    pub contrast: Option<i64>,
11660}
11661impl GraphQLFields for UserSettingsCustomSidebarTheme {
11662    type FullType = Self;
11663    fn selection() -> String {
11664        "accent base contrast".into()
11665    }
11666}
11667/// Custom theme definition with accent, base colors, contrast, and optional sidebar theme.
11668#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11669#[serde(rename_all = "camelCase", default)]
11670pub struct UserSettingsCustomTheme {
11671    /// The accent color in LCH format.
11672    pub accent: Option<Vec<f64>>,
11673    /// The base color in LCH format.
11674    pub base: Option<Vec<f64>>,
11675    /// The contrast value.
11676    pub contrast: Option<i64>,
11677    /// Optional sidebar theme colors.
11678    pub sidebar: Option<UserSettingsCustomSidebarTheme>,
11679}
11680impl GraphQLFields for UserSettingsCustomTheme {
11681    type FullType = Self;
11682    fn selection() -> String {
11683        "accent base contrast".into()
11684    }
11685}
11686/// User settings flag update response.
11687#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11688#[serde(rename_all = "camelCase", default)]
11689pub struct UserSettingsFlagPayload {
11690    /// The identifier of the last sync operation.
11691    pub last_sync_id: Option<f64>,
11692    /// The flag key which was updated.
11693    pub flag: Option<String>,
11694    /// The flag value after update.
11695    pub value: Option<i64>,
11696    /// Whether the operation was successful.
11697    pub success: Option<bool>,
11698}
11699impl GraphQLFields for UserSettingsFlagPayload {
11700    type FullType = Self;
11701    fn selection() -> String {
11702        "lastSyncId flag value success".into()
11703    }
11704}
11705/// User settings flags reset response.
11706#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11707#[serde(rename_all = "camelCase", default)]
11708pub struct UserSettingsFlagsResetPayload {
11709    /// The identifier of the last sync operation.
11710    pub last_sync_id: Option<f64>,
11711    /// Whether the operation was successful.
11712    pub success: Option<bool>,
11713}
11714impl GraphQLFields for UserSettingsFlagsResetPayload {
11715    type FullType = Self;
11716    fn selection() -> String {
11717        "lastSyncId success".into()
11718    }
11719}
11720/// User settings operation response.
11721#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11722#[serde(rename_all = "camelCase", default)]
11723pub struct UserSettingsPayload {
11724    /// The identifier of the last sync operation.
11725    pub last_sync_id: Option<f64>,
11726    /// The user's settings.
11727    pub user_settings: Option<UserSettings>,
11728    /// Whether the operation was successful.
11729    pub success: Option<bool>,
11730}
11731impl GraphQLFields for UserSettingsPayload {
11732    type FullType = Self;
11733    fn selection() -> String {
11734        "lastSyncId success".into()
11735    }
11736}
11737/// The user's resolved theme configuration for a specific color mode and device type.
11738#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11739#[serde(rename_all = "camelCase", default)]
11740pub struct UserSettingsTheme {
11741    /// The theme preset.
11742    pub preset: Option<UserSettingsThemePreset>,
11743    /// The custom theme definition, only present when preset is 'custom'.
11744    pub custom: Option<UserSettingsCustomTheme>,
11745}
11746impl GraphQLFields for UserSettingsTheme {
11747    type FullType = Self;
11748    fn selection() -> String {
11749        "preset".into()
11750    }
11751}
11752/// The display preferences for a view, controlling layout mode (list, board, spreadsheet), grouping, sorting, column visibility, and other visual settings. View preferences exist at two levels: organization-wide defaults and per-user overrides. The effective preferences are computed by merging both layers, with user preferences taking priority.
11753#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11754#[serde(rename_all = "camelCase", default)]
11755pub struct ViewPreferences {
11756    /// The unique identifier of the entity.
11757    pub id: Option<String>,
11758    /// The time at which the entity was created.
11759    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
11760    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
11761    /// been updated after creation.
11762    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
11763    /// The time at which the entity was archived. Null if the entity has not been archived.
11764    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
11765    /// The type of view preferences: "organization" for workspace-wide defaults or "user" for personal overrides.
11766    pub r#type: Option<String>,
11767    /// The type of view these preferences apply to, such as board, cycle, project, customView, myIssues, etc.
11768    pub view_type: Option<String>,
11769    /// The view preferences values, containing layout, grouping, sorting, and field visibility settings.
11770    pub preferences: Option<ViewPreferencesValues>,
11771}
11772impl GraphQLFields for ViewPreferences {
11773    type FullType = Self;
11774    fn selection() -> String {
11775        "id createdAt updatedAt archivedAt type viewType".into()
11776    }
11777}
11778/// The result of a view preferences mutation.
11779#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11780#[serde(rename_all = "camelCase", default)]
11781pub struct ViewPreferencesPayload {
11782    /// The identifier of the last sync operation.
11783    pub last_sync_id: Option<f64>,
11784    /// The view preferences entity being mutated.
11785    pub view_preferences: Option<ViewPreferences>,
11786    /// Whether the operation was successful.
11787    pub success: Option<bool>,
11788}
11789impl GraphQLFields for ViewPreferencesPayload {
11790    type FullType = Self;
11791    fn selection() -> String {
11792        "lastSyncId success".into()
11793    }
11794}
11795/// A label group column configuration for the project list view.
11796#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11797#[serde(rename_all = "camelCase", default)]
11798pub struct ViewPreferencesProjectLabelGroupColumn {
11799    /// The identifier of the label group.
11800    pub id: Option<String>,
11801    /// Whether the label group column is active.
11802    pub active: Option<bool>,
11803}
11804impl GraphQLFields for ViewPreferencesProjectLabelGroupColumn {
11805    type FullType = Self;
11806    fn selection() -> String {
11807        "id active".into()
11808    }
11809}
11810/// The computed view preferences values for a view, containing all display settings such as layout mode, grouping, sorting, field visibility, and other visual configuration. These values represent the merged result of organization defaults and user overrides.
11811#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11812#[serde(rename_all = "camelCase", default)]
11813pub struct ViewPreferencesValues {
11814    /// The issue layout type.
11815    pub layout: Option<String>,
11816    /// The issue ordering.
11817    pub view_ordering: Option<String>,
11818    /// The direction of the issue ordering.
11819    pub view_ordering_direction: Option<String>,
11820    /// The issue grouping.
11821    pub issue_grouping: Option<String>,
11822    /// The issue sub-grouping.
11823    pub issue_sub_grouping: Option<String>,
11824    /// How sub-issues should be nested and displayed.
11825    pub issue_nesting: Option<String>,
11826    /// Whether completed issues are shown and for how long.
11827    pub show_completed_issues: Option<String>,
11828    /// Whether to show parent issues for sub-issues.
11829    pub show_parents: Option<bool>,
11830    /// Whether to show sub-issues.
11831    pub show_sub_issues: Option<bool>,
11832    /// Whether to show sub-team issues.
11833    pub show_sub_team_issues: Option<bool>,
11834    /// Whether to show supervised issues.
11835    pub show_supervised_issues: Option<bool>,
11836    /// Whether to show triage issues.
11837    pub show_triage_issues: Option<bool>,
11838    /// Whether to show snoozed items.
11839    pub show_snoozed_items: Option<bool>,
11840    /// Whether to show only snoozed items.
11841    pub show_only_snoozed_items: Option<bool>,
11842    /// Whether to show archived items.
11843    pub show_archived_items: Option<bool>,
11844    /// Whether to show read items.
11845    pub show_read_items: Option<bool>,
11846    /// Whether to show unread items first.
11847    pub show_unread_items_first: Option<bool>,
11848    /// Whether issues in closed columns should be ordered by recency.
11849    pub closed_issues_ordered_by_recency: Option<bool>,
11850    /// Whether to show empty groups.
11851    pub show_empty_groups: Option<bool>,
11852    /// Whether to show empty groups on the board layout.
11853    pub show_empty_groups_board: Option<bool>,
11854    /// Whether to show empty groups on the list layout.
11855    pub show_empty_groups_list: Option<bool>,
11856    /// Whether to show empty sub-groups.
11857    pub show_empty_sub_groups: Option<bool>,
11858    /// Whether to show empty sub-groups on the board layout.
11859    pub show_empty_sub_groups_board: Option<bool>,
11860    /// Whether to show empty sub-groups on the list layout.
11861    pub show_empty_sub_groups_list: Option<bool>,
11862    /// The label group ID used for issue grouping.
11863    pub issue_grouping_label_group_id: Option<String>,
11864    /// The label group ID used for issue sub-grouping.
11865    pub issue_sub_grouping_label_group_id: Option<String>,
11866    /// Whether to show the issue identifier field.
11867    pub field_id: Option<bool>,
11868    /// Whether to show the issue status field.
11869    pub field_status: Option<bool>,
11870    /// Whether to show the issue priority field.
11871    pub field_priority: Option<bool>,
11872    /// Whether to show the issue creation date field.
11873    pub field_date_created: Option<bool>,
11874    /// Whether to show the issue updated date field.
11875    pub field_date_updated: Option<bool>,
11876    /// Whether to show the issue archived date field.
11877    pub field_date_archived: Option<bool>,
11878    /// Whether to show the issue last activity date field.
11879    pub field_date_my_activity: Option<bool>,
11880    /// Whether to show the issue assignee field.
11881    pub field_assignee: Option<bool>,
11882    /// Whether to show the issue estimate field.
11883    pub field_estimate: Option<bool>,
11884    /// Whether to show the pull requests field.
11885    pub field_pull_requests: Option<bool>,
11886    /// Whether to show preview links.
11887    pub field_preview_links: Option<bool>,
11888    /// Whether to show the Sentry issues field.
11889    pub field_sentry_issues: Option<bool>,
11890    /// Whether to show the due date field.
11891    pub field_due_date: Option<bool>,
11892    /// Whether to show the link count field.
11893    pub field_link_count: Option<bool>,
11894    /// Whether to show the customer request count field.
11895    pub field_customer_count: Option<bool>,
11896    /// Whether to show the customer revenue field.
11897    pub field_customer_revenue: Option<bool>,
11898    /// Whether to show the SLA field.
11899    pub field_sla: Option<bool>,
11900    /// Whether to show the labels field.
11901    pub field_labels: Option<bool>,
11902    /// Whether to show the project field.
11903    pub field_project: Option<bool>,
11904    /// Whether to show the cycle field.
11905    pub field_cycle: Option<bool>,
11906    /// Whether to show the milestone field.
11907    pub field_milestone: Option<bool>,
11908    /// Whether to show the release field.
11909    pub field_release: Option<bool>,
11910    /// Whether to show the time in current status field.
11911    pub field_time_in_current_status: Option<bool>,
11912    /// List of column model IDs which should be hidden on a board.
11913    pub hidden_columns: Option<Vec<String>>,
11914    /// List of row model IDs which should be hidden on a board.
11915    pub hidden_rows: Option<Vec<String>>,
11916    /// List of group model IDs which should be hidden on a list.
11917    pub hidden_groups_list: Option<Vec<String>>,
11918    /// Custom ordering of groups on the board layout.
11919    pub column_order_board: Option<Vec<String>>,
11920    /// Custom ordering of groups on the list layout.
11921    pub column_order_list: Option<Vec<String>>,
11922    /// The project layout type.
11923    pub project_layout: Option<String>,
11924    /// The project ordering.
11925    pub project_view_ordering: Option<String>,
11926    /// The project grouping.
11927    pub project_grouping: Option<String>,
11928    /// The project sub-grouping.
11929    pub project_sub_grouping: Option<String>,
11930    /// The ordering of project groups.
11931    pub project_group_ordering: Option<String>,
11932    /// The date resolution when grouping projects by date.
11933    pub project_grouping_date_resolution: Option<String>,
11934    /// Whether completed projects are shown and for how long.
11935    pub show_completed_projects: Option<String>,
11936    /// The label group ID used for project grouping.
11937    pub project_grouping_label_group_id: Option<String>,
11938    /// The label group ID used for project sub-grouping.
11939    pub project_sub_grouping_label_group_id: Option<String>,
11940    /// The project label group columns configuration.
11941    pub project_label_group_columns: Option<Vec<ViewPreferencesProjectLabelGroupColumn>>,
11942    /// Whether to show sub-team projects.
11943    pub show_sub_team_projects: Option<bool>,
11944    /// Whether to show sub-initiative projects.
11945    pub show_sub_initiative_projects: Option<bool>,
11946    /// How to show empty project groups.
11947    pub project_show_empty_groups: Option<String>,
11948    /// How to show empty project groups on the list layout.
11949    pub project_show_empty_groups_list: Option<String>,
11950    /// How to show empty project groups on the timeline layout.
11951    pub project_show_empty_groups_timeline: Option<String>,
11952    /// How to show empty project groups on the board layout.
11953    pub project_show_empty_groups_board: Option<String>,
11954    /// How to show empty project sub-groups.
11955    pub project_show_empty_sub_groups: Option<String>,
11956    /// How to show empty project sub-groups on the list layout.
11957    pub project_show_empty_sub_groups_list: Option<String>,
11958    /// How to show empty project sub-groups on the timeline layout.
11959    pub project_show_empty_sub_groups_timeline: Option<String>,
11960    /// How to show empty project sub-groups on the board layout.
11961    pub project_show_empty_sub_groups_board: Option<String>,
11962    /// Whether to show the project status field.
11963    pub project_field_status: Option<bool>,
11964    /// Whether to show the project priority field.
11965    pub project_field_priority: Option<bool>,
11966    /// Whether to show the project lead field.
11967    pub project_field_lead: Option<bool>,
11968    /// Whether to show the project health field.
11969    pub project_field_health: Option<bool>,
11970    /// Whether to show the project members field.
11971    pub project_field_members: Option<bool>,
11972    /// Whether to show the project start date field.
11973    pub project_field_start_date: Option<bool>,
11974    /// Whether to show the project target date field.
11975    pub project_field_target_date: Option<bool>,
11976    /// Whether to show the project teams field.
11977    pub project_field_teams: Option<bool>,
11978    /// Whether to show the project roadmaps field.
11979    pub project_field_roadmaps: Option<bool>,
11980    /// Whether to show the project initiatives field.
11981    pub project_field_initiatives: Option<bool>,
11982    /// Whether to show the project milestone field.
11983    pub project_field_milestone: Option<bool>,
11984    /// Whether to show the project description field.
11985    pub project_field_description: Option<bool>,
11986    /// Whether to show the project predictions field.
11987    pub project_field_predictions: Option<bool>,
11988    /// Whether to show the project relations field.
11989    pub project_field_relations: Option<bool>,
11990    /// Whether to show the project rollout stage field.
11991    pub project_field_rollout_stage: Option<bool>,
11992    /// Whether to show the project activity field.
11993    pub project_field_activity: Option<bool>,
11994    /// Whether to show the project customer count field.
11995    pub project_field_customer_count: Option<bool>,
11996    /// Whether to show the project customer revenue field.
11997    pub project_field_customer_revenue: Option<bool>,
11998    /// Whether to show the project labels field.
11999    pub project_field_labels: Option<bool>,
12000    /// Whether to show the project creation date field.
12001    pub project_field_date_created: Option<bool>,
12002    /// Whether to show the project updated date field.
12003    pub project_field_date_updated: Option<bool>,
12004    /// Whether to show the project completion date field.
12005    pub project_field_date_completed: Option<bool>,
12006    /// Whether to show the project status field on the timeline.
12007    pub project_field_status_timeline: Option<bool>,
12008    /// Whether to show the project lead field on the timeline.
12009    pub project_field_lead_timeline: Option<bool>,
12010    /// Whether to show the project health field on the timeline.
12011    pub project_field_health_timeline: Option<bool>,
12012    /// Whether to show the project milestone field on the timeline.
12013    pub project_field_milestone_timeline: Option<bool>,
12014    /// Whether to show the project predictions field on the timeline.
12015    pub project_field_predictions_timeline: Option<bool>,
12016    /// Whether to show the project relations field on the timeline.
12017    pub project_field_relations_timeline: Option<bool>,
12018    /// Whether to show the project description field on the board.
12019    pub project_field_description_board: Option<bool>,
12020    /// Whether to show the project members field on the board.
12021    pub project_field_members_board: Option<bool>,
12022    /// Whether to show the project members field on the list.
12023    pub project_field_members_list: Option<bool>,
12024    /// Whether to show the project members field on the timeline.
12025    pub project_field_members_timeline: Option<bool>,
12026    /// Whether to show the project roadmaps field on the board.
12027    pub project_field_roadmaps_board: Option<bool>,
12028    /// Whether to show the project roadmaps field on the list.
12029    pub project_field_roadmaps_list: Option<bool>,
12030    /// Whether to show the project roadmaps field on the timeline.
12031    pub project_field_roadmaps_timeline: Option<bool>,
12032    /// Whether to show the project teams field on the board.
12033    pub project_field_teams_board: Option<bool>,
12034    /// Whether to show the project teams field on the list.
12035    pub project_field_teams_list: Option<bool>,
12036    /// Whether to show the project teams field on the timeline.
12037    pub project_field_teams_timeline: Option<bool>,
12038    /// The zoom level for the timeline view.
12039    pub project_zoom_level: Option<String>,
12040    /// The zoom scale for the timeline view.
12041    pub timeline_zoom_scale: Option<f64>,
12042    /// Selected team IDs to show cycles for in timeline chronology bar.
12043    pub timeline_chronology_show_cycle_team_ids: Option<Vec<String>>,
12044    /// Whether to show week numbers in timeline chronology bar.
12045    pub timeline_chronology_show_week_numbers: Option<bool>,
12046    /// The initiative grouping.
12047    pub initiative_grouping: Option<String>,
12048    /// The initiative ordering.
12049    pub initiatives_view_ordering: Option<String>,
12050    /// Whether to show the initiative projects field.
12051    pub initiative_field_projects: Option<bool>,
12052    /// Whether to show the initiative teams field.
12053    pub initiative_field_teams: Option<bool>,
12054    /// Whether to show the initiative description field.
12055    pub initiative_field_description: Option<bool>,
12056    /// Whether to show the initiative owner field.
12057    pub initiative_field_owner: Option<bool>,
12058    /// Whether to show the initiative start date field.
12059    pub initiative_field_start_date: Option<bool>,
12060    /// Whether to show the initiative target date field.
12061    pub initiative_field_target_date: Option<bool>,
12062    /// Whether to show the initiative completed date field.
12063    pub initiative_field_date_completed: Option<bool>,
12064    /// Whether to show the initiative updated date field.
12065    pub initiative_field_date_updated: Option<bool>,
12066    /// Whether to show the initiative created date field.
12067    pub initiative_field_date_created: Option<bool>,
12068    /// Whether to show the initiative status field.
12069    pub initiative_field_status: Option<bool>,
12070    /// Whether to show the initiative activity field.
12071    pub initiative_field_activity: Option<bool>,
12072    /// Whether to show the initiative health field.
12073    pub initiative_field_initiative_health: Option<bool>,
12074    /// Whether to show the initiative active projects health field.
12075    pub initiative_field_health: Option<bool>,
12076    /// Whether to show sub-initiatives nested.
12077    pub show_nested_initiatives: Option<bool>,
12078    /// The customers view ordering.
12079    pub customers_view_ordering: Option<String>,
12080    /// Whether to show the customer request count field.
12081    pub customer_field_request_count: Option<bool>,
12082    /// Whether to show the customer domains field.
12083    pub customer_field_domains: Option<bool>,
12084    /// Whether to show the customer owner field.
12085    pub customer_field_owner: Option<bool>,
12086    /// Whether to show the customer revenue field.
12087    pub customer_field_revenue: Option<bool>,
12088    /// Whether to show the customer size field.
12089    pub customer_field_size: Option<bool>,
12090    /// Whether to show the customer source field.
12091    pub customer_field_source: Option<bool>,
12092    /// Whether to show the customer status field.
12093    pub customer_field_status: Option<bool>,
12094    /// Whether to show the customer tier field.
12095    pub customer_field_tier: Option<bool>,
12096    /// The customer page needs view grouping.
12097    pub customer_page_needs_view_grouping: Option<String>,
12098    /// The customer page needs view ordering.
12099    pub customer_page_needs_view_ordering: Option<String>,
12100    /// Whether to show important customer needs first.
12101    pub customer_page_needs_show_important_first: Option<bool>,
12102    /// Whether to show completed issues and projects in the customer page.
12103    pub customer_page_needs_show_completed_issues_and_projects: Option<String>,
12104    /// Whether to show the issue identifier field in the customer page.
12105    pub customer_page_needs_field_issue_identifier: Option<bool>,
12106    /// Whether to show the issue priority field in the customer page.
12107    pub customer_page_needs_field_issue_priority: Option<bool>,
12108    /// Whether to show the issue status field in the customer page.
12109    pub customer_page_needs_field_issue_status: Option<bool>,
12110    /// Whether to show the issue due date field in the customer page.
12111    pub customer_page_needs_field_issue_target_due_date: Option<bool>,
12112    /// The embedded customer needs view ordering.
12113    pub embedded_customer_needs_view_ordering: Option<String>,
12114    /// Whether to show important embedded customer needs first.
12115    pub embedded_customer_needs_show_important_first: Option<bool>,
12116    /// The project customer needs view grouping.
12117    pub project_customer_needs_view_grouping: Option<String>,
12118    /// The project customer needs view ordering.
12119    pub project_customer_needs_view_ordering: Option<String>,
12120    /// Whether to show important project customer needs first.
12121    pub project_customer_needs_show_important_first: Option<bool>,
12122    /// Whether to show completed issues last in project customer needs.
12123    pub project_customer_needs_show_completed_issues_last: Option<bool>,
12124    /// The team view ordering.
12125    pub team_view_ordering: Option<String>,
12126    /// Whether to show the team identifier field.
12127    pub team_field_identifier: Option<bool>,
12128    /// Whether to show the team membership field.
12129    pub team_field_membership: Option<bool>,
12130    /// Whether to show the team owner field.
12131    pub team_field_owner: Option<bool>,
12132    /// Whether to show the team members field.
12133    pub team_field_members: Option<bool>,
12134    /// Whether to show the team projects field.
12135    pub team_field_projects: Option<bool>,
12136    /// Whether to show the team cycle field.
12137    pub team_field_cycle: Option<bool>,
12138    /// Whether to show the team creation date field.
12139    pub team_field_date_created: Option<bool>,
12140    /// Whether to show the team updated date field.
12141    pub team_field_date_updated: Option<bool>,
12142    /// The custom views ordering.
12143    pub custom_views_ordering: Option<String>,
12144    /// Whether to show the custom view owner field.
12145    pub custom_view_field_owner: Option<bool>,
12146    /// Whether to show the custom view visibility field.
12147    pub custom_view_field_visibility: Option<bool>,
12148    /// Whether to show the custom view creation date field.
12149    pub custom_view_field_date_created: Option<bool>,
12150    /// Whether to show the custom view updated date field.
12151    pub custom_view_field_date_updated: Option<bool>,
12152    /// The dashboards ordering.
12153    pub dashboards_ordering: Option<String>,
12154    /// Whether to show the dashboard owner field.
12155    pub dashboard_field_owner: Option<bool>,
12156    /// Whether to show the dashboard creation date field.
12157    pub dashboard_field_date_created: Option<bool>,
12158    /// Whether to show the dashboard updated date field.
12159    pub dashboard_field_date_updated: Option<bool>,
12160    /// The workspace members view ordering.
12161    pub workspace_members_view_ordering: Option<String>,
12162    /// Whether to show the member status field.
12163    pub member_field_status: Option<bool>,
12164    /// Whether to show the member joined date field.
12165    pub member_field_joined: Option<bool>,
12166    /// Whether to show the member teams field.
12167    pub member_field_teams: Option<bool>,
12168    /// The release pipeline grouping.
12169    pub release_pipeline_grouping: Option<String>,
12170    /// The release pipelines view ordering.
12171    pub release_pipelines_view_ordering: Option<String>,
12172    /// Whether to show the type field for release pipelines.
12173    pub release_pipeline_field_type: Option<bool>,
12174    /// Whether to show the teams field for release pipelines.
12175    pub release_pipeline_field_teams: Option<bool>,
12176    /// Whether to show the releases field for release pipelines.
12177    pub release_pipeline_field_releases: Option<bool>,
12178    /// Whether to show the latest release field for release pipelines.
12179    pub release_pipeline_field_latest_release: Option<bool>,
12180    /// The scheduled pipeline releases view ordering.
12181    pub scheduled_pipeline_releases_view_ordering: Option<String>,
12182    /// The scheduled pipeline releases view grouping.
12183    pub scheduled_pipeline_releases_view_grouping: Option<String>,
12184    /// Whether to show the version field for scheduled pipeline releases.
12185    pub scheduled_pipeline_release_field_version: Option<bool>,
12186    /// Whether to show the release date field for scheduled pipeline releases.
12187    pub scheduled_pipeline_release_field_release_date: Option<bool>,
12188    /// Whether to show the completion field for scheduled pipeline releases.
12189    pub scheduled_pipeline_release_field_completion: Option<bool>,
12190    /// Whether to show the description field for scheduled pipeline releases.
12191    pub scheduled_pipeline_release_field_description: Option<bool>,
12192    /// The continuous pipeline releases view grouping.
12193    pub continuous_pipeline_releases_view_grouping: Option<String>,
12194    /// Whether to show the version field for continuous pipeline releases.
12195    pub continuous_pipeline_release_field_version: Option<bool>,
12196    /// Whether to show the release date field for continuous pipeline releases.
12197    pub continuous_pipeline_release_field_release_date: Option<bool>,
12198    /// The search view ordering.
12199    pub search_view_ordering: Option<String>,
12200    /// The search result type filter.
12201    pub search_result_type: Option<String>,
12202    /// The inbox view ordering.
12203    pub inbox_view_ordering: Option<String>,
12204    /// The triage view ordering.
12205    pub triage_view_ordering: Option<String>,
12206    /// The focus view grouping.
12207    pub focus_view_grouping: Option<String>,
12208    /// The focus view ordering.
12209    pub focus_view_ordering: Option<String>,
12210    /// The focus view ordering direction.
12211    pub focus_view_ordering_direction: Option<String>,
12212    /// The review grouping.
12213    pub review_grouping: Option<String>,
12214    /// The review view ordering.
12215    pub review_view_ordering: Option<String>,
12216    /// Whether completed reviews are shown and for how long.
12217    pub show_completed_reviews: Option<String>,
12218    /// Whether to show draft reviews.
12219    pub show_draft_reviews: Option<bool>,
12220    /// Whether to show the review avatar field.
12221    pub review_field_avatar: Option<bool>,
12222    /// Whether to show the review preview links field.
12223    pub review_field_preview_links: Option<bool>,
12224    /// Whether to show the review repository field.
12225    pub review_field_repository: Option<bool>,
12226    /// Whether to show the review identifier field.
12227    pub review_field_identifier: Option<bool>,
12228    /// Whether to show the review checks field.
12229    pub review_field_checks: Option<bool>,
12230    /// Whether completed agent sessions are shown and for how long.
12231    pub show_completed_agent_sessions: Option<String>,
12232}
12233impl GraphQLFields for ViewPreferencesValues {
12234    type FullType = Self;
12235    fn selection() -> String {
12236        "layout viewOrdering viewOrderingDirection issueGrouping issueSubGrouping issueNesting showCompletedIssues showParents showSubIssues showSubTeamIssues showSupervisedIssues showTriageIssues showSnoozedItems showOnlySnoozedItems showArchivedItems showReadItems showUnreadItemsFirst closedIssuesOrderedByRecency showEmptyGroups showEmptyGroupsBoard showEmptyGroupsList showEmptySubGroups showEmptySubGroupsBoard showEmptySubGroupsList issueGroupingLabelGroupId issueSubGroupingLabelGroupId fieldId fieldStatus fieldPriority fieldDateCreated fieldDateUpdated fieldDateArchived fieldDateMyActivity fieldAssignee fieldEstimate fieldPullRequests fieldPreviewLinks fieldSentryIssues fieldDueDate fieldLinkCount fieldCustomerCount fieldCustomerRevenue fieldSla fieldLabels fieldProject fieldCycle fieldMilestone fieldRelease fieldTimeInCurrentStatus hiddenColumns hiddenRows hiddenGroupsList columnOrderBoard columnOrderList projectLayout projectViewOrdering projectGrouping projectSubGrouping projectGroupOrdering projectGroupingDateResolution showCompletedProjects projectGroupingLabelGroupId projectSubGroupingLabelGroupId showSubTeamProjects showSubInitiativeProjects projectShowEmptyGroups projectShowEmptyGroupsList projectShowEmptyGroupsTimeline projectShowEmptyGroupsBoard projectShowEmptySubGroups projectShowEmptySubGroupsList projectShowEmptySubGroupsTimeline projectShowEmptySubGroupsBoard projectFieldStatus projectFieldPriority projectFieldLead projectFieldHealth projectFieldMembers projectFieldStartDate projectFieldTargetDate projectFieldTeams projectFieldRoadmaps projectFieldInitiatives projectFieldMilestone projectFieldDescription projectFieldPredictions projectFieldRelations projectFieldRolloutStage projectFieldActivity projectFieldCustomerCount projectFieldCustomerRevenue projectFieldLabels projectFieldDateCreated projectFieldDateUpdated projectFieldDateCompleted projectFieldStatusTimeline projectFieldLeadTimeline projectFieldHealthTimeline projectFieldMilestoneTimeline projectFieldPredictionsTimeline projectFieldRelationsTimeline projectFieldDescriptionBoard projectFieldMembersBoard projectFieldMembersList projectFieldMembersTimeline projectFieldRoadmapsBoard projectFieldRoadmapsList projectFieldRoadmapsTimeline projectFieldTeamsBoard projectFieldTeamsList projectFieldTeamsTimeline projectZoomLevel timelineZoomScale timelineChronologyShowCycleTeamIds timelineChronologyShowWeekNumbers initiativeGrouping initiativesViewOrdering initiativeFieldProjects initiativeFieldTeams initiativeFieldDescription initiativeFieldOwner initiativeFieldStartDate initiativeFieldTargetDate initiativeFieldDateCompleted initiativeFieldDateUpdated initiativeFieldDateCreated initiativeFieldStatus initiativeFieldActivity initiativeFieldInitiativeHealth initiativeFieldHealth showNestedInitiatives customersViewOrdering customerFieldRequestCount customerFieldDomains customerFieldOwner customerFieldRevenue customerFieldSize customerFieldSource customerFieldStatus customerFieldTier customerPageNeedsViewGrouping customerPageNeedsViewOrdering customerPageNeedsShowImportantFirst customerPageNeedsShowCompletedIssuesAndProjects customerPageNeedsFieldIssueIdentifier customerPageNeedsFieldIssuePriority customerPageNeedsFieldIssueStatus customerPageNeedsFieldIssueTargetDueDate embeddedCustomerNeedsViewOrdering embeddedCustomerNeedsShowImportantFirst projectCustomerNeedsViewGrouping projectCustomerNeedsViewOrdering projectCustomerNeedsShowImportantFirst projectCustomerNeedsShowCompletedIssuesLast teamViewOrdering teamFieldIdentifier teamFieldMembership teamFieldOwner teamFieldMembers teamFieldProjects teamFieldCycle teamFieldDateCreated teamFieldDateUpdated customViewsOrdering customViewFieldOwner customViewFieldVisibility customViewFieldDateCreated customViewFieldDateUpdated dashboardsOrdering dashboardFieldOwner dashboardFieldDateCreated dashboardFieldDateUpdated workspaceMembersViewOrdering memberFieldStatus memberFieldJoined memberFieldTeams releasePipelineGrouping releasePipelinesViewOrdering releasePipelineFieldType releasePipelineFieldTeams releasePipelineFieldReleases releasePipelineFieldLatestRelease scheduledPipelineReleasesViewOrdering scheduledPipelineReleasesViewGrouping scheduledPipelineReleaseFieldVersion scheduledPipelineReleaseFieldReleaseDate scheduledPipelineReleaseFieldCompletion scheduledPipelineReleaseFieldDescription continuousPipelineReleasesViewGrouping continuousPipelineReleaseFieldVersion continuousPipelineReleaseFieldReleaseDate searchViewOrdering searchResultType inboxViewOrdering triageViewOrdering focusViewGrouping focusViewOrdering focusViewOrderingDirection reviewGrouping reviewViewOrdering showCompletedReviews showDraftReviews reviewFieldAvatar reviewFieldPreviewLinks reviewFieldRepository reviewFieldIdentifier reviewFieldChecks showCompletedAgentSessions"
12237            .into()
12238    }
12239}
12240/// A webhook subscription that sends HTTP POST callbacks to an external URL when events occur in Linear. Webhooks can be scoped to a specific team, multiple teams, or all public teams in the organization. They support filtering by resource type (e.g., Issue, Comment, Project) and can be created either manually by users or automatically by OAuth applications. Each webhook has a signing secret for verifying payload authenticity on the recipient side.
12241#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12242#[serde(rename_all = "camelCase", default)]
12243pub struct Webhook {
12244    /// The unique identifier of the entity.
12245    pub id: Option<String>,
12246    /// The time at which the entity was created.
12247    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
12248    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
12249    /// been updated after creation.
12250    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
12251    /// The time at which the entity was archived. Null if the entity has not been archived.
12252    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
12253    /// A human-readable label for the webhook, used for identification in the UI. Null if no label has been set.
12254    pub label: Option<String>,
12255    /// The destination URL where webhook payloads will be sent via HTTP POST. Null for OAuth application webhooks, which use the webhook URL configured on the OAuth client instead.
12256    pub url: Option<String>,
12257    /// Whether the webhook is enabled. When disabled, no payloads will be delivered even if matching events occur.
12258    pub enabled: Option<bool>,
12259    /// The single team that the webhook is scoped to. When null, the webhook either targets all public teams (if allPublicTeams is true), multiple specific teams (if teamIds is set), or organization-wide events.
12260    pub team: Option<Team>,
12261    /// `INTERNAL` An array of team IDs that the webhook is subscribed to. Used to represent a webhook that targets multiple specific teams, potentially in addition to all public teams (when allPublicTeams is also true). Null when the webhook targets a single team via teamId or all public teams only.
12262    pub team_ids: Option<Vec<String>>,
12263    /// Whether the webhook receives events from all public (non-private) teams in the organization, including teams created after the webhook was set up. When true, the webhook automatically covers new public teams without requiring reconfiguration.
12264    pub all_public_teams: Option<bool>,
12265    /// The user who created the webhook.
12266    pub creator: Option<User>,
12267    /// A secret token used to sign webhook payloads with HMAC-SHA256, allowing the recipient to verify that the payload originated from Linear and was not tampered with. Automatically generated if not provided during creation.
12268    pub secret: Option<String>,
12269    /// The resource types this webhook is subscribed to (e.g., 'Issue', 'Comment', 'Project', 'Cycle'). The webhook will only receive payloads for events affecting these resource types.
12270    pub resource_types: Option<Vec<String>>,
12271    /// `INTERNAL` Webhook failure events associated with the webhook (last 50).
12272    pub failures: Option<Vec<WebhookFailureEvent>>,
12273}
12274impl GraphQLFields for Webhook {
12275    type FullType = Self;
12276    fn selection() -> String {
12277        "id createdAt updatedAt archivedAt label url enabled teamIds allPublicTeams secret resourceTypes"
12278            .into()
12279    }
12280}
12281#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12282#[serde(rename_all = "camelCase", default)]
12283pub struct WebhookConnection {
12284    pub edges: Option<Vec<WebhookEdge>>,
12285    pub nodes: Option<Vec<Webhook>>,
12286    pub page_info: Option<PageInfo>,
12287}
12288impl GraphQLFields for WebhookConnection {
12289    type FullType = Self;
12290    fn selection() -> String {
12291        "".into()
12292    }
12293}
12294#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12295#[serde(rename_all = "camelCase", default)]
12296pub struct WebhookEdge {
12297    pub node: Option<Webhook>,
12298    /// Used in `before` and `after` args
12299    pub cursor: Option<String>,
12300}
12301impl GraphQLFields for WebhookEdge {
12302    type FullType = Self;
12303    fn selection() -> String {
12304        "cursor".into()
12305    }
12306}
12307/// A record of a failed webhook delivery attempt. Created when a webhook payload could not be successfully delivered to the destination URL, either due to an HTTP error response or a network failure. Each failure event captures the HTTP status code (if available), the response body or error message, and a stable execution ID that is shared across retries of the same delivery.
12308#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12309#[serde(rename_all = "camelCase", default)]
12310pub struct WebhookFailureEvent {
12311    /// The unique identifier of the entity.
12312    pub id: Option<String>,
12313    /// The time at which the entity was created.
12314    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
12315    /// The webhook that this failure event is associated with.
12316    pub webhook: Option<Webhook>,
12317    /// The URL that the webhook was trying to push to.
12318    pub url: Option<String>,
12319    /// The HTTP status code returned by the webhook recipient. Null if the request failed before receiving a response (e.g., DNS resolution failure, connection timeout).
12320    pub http_status: Option<f64>,
12321    /// The HTTP response body returned by the recipient, or the error message if the request failed before receiving a response. Truncated to 1000 characters.
12322    pub response_or_error: Option<String>,
12323    /// A stable identifier for the webhook delivery attempt. This ID remains the same across retries of the same payload, making it useful for correlating multiple failure events that belong to the same logical delivery.
12324    pub execution_id: Option<String>,
12325}
12326impl GraphQLFields for WebhookFailureEvent {
12327    type FullType = Self;
12328    fn selection() -> String {
12329        "id createdAt url httpStatus responseOrError executionId".into()
12330    }
12331}
12332/// The result of a webhook mutation.
12333#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12334#[serde(rename_all = "camelCase", default)]
12335pub struct WebhookPayload {
12336    /// The identifier of the last sync operation.
12337    pub last_sync_id: Option<f64>,
12338    /// The webhook entity being mutated.
12339    pub webhook: Option<Webhook>,
12340    /// Whether the operation was successful.
12341    pub success: Option<bool>,
12342}
12343impl GraphQLFields for WebhookPayload {
12344    type FullType = Self;
12345    fn selection() -> String {
12346        "lastSyncId success".into()
12347    }
12348}
12349/// The result of a webhook secret rotation mutation.
12350#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12351#[serde(rename_all = "camelCase", default)]
12352pub struct WebhookRotateSecretPayload {
12353    /// The identifier of the last sync operation.
12354    pub last_sync_id: Option<f64>,
12355    /// Whether the operation was successful.
12356    pub success: Option<bool>,
12357    /// The new webhook signing secret.
12358    pub secret: Option<String>,
12359}
12360impl GraphQLFields for WebhookRotateSecretPayload {
12361    type FullType = Self;
12362    fn selection() -> String {
12363        "lastSyncId success secret".into()
12364    }
12365}
12366/// A welcome message configuration for the workspace. When enabled, new users joining the workspace receive a notification with this message in their inbox. Each workspace has at most one welcome message. The message body is stored in a related DocumentContent entity.
12367#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12368#[serde(rename_all = "camelCase", default)]
12369pub struct WelcomeMessage {
12370    /// The unique identifier of the entity.
12371    pub id: Option<String>,
12372    /// The time at which the entity was created.
12373    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
12374    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
12375    /// been updated after creation.
12376    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
12377    /// The time at which the entity was archived. Null if the entity has not been archived.
12378    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
12379    /// The title of the welcome message notification. Null defaults to 'Welcome to {workspace name}'.
12380    pub title: Option<String>,
12381    /// Whether the welcome message is enabled and should be sent to new users joining the workspace.
12382    pub enabled: Option<bool>,
12383    /// The user who last updated the welcome message configuration. Null if the user's account has been deleted.
12384    pub updated_by: Option<Box<User>>,
12385}
12386impl GraphQLFields for WelcomeMessage {
12387    type FullType = Self;
12388    fn selection() -> String {
12389        "id createdAt updatedAt archivedAt title enabled".into()
12390    }
12391}
12392/// A notification containing a workspace welcome message, sent to newly joined users.
12393#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12394#[serde(rename_all = "camelCase", default)]
12395pub struct WelcomeMessageNotification {
12396    /// The unique identifier of the entity.
12397    pub id: Option<String>,
12398    /// The time at which the entity was created.
12399    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
12400    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
12401    /// been updated after creation.
12402    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
12403    /// The time at which the entity was archived. Null if the entity has not been archived.
12404    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
12405    /// Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated.
12406    pub r#type: Option<String>,
12407    /// The user that caused the notification. Null if the notification was triggered by a non-user actor such as an integration, external user, or system event.
12408    pub actor: Option<User>,
12409    /// The external user that caused the notification. Populated when the notification was triggered by an external user (e.g., a commenter from a connected integration like Slack or GitHub) rather than a Linear workspace member.
12410    pub external_user_actor: Option<ExternalUser>,
12411    /// The recipient user of this notification.
12412    pub user: Option<User>,
12413    /// The time at which the user marked the notification as read. Null if the notification is unread.
12414    pub read_at: Option<chrono::DateTime<chrono::Utc>>,
12415    /// The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent.
12416    pub emailed_at: Option<chrono::DateTime<chrono::Utc>>,
12417    /// The time until which a notification is snoozed. After this time, the notification reappears in the user's inbox. Null if the notification is not currently snoozed.
12418    pub snoozed_until_at: Option<chrono::DateTime<chrono::Utc>>,
12419    /// The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed.
12420    pub unsnoozed_at: Option<chrono::DateTime<chrono::Utc>>,
12421    /// The category of the notification.
12422    pub category: Option<NotificationCategory>,
12423    /// `Internal` URL to the target of the notification.
12424    pub url: Option<String>,
12425    /// `Internal` Inbox URL for the notification.
12426    pub inbox_url: Option<String>,
12427    /// `Internal` Notification title.
12428    pub title: Option<String>,
12429    /// `Internal` Notification subtitle.
12430    pub subtitle: Option<String>,
12431    /// `Internal` If notification actor was Linear.
12432    pub is_linear_actor: Option<bool>,
12433    /// `Internal` Notification avatar URL.
12434    pub actor_avatar_url: Option<String>,
12435    /// `Internal` Notification actor initials if avatar is not available.
12436    pub actor_initials: Option<String>,
12437    /// `Internal` Notification actor initials if avatar is not available.
12438    pub actor_avatar_color: Option<String>,
12439    /// `Internal` Issue's status type for issue notifications.
12440    pub issue_status_type: Option<String>,
12441    /// `Internal` Project update health for new updates.
12442    pub project_update_health: Option<String>,
12443    /// `Internal` Initiative update health for new updates.
12444    pub initiative_update_health: Option<String>,
12445    /// `Internal` Notifications with the same grouping key will be grouped together in the UI.
12446    pub grouping_key: Option<String>,
12447    /// `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`.
12448    pub grouping_priority: Option<f64>,
12449    /// The bot that caused the notification.
12450    pub bot_actor: Option<ActorBot>,
12451    /// Related welcome message.
12452    pub welcome_message_id: Option<String>,
12453}
12454impl GraphQLFields for WelcomeMessageNotification {
12455    type FullType = Self;
12456    fn selection() -> String {
12457        "id createdAt updatedAt archivedAt type readAt emailedAt snoozedUntilAt unsnoozedAt category url inboxUrl title subtitle isLinearActor actorAvatarUrl actorInitials actorAvatarColor issueStatusType projectUpdateHealth initiativeUpdateHealth groupingKey groupingPriority welcomeMessageId"
12458            .into()
12459    }
12460}
12461/// An automation workflow definition that executes a set of activities when triggered by specific events. Workflows can be scoped to a team, project, cycle, label, custom view, initiative, or user context. They are triggered by entity changes (e.g., issue status change, new comment) and can include conditions that filter which events actually execute the workflow. Activities define the actions taken, such as updating issue properties, sending notifications, or posting to Slack.
12462#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12463#[serde(rename_all = "camelCase", default)]
12464pub struct WorkflowDefinition {
12465    /// The unique identifier of the entity.
12466    pub id: Option<String>,
12467    /// The time at which the entity was created.
12468    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
12469    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
12470    /// been updated after creation.
12471    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
12472    /// The time at which the entity was archived. Null if the entity has not been archived.
12473    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
12474    /// The name of the workflow.
12475    pub name: Option<String>,
12476    /// The name of the group that the workflow belongs to.
12477    pub group_name: Option<String>,
12478    /// The description of the workflow.
12479    pub description: Option<String>,
12480    /// The type of the workflow, such as custom automation, SLA, or auto-close.
12481    pub r#type: Option<WorkflowType>,
12482    /// The event that triggers the workflow, such as entity creation, update, or a specific state change.
12483    pub trigger: Option<WorkflowTrigger>,
12484    /// The entity type that triggers this workflow, such as Issue, Project, or Release.
12485    pub trigger_type: Option<WorkflowTriggerType>,
12486    /// The filter conditions that must match for the workflow to execute. When null, the workflow triggers on all matching events.
12487    pub conditions: Option<serde_json::Value>,
12488    /// Whether the workflow is enabled and will execute when its trigger conditions are met.
12489    pub enabled: Option<bool>,
12490    /// The team associated with the workflow. If not set, the workflow is associated with the entire workspace.
12491    pub team: Option<Team>,
12492    /// The user who created the workflow.
12493    pub creator: Option<User>,
12494    /// The ordered list of activities (actions) that are executed when the workflow triggers, such as updating issue properties, sending notifications, or calling webhooks.
12495    pub activities: Option<serde_json::Value>,
12496    /// The sort order of the workflow definition within its siblings.
12497    pub sort_order: Option<String>,
12498    /// The date and time when the workflow was last triggered and executed. Null if the workflow has never been executed.
12499    pub last_executed_at: Option<chrono::DateTime<chrono::Utc>>,
12500    /// The user who last updated the workflow.
12501    pub last_updated_by: Option<User>,
12502    /// The contextual label view associated with the workflow.
12503    pub label: Option<IssueLabel>,
12504    /// The contextual cycle view associated with the workflow.
12505    pub cycle: Option<Cycle>,
12506    /// The contextual user view associated with the workflow.
12507    pub user: Option<User>,
12508    /// The contextual project view associated with the workflow.
12509    pub project: Option<Project>,
12510    /// The contextual initiative view associated with the workflow.
12511    pub initiative: Option<Initiative>,
12512    /// The context custom view associated with the workflow.
12513    pub custom_view: Option<CustomView>,
12514    /// The type of view to which this workflow's context is associated with.
12515    pub context_view_type: Option<ContextViewType>,
12516    /// The type of user view to which this workflow's context is associated with.
12517    pub user_context_view_type: Option<UserContextViewType>,
12518    /// The workflow definition's unique URL slug.
12519    pub slug_id: Option<String>,
12520}
12521impl GraphQLFields for WorkflowDefinition {
12522    type FullType = Self;
12523    fn selection() -> String {
12524        "id createdAt updatedAt archivedAt name groupName description type trigger triggerType conditions enabled activities sortOrder lastExecutedAt contextViewType userContextViewType slugId"
12525            .into()
12526    }
12527}
12528/// A state in a team's workflow, representing an issue status such as Triage, Backlog, Todo, In Progress, In Review, Done, or Canceled. Each team has its own set of workflow states that define the progression of issues through the team's process. Workflow states have a type that categorizes them (triage, backlog, unstarted, started, completed, canceled), a position that determines their display order, and a color for visual identification. States can be inherited from parent teams to sub-teams.
12529#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12530#[serde(rename_all = "camelCase", default)]
12531pub struct WorkflowState {
12532    /// The unique identifier of the entity.
12533    pub id: Option<String>,
12534    /// The time at which the entity was created.
12535    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
12536    /// The last time at which the entity was meaningfully updated. This is the same as the creation time if the entity hasn't
12537    /// been updated after creation.
12538    pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
12539    /// The time at which the entity was archived. Null if the entity has not been archived.
12540    pub archived_at: Option<chrono::DateTime<chrono::Utc>>,
12541    /// The state's human-readable name (e.g., 'In Progress', 'Done', 'Backlog').
12542    pub name: Option<String>,
12543    /// The state's UI color as a HEX string.
12544    pub color: Option<String>,
12545    /// Description of the state.
12546    pub description: Option<String>,
12547    /// The position of the state in the team's workflow. States are displayed in ascending order of position within their type group.
12548    pub position: Option<f64>,
12549    /// The type of the state. One of "triage", "backlog", "unstarted", "started", "completed", "canceled", "duplicate".
12550    pub r#type: Option<String>,
12551    /// The team that this workflow state belongs to. Each team has its own set of workflow states.
12552    pub team: Option<Box<Team>>,
12553    /// The parent team's workflow state that this state was inherited from. Null if the state is not inherited from a parent team.
12554    pub inherited_from: Option<Box<WorkflowState>>,
12555    /// Issues that currently have this workflow state. Returns a paginated and filterable list of issues.
12556    pub issues: Option<IssueConnection>,
12557}
12558impl GraphQLFields for WorkflowState {
12559    type FullType = Self;
12560    fn selection() -> String {
12561        "id createdAt updatedAt archivedAt name color description position type".into()
12562    }
12563}
12564/// A generic payload return from entity archive mutations.
12565#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12566#[serde(rename_all = "camelCase", default)]
12567pub struct WorkflowStateArchivePayload {
12568    /// The identifier of the last sync operation.
12569    pub last_sync_id: Option<f64>,
12570    /// Whether the operation was successful.
12571    pub success: Option<bool>,
12572    /// The archived/unarchived entity. Null if entity was deleted.
12573    pub entity: Option<WorkflowState>,
12574}
12575impl GraphQLFields for WorkflowStateArchivePayload {
12576    type FullType = Self;
12577    fn selection() -> String {
12578        "lastSyncId success".into()
12579    }
12580}
12581#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12582#[serde(rename_all = "camelCase", default)]
12583pub struct WorkflowStateConnection {
12584    pub edges: Option<Vec<WorkflowStateEdge>>,
12585    pub nodes: Option<Vec<WorkflowState>>,
12586    pub page_info: Option<PageInfo>,
12587}
12588impl GraphQLFields for WorkflowStateConnection {
12589    type FullType = Self;
12590    fn selection() -> String {
12591        "".into()
12592    }
12593}
12594#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12595#[serde(rename_all = "camelCase", default)]
12596pub struct WorkflowStateEdge {
12597    pub node: Option<WorkflowState>,
12598    /// Used in `before` and `after` args
12599    pub cursor: Option<String>,
12600}
12601impl GraphQLFields for WorkflowStateEdge {
12602    type FullType = Self;
12603    fn selection() -> String {
12604        "cursor".into()
12605    }
12606}
12607/// The result of a workflow state mutation, containing the created or updated state and a success indicator.
12608#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12609#[serde(rename_all = "camelCase", default)]
12610pub struct WorkflowStatePayload {
12611    /// The identifier of the last sync operation.
12612    pub last_sync_id: Option<f64>,
12613    /// The state that was created or updated.
12614    pub workflow_state: Option<WorkflowState>,
12615    /// Whether the operation was successful.
12616    pub success: Option<bool>,
12617}
12618impl GraphQLFields for WorkflowStatePayload {
12619    type FullType = Self;
12620    fn selection() -> String {
12621        "lastSyncId success".into()
12622    }
12623}