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}