schema { query: Query mutation: Mutation subscription: Subscription } "Indicates exactly one field must be supplied and this field must not be `null`." directive @oneOf on INPUT_OBJECT """ An access key for CI/CD integrations. Unlike personal API keys, access keys are not tied to a specific user's permissions but are scoped to an organization with specific capabilities and resource access (e.g., specific release pipelines). They support revocation with a grace period, allowing existing deployments to complete before the key becomes fully invalid. """ type AccessKey implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the access key. """ creator: User """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The timestamp when the access key was last used to authenticate an API request. Null if the key has never been used. """ lastUsedAt: DateTime """ The organization this access key belongs to. """ organization: Organization! """ The timestamp when the access key was revoked. May be set to a future date to implement a grace period during which the key remains valid. Null if the key has not been revoked. """ revokedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A release returned using a release pipeline access key. """ type AccessKeyRelease { """ The time at which the release was archived. Null if the release has not been archived. """ archivedAt: DateTime """ The Git commit SHA associated with the release. """ commitSha: String """ The time at which the release was completed. Null if the release has not been completed. """ completedAt: DateTime """ The time at which the release was created. """ createdAt: DateTime! """ The unique identifier of the release. """ id: ID! """ The name of the release. """ name: String! """ The current stage of the release. """ stage: AccessKeyReleaseStage! """ The URL to the release page in the Linear app. """ url: String! """ The version identifier for this release. Null if no version has been assigned. """ version: String } """ The result of a release mutation using a release pipeline access key. """ type AccessKeyReleasePayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The release that was created or updated. """ release: AccessKeyRelease! """ Whether the operation was successful. """ success: Boolean! } """ A release pipeline returned using a release pipeline access key. """ type AccessKeyReleasePipeline { """ The unique identifier of the release pipeline. """ id: ID! """ Glob patterns used to filter commits by changed file path. An empty array means all commits are included. """ includePathPatterns: [String!]! } """ A release stage returned using a release pipeline access key. """ type AccessKeyReleaseStage { """ The name of the release stage. """ name: String! """ The type of the release stage. """ type: ReleaseStageType! } """ Activity collection filtering options. """ input ActivityCollectionFilter { """ Compound filters, all of which need to be matched by the activity. """ and: [ActivityCollectionFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that needs to be matched by all activities. """ every: ActivityFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for the collection length. """ length: NumberComparator """ Compound filters, one of which need to be matched by the activity. """ or: [ActivityCollectionFilter!] """ Filters that needs to be matched by some activities. """ some: ActivityFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator """ Filters that the activity's user must satisfy. """ user: UserFilter } """ Activity filtering options. """ input ActivityFilter { """ Compound filters, all of which need to be matched by the activity. """ and: [ActivityFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Compound filters, one of which need to be matched by the activity. """ or: [ActivityFilter!] """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator """ Filters that the activity's user must satisfy. """ user: UserFilter } """ Display identity for an integration, application, or automation credited with an action. type and subType identify its source; userDisplayName can identify the person who triggered it externally. Built-in AI and workflow actions can use the shared Linear actor rather than a separate user account. """ type ActorBot { """ Avatar URL for the application or automation. Null when unavailable. """ avatarUrl: String """ Identifier selected from the source's user, external user, or source record. Its meaning depends on type and subType; do not assume it is a Linear User UUID. Null when the source provides no identifier. """ id: ID """ Display name of the application or automation. Null when unavailable. """ name: String """ Integration service, such as github or slack. Null when the source has no subtype. """ subType: String """ Source category, such as integration, oauthClient, workflow, or ai. Use subType to identify the integration service. """ type: String! """ Name of the external user who triggered the action. Null when no user was recorded. """ userDisplayName: String } """ One message or action in an agent session. Use activities to show what your agent is doing and to read messages from users. The content type distinguishes progress updates, tool actions, responses, errors, and requests for input; a signal can modify how Linear handles that content. Access to an activity follows access to its session. """ type AgentActivity implements Node { """ The agent session this activity belongs to. """ agentSession: AgentSession! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The message or action recorded by this activity. This is a GraphQL union: request __typename and use inline fragments to select the fields for each content type. Thought, response, prompt, error, and elicitation content have a body; action content describes the action, its parameter, and any reported result. """ content: AgentActivityContent! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Whether this progress activity should stop being displayed after the next agent activity arrives. Use this for temporary thoughts or actions, such as a current search step. It does not mean the activity is deleted from the API. """ ephemeral: Boolean! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The user who sent this prompt, including stop requests. Null for other activity types or if the user is not accessible. """ promptAuthor: User """ How Linear or the agent should handle this activity beyond its content type. continue keeps a response from ending the turn; auth and select turn an elicitation into an authentication or selection request; stop appears on user prompts that request cancellation. Null means normal handling for the content type. """ signal: AgentActivitySignal """ JSON-encoded details for the activity’s signal. auth metadata contains the authentication URL and may identify a provider and user. select metadata contains the available options; Linear may add display labels for recognized URLs. Null means no signal metadata was recorded. """ signalMetadata: JSON """ The source comment this activity is linked to. Null if the activity was not triggered by a comment. """ sourceComment: Comment """ JSON object attributing the activity to the integration, application, or automation that created it. Available properties depend on the source type. Null means no external source was recorded; user identifies the activity's author separately. """ sourceMetadata: JSON """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The author: the app user for agent output, or the person who sent a prompt. """ user: User! } """ A tool call or other action reported by the agent. action names the work and parameter describes its target or input. result is optional Markdown output from that action; this record describes work reported by the agent and does not invoke the tool itself. """ type AgentActivityActionContent { """ The action being performed. """ action: String! """ The parameters for the action, e.g. a file path, a keyword, etc. """ parameter: String! """ The action result in Markdown. Null if no result was reported. """ result: String """ The type of activity. """ type: AgentActivityType! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type AgentActivityConnection { """ The page's results paired with their cursors. """ edges: [AgentActivityEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [AgentActivity!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The content of one agent activity. Select __typename and use an inline fragment for the returned content type: thought reports progress, action describes work, response addresses the user, prompt comes from the user, error reports failure, and elicitation asks for input. Each variant also carries its AgentActivityType in type. """ union AgentActivityContent = | AgentActivityActionContent | AgentActivityElicitationContent | AgentActivityErrorContent | AgentActivityPromptContent | AgentActivityResponseContent | AgentActivityThoughtContent """ An activity to publish to a session owned by your authenticated agent app. Choose the content type for the step you want to show, and supply signalMetadata when using an auth or select signal. Linear creates user prompt activities itself; this input accepts only agent output. """ input AgentActivityCreateInput { """ The UUID of the unarchived session to publish to. The session’s appUser must be the user represented by your agent token; an app cannot publish activities to another agent’s session. """ agentSessionId: String! """ The activity as a JSON object. Use {type: "thought", body: "Searching the repository"} for progress, response for an answer, error for a failure, or elicitation to ask for input. These types require a Markdown body. An action instead requires action and parameter strings, and may include a Markdown result. body and result each accept up to 250,000 characters. A response normally completes the turn; add signal: continue when more work follows. """ content: JSONObject! """ Metadata about user-provided contextual information for this agent activity. """ contextualMetadata: JSONObject """ Hide this activity after the next activity. Defaults to false; only thought and action activities can be ephemeral. """ ephemeral: Boolean """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ An optional instruction for handling the content. Use continue only with a response to keep the turn active. Use auth or select only with an elicitation, and provide the matching signalMetadata. stop is reserved for user prompts and cannot be published through agentActivityCreate. Omit this field for normal handling. """ signal: AgentActivitySignal """ Details required by auth and select signals. For auth, provide a valid url, optionally providerName, and optionally a userId UUID identifying who should authenticate. That userId limits the authentication control in Linear, not access to the activity. For select, provide options: an array of 1–100 objects with a nonempty value and optional label, each up to 256 characters. Omit this field for other signals. """ signalMetadata: JSONObject } """ A result and its pagination cursor. """ type AgentActivityEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: AgentActivity! } """ A Markdown request for information or a decision from the user. Publishing it moves the session to awaiting input. The activity's signal and signalMetadata may specify an authentication request or a set of choices. """ type AgentActivityElicitationContent { """ The elicitation message in Markdown format. """ body: String! """ The type of activity. """ type: AgentActivityType! } """ A failure reported by the agent, with a Markdown message and an optional reason code for specialized handling. Publishing this activity puts the session in its error state. """ type AgentActivityErrorContent { """ The error message in Markdown format. """ body: String! """ A stable reason code for specialized error handling. """ reasonCode: String """ The type of activity. """ type: AgentActivityType! } """ Filters agent activities by their session, content type, source comment, or common entity fields. Use agentSessionId with an equality comparison to read activities for one session; combine conditions with and or or for more specific results. """ input AgentActivityFilter { """ Compares the UUID of the session containing the activity, for example {eq: "session-uuid"}. """ agentSessionId: StringComparator """ Compound filters, all of which need to be matched by the agent activity. An empty list adds no constraint. """ and: [AgentActivityFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Compound filters, at least one of which needs to be matched by the agent activity. An empty list adds no constraint. """ or: [AgentActivityFilter!] """ Filters the comment that originated the activity. Use {null: true} to select activities without a source comment. """ sourceComment: NullableCommentFilter """ Compares the content type: thought, action, response, prompt, error, or elicitation. This is the activity's type, not its session status. """ type: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The result of an agent activity mutation. """ type AgentActivityPayload { """ The agent activity that was created or updated. """ agentActivity: AgentActivity! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ A message sent by a user to the agent. """ type AgentActivityPromptContent { """ The user's message to the agent, in Markdown. """ body: String! """ A short title capturing the intent of the prompt. """ title: String """ The type of activity. """ type: AgentActivityType! } """ A Markdown response from the agent to the user. Publishing a response completes the current turn unless the activity has the continue signal, which keeps the agent active while showing the message. """ type AgentActivityResponseContent { """ The response content in Markdown format. """ body: String! """ The type of activity. """ type: AgentActivityType! } """ A modifier that provides additional instructions on how the activity should be interpreted. """ enum AgentActivitySignal { auth continue select stop } """ A progress message from the agent while it works. """ type AgentActivityThoughtContent { """ The thought content in Markdown format. """ body: String! """ The type of activity. """ type: AgentActivityType! } """ The type of an agent activity. """ enum AgentActivityType { action elicitation error prompt response thought } """ Payload for an agent activity webhook. """ type AgentActivityWebhookPayload { """ The ID of the agent session that this activity belongs to. """ agentSessionId: String! """ The time at which the entity was archived. """ archivedAt: String """ The content of the agent activity. """ content: JSONObject! """ The time at which the entity was created. """ createdAt: String! """ The ID of the entity. """ id: String! """ An optional modifier that provides additional instructions on how the activity should be interpreted. """ signal: String """ Metadata about this agent activity's signal. """ signalMetadata: JSONObject """ The ID of the comment this activity is linked to. """ sourceCommentId: String """ The time at which the entity was updated. """ updatedAt: String! """ The user who created this agent activity. """ user: UserChildWebhookPayload! """ The ID of the user who created this agent activity. """ userId: String! } """ A record of an agent’s work and its conversation with users. A session belongs to one app user and may be linked to an issue or comment thread. Your agent publishes activities to report progress and results, and can attach external links and a plan. status reflects the latest activity, so the same session can complete a turn, receive more input, and become active again. """ type AgentSession implements Node { """ Activities associated with this agent session. """ activities( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned agent activities. """ filter: AgentActivityFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): AgentActivityConnection! """ The app user that owns and runs this session. Its agent credentials are required to publish activities or update the session’s plan, title, and external links. This is distinct from creator, the human responsible for starting the session. """ appUser: User! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The root comment of the session's thread. Null for sessions without a comment thread. """ comment: Comment """ JSON array of entity references supplied as context to the session, such as issues or projects referenced in chat. These provide additional context beyond the session's primary issue or comment. An empty array means no such entity context is recorded. """ context: JSON! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The human user responsible for the agent session. When a person starts the session, this is that person. When an automation such as a Loop or a triage rule delegates an issue to a third-party agent, this is the issue assignee, on whose behalf the agent works. Null when the session has no responsible human user, such as a session an automation starts for the Linear agent, or a session started by an agent user. """ creator: User """ The time the session was dismissed. Dismissal stops its work and removes the issue delegate if no other active session needs it. Null if not dismissed. """ dismissedAt: DateTime """ The user who dismissed the agent session. Automatically set when dismissedAt is updated. Null if the session has not been dismissed. """ dismissedBy: User """ The time the session most recently became complete. Cleared when the status becomes active, pending, or stopping. Null if no completion is recorded or the timestamp has been cleared. """ endedAt: DateTime """ The URL of an external agent-hosted page associated with this session. """ externalLink: String @deprecated(reason: "Use externalUrls instead.") """ External links associated with this session. """ externalLinks: [AgentSessionExternalLink!]! """ JSON-encoded array of external links, each with url and label. Parse the returned string to read the entries, or use externalLinks to select these fields directly. """ externalUrls: JSON! @deprecated(reason: "Use externalLinks instead.") """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The issue the agent is working on. Null for sessions not associated with an issue. """ issue: Issue """ The agent's current plan as a JSON object with entries and updatedAt. entries contains each step's content and status (pending, inProgress, completed, or canceled); updatedAt is the ISO timestamp when Linear accepted the plan. The owning app updates the entries through agentSessionUpdate. Null means no plan is stored. Entering error or stale status clears the plan. """ plan: JSON """ The agent session's unique URL slug. """ slugId: String! """ The comment in another thread that started this session. Use comment for the session’s own thread. Null means no separate source comment is recorded, or that comment is no longer available. """ sourceComment: Comment """ JSON object describing the integration, application, or automation that created this session. Available keys depend on the source type; agentSessionMetadata.sourceCommentId can identify the comment that converted an existing thread into a session. Null when no source metadata is recorded. """ sourceMetadata: JSON """ The time this session most recently became active. A new user turn can make a completed session active again and replace this value, so it is not necessarily the session’s original start time. Null means the session has not started. """ startedAt: DateTime """ The current session status: pending, active, stopping, awaitingInput, complete, error, or stale. A completed session can become active again when a new turn starts. """ status: AgentSessionStatus! """ The session title, generated automatically, set by the owning OAuth application, or set by the session's creator. Null if no title is set. """ summary: String """ [DEPRECATED] The type of the agent session. """ type: AgentSessionType @deprecated(reason: "This field is slated for removal.") """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The URL to the agent session page in the Linear app. Null when no issue is associated. """ url: String } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type AgentSessionConnection { """ The page's results paired with their cursors. """ edges: [AgentSessionEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [AgentSession!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ Starts your agent on an existing issue comment thread. The comment must be an unarchived root comment with no existing session. Include external links if users should be able to follow the work in your application. """ input AgentSessionCreateOnComment { """ UUID of an unarchived root comment on an issue. Replies and comments with an existing agent session are not accepted. """ commentId: String! """ The URL of an external agent-hosted page associated with this session. """ externalLink: String """ External links to associate with the new session. Each entry contains a url and label; URLs must be unique within the list. If omitted, a supplied externalLink is added with the agent’s name as its label. """ externalUrls: [AgentSessionExternalUrlInput!] } """ Starts your agent on an issue and creates a comment thread for the session. Supply the issue UUID or identifier, such as ENG-123. You can include labeled links to the agent’s work outside Linear. """ input AgentSessionCreateOnIssue { """ The URL of an external agent-hosted page associated with this session. """ externalLink: String """ External links to associate with the new session. Each entry contains a url and label; URLs must be unique within the list. If omitted, a supplied externalLink is added with the agent’s name as its label. """ externalUrls: [AgentSessionExternalUrlInput!] """ The issue that this session will be associated with. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String! } """ A result and its pagination cursor. """ type AgentSessionEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: AgentSession! } """ Payload for agent session webhook events. """ type AgentSessionEventWebhookPayload { """ The type of action that triggered the webhook. """ action: String! """ The agent activity that was created. """ agentActivity: AgentActivityWebhookPayload """ The agent session that the event belongs to. """ agentSession: AgentSessionWebhookPayload! """ ID of the app user the agent session belongs to. """ appUserId: String! """ The time the payload was created. """ createdAt: DateTime! """ Guidance to inform the agent's behavior, which comes from configuration at the level of the workspace, parent teams, and/or current team for this session. The nearest team-specific guidance should take highest precendence. """ guidance: [GuidanceRuleWebhookPayload!] """ ID of the OAuth client the app user is tied to. """ oauthClientId: String! """ ID of the organization for which the webhook belongs to. """ organizationId: String! """ The previous comments in the thread before this agent was mentioned and the session was initiated, if any. Present only for `created` events where the session was initiated by mentioning the agent in a child comment of a thread. """ previousComments: [CommentChildWebhookPayload!] """ A formatted prompt string containing the relevant context for the agent session, including issue details, comments, and guidance. Present only for `created` events. """ promptContext: String """ The type of resource. """ type: String! """ The ID of the webhook that sent this event. """ webhookId: String! """ Unix timestamp in milliseconds when the webhook was sent. """ webhookTimestamp: Float! } """ An external link associated with an agent session. """ type AgentSessionExternalLink { """ Label for the link. """ label: String! """ The URL of the external resource. """ url: String! } """ A labeled link to work or context hosted outside Linear, such as the agent’s own session page. URLs must use HTTP or HTTPS. Use distinct URLs within a list; the URL identifies the entry when adding or removing links. """ input AgentSessionExternalUrlInput { """ Label for the URL. """ label: String! """ The URL of the external resource. """ url: String! } """ A notification about an agent session awaiting input, failing, or completing a turn. """ type AgentSessionNotification implements Entity & Node & Notification { """ 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. """ actor: User """ The activity that produced the notification. """ agentActivityId: String """ The session that produced the notification. """ agentSessionId: String! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The bot that caused the notification. """ botActor: ActorBot """ The category of the notification. """ category: NotificationCategory! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent. """ emailedAt: DateTime """ 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. """ externalUserActor: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The time at which the user marked the notification as read. Null if the notification is unread. """ readAt: DateTime """ 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. """ snoozedUntilAt: DateTime """ Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated. """ type: String! """ The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed. """ unsnoozedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The recipient user of this notification. """ user: User! } """ The agent session created or updated by a mutation. """ type AgentSessionPayload { """ The agent session that was created or updated. """ agentSession: AgentSession! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ The status of an agent session. """ enum AgentSessionStatus { active awaitingInput complete error pending stale stopping } """ [DEPRECATED] The type of an agent session. """ enum AgentSessionType { commentThread } """ Changes to the links shown for your agent session. Supply externalUrls to replace the whole list, or use addedExternalUrls, removedExternalUrls, or both for incremental changes. Do not combine replacement with incremental changes. Omitted fields remain unchanged. """ input AgentSessionUpdateExternalUrlInput { """ Adds URLs or updates labels for existing URLs. Cannot be combined with externalUrls. """ addedExternalUrls: [AgentSessionExternalUrlInput!] """ The agent’s external session URL. Setting a URL also adds it to externalUrls with the agent’s name as its label. Null clears this field but leaves entries in externalUrls; use removedExternalUrls to remove those links. """ externalLink: String """ Replaces all external URLs. Pass an empty list to clear them; cannot be combined with addedExternalUrls or removedExternalUrls. """ externalUrls: [AgentSessionExternalUrlInput!] """ Removes exact URL matches. A URL cannot also be added in the same request. """ removedExternalUrls: [String!] } """ Changes to a session owned by your agent app. Omitted fields keep their current values. Use summary for its display title, plan for its current steps, and the external URL fields for links to your application. A title-only update does not acknowledge a pending session; other updates can mark a pending or stale session active. """ input AgentSessionUpdateInput { """ Adds URLs or updates labels for existing URLs. Cannot be combined with externalUrls; only the owning app can update this field. """ addedExternalUrls: [AgentSessionExternalUrlInput!] """ The agent’s external session URL. Setting a URL also adds it to externalUrls with the agent’s name as its label. Null clears this field but leaves entries in externalUrls; use removedExternalUrls to remove those links. """ externalLink: String """ Replaces all external URLs. Pass an empty list to clear them. Cannot be combined with addedExternalUrls or removedExternalUrls; only the owning app can update this field. """ externalUrls: [AgentSessionExternalUrlInput!] """ Replacement JSON array of 1 to 100 plan entries. Each entry must contain only content (1 to 10,000 characters) and status (pending, inProgress, completed, or canceled). Only the owning app can update it. Null clears the plan, while omission keeps it unchanged. Non-null plan updates are ignored while the session is in its error state. """ plan: JSONObject """ Removes exact URL matches. A URL cannot also be added in the same request; only the owning app can update this field. """ removedExternalUrls: [String!] """ The session title, displayed as its summary. Must contain 1 to 255 characters, including a non-whitespace character, with no line breaks or NUL bytes. Set to null to clear it and allow automatic title generation. Updating only this field does not acknowledge the session. Only updatable by the OAuth application that owns the session or by the user who created the session. """ summary: String } """ Payload for an agent session webhook. """ type AgentSessionWebhookPayload { """ The ID of the agent that the agent session belongs to. """ appUserId: String! """ The time at which the entity was archived. """ archivedAt: String """ The root comment of the thread this agent session is attached to. """ comment: CommentChildWebhookPayload """ The ID of the root comment of the thread this agent session is attached to. """ commentId: String """ The time at which the entity was created. """ createdAt: String! """ The human user responsible for the agent session. When a person starts the session, this is that person. When an automation such as a Loop or a triage rule delegates an issue to a third-party agent, this is the issue assignee, on whose behalf the agent works. Unset when the session has no responsible human user, such as a session an automation starts for the Linear agent, or a session started by an agent user. """ creator: UserChildWebhookPayload """ The ID of the human user responsible for the agent session. See the creator field for how this user is chosen. Unset when the session has no responsible human user. """ creatorId: String """ The time the agent session ended. """ endedAt: String """ The ID of the entity. """ id: String! """ The issue this agent session is associated with. """ issue: IssueWithDescriptionChildWebhookPayload """ The ID of the issue this agent session is associated with. """ issueId: String """ The ID of the organization that the agent session belongs to. """ organizationId: String! """ The ID of the comment that this agent session was spawned from, if from a different thread. """ sourceCommentId: String """ Metadata about the external source that created this agent session. """ sourceMetadata: JSONObject """ The time the agent session started working. """ startedAt: String """ The current status of the agent session. """ status: String! """ A summary of the activities in this session. """ summary: String """ The type of the agent session. """ type: String! """ The time at which the entity was updated. """ updatedAt: String! """ The URL of the agent session. """ url: String } """ Reusable instructions that guide the Linear Agent when a user selects the skill. body contains the instructions, while title, icon, and color identify the skill in Linear. A skill may be personal, shared with a team, or shared with the workspace. Teams can inherit skills from a parent team; edit the source skill to change inherited copies. """ type AgentSkill implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The skill instructions in markdown format. """ body: String! """ Hex color for the skill icon. Null if no color is set. """ color: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the skill. """ creator: User! """ The skill's description. Null if no description has been generated. """ description: String """ The icon of the skill. Null if no icon is set. """ icon: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The parent-team skill this skill was inherited from. Null if the skill is not inherited. """ inheritedFrom: AgentSkill """ The user who last updated the skill. Null if unknown. """ lastUpdatedBy: User """ The time the skill was last used by anyone in the workspace. Null if it has never been used. """ lastUsedAt: DateTime """ The user who owns the skill. """ owner: User! """ Recorded skill uses across the workspace in the last 30 days. Updated on use and refreshed periodically as older uses expire, so the count can lag the current 30-day window. """ recentUsageCount: Float! """ Whether a skill without a team is shared across the workspace. When false and teamId is null, only the owner can use it. """ shared: Boolean! """ The skill's unique URL slug. """ slugId: String! """ Team that can use the skill. Null for personal or workspace-wide skills. """ teamId: String """ The skill's title. """ title: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type AgentSkillConnection { """ The page's results paired with their cursors. """ edges: [AgentSkillEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [AgentSkill!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ Instructions and optional display details for a new agent skill. body is required and accepts Markdown. Omit teamId to create a personal skill owned by the authenticated user, or supply a team UUID to make it available to that team. Team skills require the team’s agent skill management permission. """ input AgentSkillCreateInput { """ The instructions the Linear Agent receives when the skill is used, in Markdown. Describe the task or behavior the skill should guide. On update, this replaces the entire existing instruction body. """ body: String! """ Hex color for the skill icon, such as #5E6AD2. """ color: String """ Decorative icon name or custom emoji identifier for the skill. """ icon: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ Team UUID. Omit to create a personal skill. """ teamId: String """ The title of the skill. Defaults to an empty string when omitted. """ title: String } """ A result and its pagination cursor. """ type AgentSkillEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: AgentSkill! } """ Filters agent skills by owner, workspace sharing, team, or common entity fields. A skill without a team can be personal or shared with the workspace; use shared to distinguish those cases. """ input AgentSkillFilter { """ Compound filters, all of which need to be matched by the agent skill. An empty list adds no constraint. """ and: [AgentSkillFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Compound filters, at least one of which needs to be matched by the agent skill. An empty list adds no constraint. """ or: [AgentSkillFilter!] """ Comparator for the skill owner's user ID. """ ownerId: IDComparator """ Comparator for whether the skill is shared with the workspace. """ shared: BooleanComparator """ Filters the Linear team that owns the skill. Use {null: true} to select skills without a team, then shared to distinguish workspace skills from personal skills. """ team: NullableTeamFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The result of an agent skill mutation. """ type AgentSkillPayload { """ The agent skill that was created or updated. """ agentSkill: AgentSkill! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Changes to an existing agent skill. Supply at least one field; omitted fields keep their current values. A supplied body replaces all instructions rather than appending to them. You cannot edit an inherited copy directly; update the skill on the team that owns its source. """ input AgentSkillUpdateInput { """ The instructions the Linear Agent receives when the skill is used, in Markdown. Describe the task or behavior the skill should guide. On update, this replaces the entire existing instruction body. """ body: String """ Hex color for the skill icon, such as #5E6AD2. """ color: String """ Decorative icon name or custom emoji identifier for the skill. """ icon: String """ The UUID of the team that should have this skill. Moving a skill requires permission to manage agent skills in its current team and the destination team. Set null to remove the team association, or omit the field to keep its current scope. """ teamId: String """ The title of the skill. """ title: String } """ Saved guidance used when Linear prepares AI prompts for a workspace, team, project, integration, or user. This record identifies the guidance configuration and who last edited it; it is separate from an agent skill or an individual agent session. """ type AiPromptRules implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user who last updated the guidance. Null if no user update is recorded or the user was deleted. """ updatedBy: User } """ Registers a key that Airbyte can use to export workspace data. Generate and keep the key before calling this mutation; Linear stores its hash and does not return the original key. """ input AirbyteConfigurationInput { """ Linear export API key. Must be 40 random letters and digits, optionally prefixed with `lin_integration_`. """ apiKey: String! } """ Payload for app user notification webhook events. """ type AppUserNotificationWebhookPayload { """ The type of action that triggered the webhook. """ action: String! """ ID of the app user the notification is for. """ appUserId: String! """ The time the payload was created. """ createdAt: DateTime! """ Details of the notification. """ notification: NotificationWebhookPayload! """ ID of the OAuth client the app user is tied to. """ oauthClientId: String! """ ID of the organization for which the webhook belongs to. """ organizationId: String! """ The type of resource. """ type: String! """ The ID of the webhook that sent this event. """ webhookId: String! """ Unix timestamp in milliseconds when the webhook was sent. """ webhookTimestamp: Float! } """ Payload for app user team access change webhook events. """ type AppUserTeamAccessChangedWebhookPayload { """ The type of action that triggered the webhook. """ action: String! """ IDs of the teams the app user was added to. """ addedTeamIds: [String!]! """ ID of the app user the notification is for. """ appUserId: String! """ Whether the app user can access all public teams. """ canAccessAllPublicTeams: Boolean! """ The time the payload was created. """ createdAt: DateTime! """ ID of the OAuth client the app user is tied to. """ oauthClientId: String! """ ID of the organization for which the webhook belongs to. """ organizationId: String! """ IDs of the teams the app user was removed from. """ removedTeamIds: [String!]! """ The type of resource. """ type: String! """ The ID of the webhook that sent this event. """ webhookId: String! """ Unix timestamp in milliseconds when the webhook was sent. """ webhookTimestamp: Float! } """ Public display information for an OAuth application, including its developer and branding. id identifies the application record; clientId is the identifier used in OAuth authorization requests. This object contains no client secret or access token. """ type Application { """ OAuth application's client ID. """ clientId: String! """ Description of the application. Null if none is configured. """ description: String """ Name of the developer. """ developer: String! """ URL of the developer's website, homepage, or documentation. """ developerUrl: String! """ OAuth application's ID. """ id: String! """ URL of the application icon. Null if no icon is configured. """ imageUrl: String """ Application name. """ name: String! } """ Customer approximate need count sorting options. """ input ApproximateNeedCountSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ The result of archiving, restoring, or deleting a resource. """ interface ArchivePayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Archived search results and related records serialized for Linear's client. External integrations can read the search connection's nodes instead. """ type ArchiveResponse { """ A JSON-encoded array of archived model records. An empty payload is the string `[]`. """ archive: String! """ Database schema version used by Linear's client to interpret the serialized records. External integrations can ignore it. """ databaseVersion: Float! """ Model types whose dependencies are included in the archive. Empty when no dependency groups are included. """ includesDependencies: [String!]! """ Number of archived issues for issue search, or serialized records (including related records) for document and project search. This is not the total search match count. """ totalCount: Float! } """ A recently archived integration. """ type ArchivedIntegrationPayload { """ The time at which the integration was archived. """ archivedAt: DateTime! """ Whether the integration had full code access. """ codeAccess: Boolean """ The enterprise URL if this is a GitHub Enterprise Cloud integration. """ enterpriseUrl: String """ The external identifier of the connected GitHub organization. """ externalOrgId: String """ The unique identifier of the integration. """ id: String! """ The avatar URL of the connected GitHub organization. """ orgAvatarUrl: String """ The login name of the connected GitHub organization. """ orgLogin: String """ The integration service type. """ service: String! } """ Connected Asks channel and whether the bot needs a manual invitation. """ type AsksChannelConnectPayload { """ Whether the bot needs to be manually added to the channel. """ addBot: Boolean! """ GitHub-specific details for the operation. Populated by GitHub-related mutations only. """ gitHub: GitHubIntegrationConnectDetails """ The integration that was created or updated. """ integration: Integration """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The new Asks Slack channel mapping for the connected channel. """ mapping: SlackChannelNameMapping! """ Whether the operation was successful. """ success: Boolean! } """ Issue assignee sorting options. """ input AssigneeSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A link from an issue to an external resource, such as a pull request, support ticket, design, or web page. The same URL can be attached to several issues, but only once per issue. Integration-created attachments can carry source-specific metadata and sync behavior beyond a basic link. """ type Attachment implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The first available metadata message body as a JSON-encoded ProseMirror document. Null if the body is missing, empty, or cannot be parsed. """ bodyData: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The Linear user who created the attachment. Null if no user is recorded or the account was deleted. """ creator: User """ The external user credited with creating the attachment. Null if none is recorded or the external user was deleted. """ externalUserCreator: ExternalUser """ Whether attachments from the same source application should be visually grouped together in the Linear issue detail view. """ groupBySource: Boolean! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The issue this attachment belongs to. """ issue: Issue! """ Details supplied by the source, such as ticket messages, named attributes, or pull request status. The available keys depend on the integration; treat missing keys as unavailable rather than assuming every attachment has the same shape. """ metadata: JSONObject! """ The issue this attachment was moved from, for example when its issue was marked as a duplicate. Null if no original issue is recorded. The issue field identifies where the attachment belongs now. """ originalIssue: Issue """ Details identifying the application or integration that created the attachment. Null if no source is recorded. """ source: JSONObject """ Raw source type from source.type, such as github, slack, or oauthClient. Returns unknown when no source is recorded. """ sourceType: String """ Subtitle displayed below the title. Null if none is set. """ subtitle: String """ Title displayed for the attachment. """ title: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ Resource URL, unique among attachments on the same issue. """ url: String! } """ Conditions on a collection of attachments. Use some to require a matching item, every to check the whole collection, or length to check its size. Direct attachment fields act as some only when no and, or, some, every, or length clause is supplied. """ input AttachmentCollectionFilter { """ Collection conditions that must all match. Different some branches can be satisfied by different attachments. """ and: [AttachmentCollectionFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Conditions on the user who added the attachment. Use null: true when no user is recorded. """ creator: NullableUserFilter """ Requires at least one related attachment and requires every related attachment to match these conditions. Use length: { eq: 0 } to find an empty collection. """ every: AttachmentFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Conditions on the total number of related attachments, independent of some or every. Use eq: 0 to find an empty collection. """ length: NumberComparator """ Alternative collection conditions; at least one must match. Other collection clauses at this level still apply. An empty list adds no condition. """ or: [AttachmentCollectionFilter!] """ Requires at least one related attachment to match these conditions. An empty collection does not match. """ some: AttachmentFilter """ Conditions on the integration or application that created the attachment, such as github or slack. This uses recorded source metadata rather than inferring a service from the URL. """ sourceType: SourceTypeComparator """ Conditions on the attachment’s secondary display text. Use null: true for attachments without a subtitle. """ subtitle: NullableStringComparator """ Conditions on the attachment’s display title, independent of the title at the linked URL. """ title: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator """ Conditions on the external URL attached to the issue. An exact URL comparison matches the stored value. """ url: StringComparator } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type AttachmentConnection { """ The page's results paired with their cursors. """ edges: [AttachmentEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Attachment!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The URL and display details to attach to an issue. If that URL is already attached to the issue, the existing attachment is updated. A supplied commentBody creates a linked comment only when a new attachment is created. """ input AttachmentCreateInput { """ Markdown for a linked comment. Ignored when updating an attachment with the same URL. """ commentBody: String """ Display name credited with creating the attachment. Available only to OAuth applications using actor=app. """ createAsUser: String """ Avatar URL for createAsUser. Requires createAsUser and an OAuth application using actor=app. """ displayIconUrl: String """ Indicates if attachments for the same source application should be grouped in the Linear UI. """ groupBySource: Boolean """ An icon url to display with the attachment. Should be of jpg or png format. Maximum of 1MB in size. Dimensions should be 20x20px for optimal display quality. """ iconUrl: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The issue to associate the attachment with. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String! """ Custom data to display with the attachment. messages is an array of objects with optional subject, Markdown body, and timestamp strings; attributes is an array of name/value string pairs. id may be a string or number and title a string; other top-level keys are allowed. When updating an existing URL, this replaces its metadata. """ metadata: JSONObject """ Subtitle displayed below the title, up to 2,048 characters. """ subtitle: String """ Title displayed for the attachment, up to 2,048 characters. """ title: String! """ Resource URL. If the same URL is already attached to issueId, that attachment is updated. """ url: String! } """ A result and its pagination cursor. """ type AttachmentEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Attachment! } """ Conditions used to select attachments. Supplied fields are combined with AND; use `or` to accept alternatives and `and` to group conditions. """ input AttachmentFilter { """ Conditions that the attachment must all match. These are combined with the other fields in this filter. """ and: [AttachmentFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Conditions on the user who added the attachment. Use null: true when no user is recorded. """ creator: NullableUserFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Alternative conditions; the attachment must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [AttachmentFilter!] """ Conditions on the integration or application that created the attachment, such as github or slack. This uses recorded source metadata rather than inferring a service from the URL. """ sourceType: SourceTypeComparator """ Conditions on the attachment’s secondary display text. Use null: true for attachments without a subtitle. """ subtitle: NullableStringComparator """ Conditions on the attachment’s display title, independent of the title at the linked URL. """ title: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator """ Conditions on the external URL attached to the issue. An exact URL comparison matches the stored value. """ url: StringComparator } """ The result of an attachment mutation. """ type AttachmentPayload { """ The attachment created or updated by the operation. """ attachment: Attachment! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ The result of an attachment sources query. """ type AttachmentSourcesPayload { """ A unique list of all source types used in this workspace. """ sources: JSONObject! } """ The display details to update on an existing attachment. title is required; omitted optional fields keep their values. Supplied metadata replaces the entire object. The attachment’s URL and issue cannot be changed through this input. """ input AttachmentUpdateInput { """ An icon url to display with the attachment. Should be of jpg or png format. Maximum of 1MB in size. Dimensions should be 20x20px for optimal display quality. """ iconUrl: String """ Replacement attachment data. messages accepts optional subject, body (Markdown), and timestamp strings; attributes accepts name/value string pairs. Include existing keys that should be kept. """ metadata: JSONObject """ The attachment subtitle. """ subtitle: String """ The attachment title. """ title: String! } """ Payload for an attachment webhook. """ type AttachmentWebhookPayload { """ The time at which the entity was archived. """ archivedAt: String """ The time at which the entity was created. """ createdAt: String! """ The ID of the creator of the attachment. """ creatorId: String """ The ID of the non-Linear user who created the attachment. """ externalUserCreatorId: String """ Whether attachments for the same source application should be grouped in the Linear UI. """ groupBySource: Boolean! """ The ID of the entity. """ id: String! """ The ID of the issue this attachment belongs to. """ issueId: String! """ Custom metadata related to the attachment. """ metadata: JSONObject! """ The ID of the issue this attachment belonged to originally. """ originalIssueId: String """ Information about the source which created the attachment. """ source: JSONObject """ The source type of the attachment. """ sourceType: String """ Optional subtitle of the attachment. """ subtitle: String """ The title of the attachment. """ title: String! """ The time at which the entity was updated. """ updatedAt: String! """ The URL of the attachment. """ url: String! } """ A workspace audit event, such as a sign-in, permission change, or export. Records the actor, request details, and action-specific metadata; requires audit log access. """ type AuditEntry implements Node { """ The user that caused the audit entry to be created. """ actor: User """ The ID of the user that caused the audit entry to be created. """ actorId: String """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The ISO 3166-1 alpha-2 country code derived from the request IP address. Null if geo-location could not be determined. """ countryCode: String """ The time at which the entity was created. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The IP address of the actor at the time the audited action was performed. Null if the IP was not captured. """ ip: String """ JSON object with details captured for this action, such as the affected resource's ID or changed settings. Its keys depend on type and may refer to resources that have since changed or been deleted. Null when no metadata was recorded. """ metadata: JSONObject """ The workspace the audit log belongs to. """ organization: Organization """ Request details such as user agent, location, authentication method, or integration. Null if unavailable. """ requestInformation: JSONObject """ Action identifier. Query auditEntryTypes for supported values and their descriptions. """ type: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type AuditEntryConnection { """ The page's results paired with their cursors. """ edges: [AuditEntryEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [AuditEntry!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A result and its pagination cursor. """ type AuditEntryEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: AuditEntry! } """ Filters audit events by action type, actor, request IP or country, and selected event metadata. Metadata filters match only events that recorded those particular keys; they do not search every resource mentioned by an event. """ input AuditEntryFilter { """ Filters that the audit entry actor must satisfy. """ actor: NullableUserFilter """ Audit-event filters that must all match. An empty list adds no constraint. """ and: [AuditEntryFilter!] """ Compares the two-letter country code inferred from the recorded request IP address. """ countryCode: StringComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Compares metadata.entityId when the action records that key. This does not also match IDs stored under other keys such as metadata.id. """ entityId: StringComparator """ Compares metadata.entityIdentifier when the action records that key, such as a resource's human-readable identifier. This is separate from metadata.entityId. """ entityIdentifier: StringComparator """ Compares metadata.entityType when the action records that key. Available values depend on the audit event type. """ entityType: StringComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for the IP address. """ ip: StringComparator """ Audit-event filters where at least one must match. An empty list adds no constraint. """ or: [AuditEntryFilter!] """ Compares the audit action identifier. Query auditEntryTypes for supported identifiers and their descriptions. """ type: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ An audit event identifier and its meaning. """ type AuditEntryType { """ Description of the audit entry type. """ description: String! """ The audit entry type. """ type: String! } """ Payload for an audit entry webhook. """ type AuditEntryWebhookPayload { """ The ID of the user that caused the audit entry to be created. """ actorId: String """ The time at which the entity was archived. """ archivedAt: String """ Country code of request resulting to audit entry. """ countryCode: String """ The time at which the entity was created. """ createdAt: String! """ The ID of the entity. """ id: String! """ IP from actor when entry was recorded. """ ip: String """ Additional metadata related to the audit entry. """ metadata: JSONObject """ The ID of the organization that the audit entry belongs to. """ organizationId: String! """ Additional information related to the request which performed the action. """ requestInformation: JSONObject """ The type of the audit entry. """ type: String! """ The time at which the entity was updated. """ updatedAt: String! } """ A workspace as seen during sign-in and workspace discovery. Its ID identifies the workspace, while urlKey identifies its URL. Sign-in settings explain how an account may gain access; appearing in discovery results does not mean the account already has a membership. """ type AuthOrganization { """ Allowed authentication providers, empty array means all are allowed """ allowedAuthServices: [String!]! @deprecated(reason: "Use authSettings.allowedAuthServices instead.") """ An approximate count of users, updated once per day. """ approximateUserCount: Float! """ JSON object describing workspace sign-in requirements, including allowedAuthServices and role-based exceptions. Use the available and locked membership lists in the authentication response to determine whether the current sign-in method grants this account access. """ authSettings: JSONObject! """ Hosting cell used to route requests for this workspace. """ cell: String! """ The time at which the entity was created. """ createdAt: DateTime! """ Time when workspace deletion was requested. Null when deletion has not been requested. """ deletionRequestedAt: DateTime """ Whether the workspace is enabled for access. """ enabled: Boolean! """ Whether signup hides other workspaces for users whose email domain is claimed by this workspace. """ hideNonPrimaryOrganizations: Boolean! """ The unique identifier of the entity. """ id: ID! """ Workspace logo URL. Null when no logo is set. """ logoUrl: String """ Workspace name. """ name: String! """ Up to three previous workspace URL slugs that redirect to the current slug. """ previousUrlKeys: [String!]! """ Region where the workspace is hosted. """ region: String! """ Feature release channel for the workspace. """ releaseChannel: ReleaseChannel! """ Whether SAML sign-in is enabled for the workspace. """ samlEnabled: Boolean! """ Whether SCIM provisioning is enabled for the workspace. """ scimEnabled: Boolean! """ Email domain or URL slug associated with the workspace. """ serviceId: String! """ Workspace identifier used in its Linear URL. This can change when the workspace is renamed; use id when you need a stable reference. """ urlKey: String! """ Active user count, excluding app users. Null when the caller cannot view the count or it was not fetched. """ userCount: Float } """ A signed-in account and the workspaces it can access or join. One account can have a separate user identity in each workspace: id is the account ID, while each users entry has its own workspace user ID. Locked entries require a different sign-in method. Authentication is carried by the session cookie, not the deprecated token field. """ type AuthResolverResponse { """ Whether the account may join workspaces through its email domain. Null when no decision was returned. """ allowDomainAccess: Boolean """ Workspaces the account may join through its email domain or an invitation. These are opportunities to join, not existing memberships. Null means this part of workspace discovery was not provided. """ availableOrganizations: [AuthOrganization!] """ Email for the authenticated account. """ email: String! """ User account ID. """ id: String! """ UUID of the workspace last accessed by the account. Null when no previous workspace is recorded. """ lastUsedOrganizationId: String """ Workspaces discovered for the account that require another sign-in method before it can join. Null means this part of workspace discovery was not provided. """ lockedOrganizations: [AuthOrganization!] """ Existing workspace memberships that require another sign-in method. These users belong to the account, but this authentication cannot open their workspaces until the required sign-in is completed. """ lockedUsers: [AuthUser!]! """ The authentication service used for the current session (e.g., google, email, saml). """ service: String """ Always null. Authentication is returned through the session cookie. """ token: String @deprecated(reason: "Deprecated and not used anymore. Never populated.") """ Active workspace memberships available with this sign-in method. Each entry is the account's user identity in one workspace; an empty list does not prevent the account from joining an available workspace. """ users: [AuthUser!]! } """ An account's user identity in one workspace, including its role and profile there. Use id when referring to this workspace membership; userAccountId links the same person's identities across workspaces. The organization field identifies the workspace for this user. """ type AuthUser { """ Whether this workspace membership is active. A disabled membership cannot access the workspace; an active membership can still require a different sign-in method according to workspace policy. """ active: Boolean! """ Avatar image URL. Null when no avatar is set. """ avatarUrl: String """ The time at which the entity was created. """ createdAt: DateTime! """ Display name, unique within the workspace. """ displayName: String! """ The user's email address. """ email: String! """ UUID of the workspace user, distinct from the account ID. """ id: ID! """ The user's full name. """ name: String! """ OAuth application UUID for an app user. Null for users created through other sources. """ oauthClientId: String """ Workspace this user identity belongs to. """ organization: AuthOrganization! """ Role of the user in the workspace. """ role: UserRoleType! """ Account UUID shared by this person’s user identities across workspaces. """ userAccountId: String! } """ A sign-in session for the authenticated account, with device details and the most recently recorded location and activity. Location is inferred from request IP information, and activity timestamps may lag the latest request. Use isCurrentSession to distinguish this request's session and id with logoutSession to revoke one. """ type AuthenticationSessionResponse { """ Detected browser type. Null when unknown. """ browserType: String """ Browser or desktop client name. Null when unknown. """ client: String """ Country codes observed on requests from this session. These describe the session's recorded IP locations and may include VPN or proxy locations. """ countryCodes: [String!]! """ The time at which the entity was created. """ createdAt: DateTime! """ Detailed name of the session including version information, derived from the user agent. """ detailedName: String! """ UUID of the sign-in session. Use this with logoutSession to revoke it. """ id: String! """ Last recorded IP address for the session. Null when unavailable. """ ip: String """ Whether this session is the one used to make the current API request. """ isCurrentSession: Boolean! """ Last recorded activity time. Activity is recorded periodically, so this may lag the most recent request. """ lastActiveAt: DateTime """ City, region, and country inferred from the recorded IP address. Null when unavailable. """ location: String """ City inferred from the last recorded IP address. Null when unavailable. """ locationCity: String """ Country inferred from the last recorded IP address. Null when unavailable. """ locationCountry: String """ Country code inferred from the last recorded IP address. Null when unavailable. """ locationCountryCode: String """ Region inferred from the last recorded IP address. Null when unavailable. """ locationRegionCode: String """ Display name inferred from the client and operating system, such as a browser on a named OS or Linear iOS. Uses an unknown-device label when there is not enough request information. """ name: String! """ Operating system inferred from the User-Agent header. Null when unknown. """ operatingSystem: String """ Service used for logging in. """ service: String """ Type of application used to authenticate. """ type: AuthenticationSessionType! """ Time when the session details were last saved. """ updatedAt: DateTime! """ Last recorded User-Agent header. Null when unavailable. """ userAgent: String } """ Application used for the session: web browser, desktop, iOS, or Android. """ enum AuthenticationSessionType { android desktop ios web } """ Base fields for all webhook payloads. """ type BaseWebhookPayload { """ The time the payload was created. """ createdAt: DateTime! """ ID of the organization for which the webhook belongs to. """ organizationId: String! """ The ID of the webhook that sent this event. """ webhookId: String! """ Unix timestamp in milliseconds when the webhook was sent. """ webhookTimestamp: Float! } """ Filters a boolean field. Use `{ eq: true }` to require it to be enabled, or `{ eq: false }` to require it to be disabled. A missing value does not match either condition. """ input BooleanComparator { """ Matches this boolean value. """ eq: Boolean """ Matches the opposite boolean value. """ neq: Boolean } """ A candidate code repository to consider when generating repository suggestions for an issue. """ input CandidateRepository { """ Hostname of the Git service (e.g., 'github.com', 'github.company.com'). """ hostname: String! """ The full name of the repository in owner/name format (e.g., 'acme/backend'). """ repositoryFullName: String! } """ [ALPHA] A code repository connected to the workspace from a supported version control provider (e.g., GitHub, GitLab). Normalizes repository metadata that was previously stored as JSONB on individual pull requests, providing a single source of truth for repository owner, name, visibility, and default branch. """ type CodeRepository implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The base URL of the repository hosting provider (e.g., 'https://github.com'). Used to construct full URLs to the repository and its resources. """ baseUrl: String! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The name of the repository's default branch (e.g., 'main', 'master'). Empty string if the default branch has not yet been synced from the provider. """ defaultBranch: String! """ The unique identifier for the repository owner on the external hosting provider. Used to group repositories by owner organization. """ externalOwnerId: String! """ The unique identifier for this repository on the external hosting provider (e.g., the GitHub GraphQL node ID). Used to deduplicate repositories across webhook events and API calls. """ externalRepositoryId: String! """ The full path of the repository in 'owner/name' format (e.g., 'linear/linear-app'). This is a computed field derived from the owner and name. """ fullPath: String! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The name of the repository on the hosting provider (e.g., 'linear-app' in 'linear/linear-app'). """ name: String! """ The owner of the repository on the hosting provider, which is typically a user account or organization name (e.g., 'linear' in 'linear/linear-app'). """ owner: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The visibility level of the repository on the hosting provider. One of 'public', 'private', or 'internal'. Used in conjunction with repository access policies to control which features workspace members can use. """ visibility: String! } """ A reason the workspace cannot trust content from the authenticated OAuth application for Coding Sessions. """ enum CodingSessionsDisabledReason { """ Coding Sessions and trusted external sources are available, but the application's source is not approved or is no longer available in the workspace. """ APP_NOT_TRUSTED """ Coding Sessions or Linear Agent are disabled in the workspace, or the workspace's plan does not support Coding Sessions. """ CODING_SESSIONS_DISABLED """ Coding Sessions are enabled, but the workspace cannot use trusted external sources. """ TRUSTED_EXTERNAL_SOURCES_UNAVAILABLE } """ A message in a discussion on an issue, document, project, initiative, or update. A thread consists of a root comment and replies whose parent points to that root. Resolution belongs to the root comment; replies do not form additional nested threads. """ type Comment implements Node { """ The earliest agent session associated with this comment. Null if none exists. """ agentSession: AgentSession """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The comment’s content as Markdown. This is the message text; quotedText, when present, identifies the separate passage being discussed. """ body: String! """ The bot credited with the comment. Null when a Linear user is credited instead. """ botActor: ActorBot """ The replies in this root comment’s thread. Replies point directly to the root rather than nesting under other replies; query parent on a reply to find the thread root. """ children( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned comments. """ filter: CommentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CommentConnection! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Issues created from this comment. """ createdIssues( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueConnection! """ 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. """ documentContent: DocumentContent """ The ID of the document content that the comment is associated with. Null if the comment belongs to a different parent entity type. """ documentContentId: String """ The time the comment was last edited by its author. Null if the comment has not been edited since creation. """ editedAt: DateTime """ The external discussion synced with this root comment. Null for replies and unsynced comments. """ externalThread: SyncedExternalThread """ 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. """ externalUser: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The initiative that the comment is associated with. Null if the comment belongs to a different parent entity type. """ initiative: Initiative """ The ID of the initiative that the comment is associated with. Null if the comment belongs to a different parent entity type. """ initiativeId: String """ The initiative update that the comment is associated with. Null if the comment belongs to a different parent entity type. """ initiativeUpdate: InitiativeUpdate """ The ID of the initiative update that the comment is associated with. Null if the comment belongs to a different parent entity type. """ initiativeUpdateId: String """ The issue that the comment is associated with. Null if the comment belongs to a different parent entity type. """ issue: Issue """ The ID of the issue that the comment is associated with. Null if the comment belongs to a different parent entity type. """ issueId: String """ The user on whose behalf the comment was created, such as when an agent posts for a user. This attribution is separate from the comment's author. Null when no user is attributed or the attributed user is archived or inaccessible. """ onBehalfOf: User """ The root comment of this reply’s thread. Null for a root comment. """ parent: Comment """ UUID of the root comment of this reply’s thread. Null for a root comment. """ parentId: String """ 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. """ project: Project """ The ID of the project that the comment is associated with. Null if the comment belongs to a different parent entity type. """ projectId: String """ The project update that the comment is associated with. Null if the comment belongs to a different parent entity type. """ projectUpdate: ProjectUpdate """ The ID of the project update that the comment is associated with. Null if the comment belongs to a different parent entity type. """ projectUpdateId: String """ 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. """ quotedText: String """ Emoji reactions grouped by emoji type, including the individual reaction IDs and user information. Use reactions when you need the full Reaction objects, for example to remove a specific reaction. """ reactionData: JSONObject! """ Reactions associated with the comment. """ reactions: [Reaction!]! """ The time this root comment’s thread was marked resolved. Null for an unresolved thread and for replies. A resolved thread does not need to have a resolvingComment. """ resolvedAt: DateTime """ The reply selected as the resolution. Null if no resolving reply was selected, even when the thread is resolved. """ resolvingComment: Comment """ UUID of the reply selected as the resolution. Null if none was selected. """ resolvingCommentId: String """ The user who resolved the thread. Null if unresolved, this is a reply, or the user was deleted. """ resolvingUser: User """ The external services the comment is synced with. """ syncedWith: [ExternalEntityInfo!] """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The URL that opens the comment in Linear, including its comment anchor. The viewer must still have access to the resource containing the comment. """ url: String! """ The Linear user who wrote the comment. Null if no user is recorded or the account was deleted. """ user: User } """ Certain properties of a comment. """ type CommentChildWebhookPayload { """ The body of the comment. """ body: String! """ The ID of the document content this comment belongs to. """ documentContentId: String """ The ID of the comment. """ id: String! """ The ID of the initiative update this comment belongs to. """ initiativeUpdateId: String """ The ID of the issue this comment belongs to. """ issueId: String """ The ID of the project update this comment belongs to. """ projectUpdateId: String """ The ID of the user who created this comment. """ userId: String } """ Conditions on a collection of comments. Use some to require a matching item, every to check the whole collection, or length to check its size. Direct comment fields act as some only when no and, or, some, every, or length clause is supplied. """ input CommentCollectionFilter { """ Collection conditions that must all match. Different some branches can be satisfied by different comments. """ and: [CommentCollectionFilter!] """ Conditions on the stored comment body text. This filters the comment itself, not its quoted text or replies. """ body: StringComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Conditions on the rich-text content being discussed, such as a document body or issue description. Use its issue or document filter to choose the enclosing resource. """ documentContent: NullableDocumentContentFilter """ Requires at least one related comment and requires every related comment to match these conditions. Use length: { eq: 0 } to find an empty collection. """ every: CommentFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Filters that the comment's initiative must satisfy. """ initiative: NullableInitiativeFilter """ Conditions on the initiative update being discussed. Use null: false to select comments on initiative updates. """ initiativeUpdate: NullableInitiativeUpdateFilter """ Conditions on the issue directly associated with the comment. Use documentContent to filter comments attached to an issue’s description content instead. """ issue: NullableIssueFilter """ Conditions on the total number of related comments, independent of some or every. Use eq: 0 to find an empty collection. """ length: NumberComparator """ Conditions on customer requests linked to the comment. Use some to require a matching request or length to count linked requests. """ needs: CustomerNeedCollectionFilter """ Alternative collection conditions; at least one must match. Other collection clauses at this level still apply. An empty list adds no condition. """ or: [CommentCollectionFilter!] """ Conditions on the thread’s root comment. Use null: true to return root comments, or null: false to return replies. An ID condition selects replies in one thread. """ parent: NullableCommentFilter """ Filters that the comment's project must satisfy. """ project: NullableProjectFilter """ Conditions on the project update being discussed. Use null: false to select comments on project updates. """ projectUpdate: NullableProjectUpdateFilter """ Conditions on the comment’s emoji reactions. Use some with an emoji condition to find comments that received that reaction, or length to test the total reaction count. """ reactions: ReactionCollectionFilter """ Requires at least one related comment to match these conditions. An empty collection does not match. """ some: CommentFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator """ Conditions on the user recorded as the comment’s author. This does not match an app’s separate display attribution. """ user: UserFilter } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type CommentConnection { """ The page's results paired with their cursors. """ edges: [CommentEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Comment!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The Markdown body and destination for a new comment. Supply exactly one parent resource, such as issueId or documentContentId. To reply, also set parentId to the thread’s root comment and use the same resource as that thread. """ input CommentCreateInput { """ The comment’s message in Markdown. Required for public API creation. User mentions are processed when the comment is saved and can notify or subscribe the mentioned users. """ body: String """ Display name credited with creating the comment. Available only to OAuth applications using actor=app. """ createAsUser: String """ Whether to add the comment as a reply to the issue’s oldest synced Slack thread, so the reply participates in that sync. Requires an issue with an existing synced Slack thread and cannot be combined with parentId. """ createOnSyncedSlackThread: Boolean """ Creation time for imported comments. Must be in the past. Defaults to the current time. """ createdAt: DateTime """ Avatar URL for createAsUser. Requires createAsUser and an OAuth application using actor=app. """ displayIconUrl: String """ Skip automatically subscribing the author to the issue. Defaults to false. """ doNotSubscribeToIssue: Boolean """ The UUID of the DocumentContent to discuss, such as a document’s content or an issue description. Supply this instead of another parent resource; it is a content ID, not the enclosing document’s UUID. """ documentContentId: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The initiative to associate the comment with. Can be a UUID or initiative identifier (e.g., 'I-12'). """ initiativeId: String """ The UUID of the initiative update to discuss. An update has one root discussion thread; use its root comment as parentId when adding a reply to an existing thread. """ initiativeUpdateId: String """ The issue to associate the comment with. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String """ The UUID of the thread’s root comment when creating a reply. Use the root even when replying to another reply, and supply the same parent resource as the thread. Omit this to start a thread; it cannot be combined with createOnSyncedSlackThread. Synced Intercom threads cannot receive replies through this mutation. """ parentId: String """ The UUID of the post to discuss. A post has one root discussion thread; use its root comment as parentId when adding a reply. """ postId: String """ The project to associate the comment with. Can be a UUID or project identifier (e.g., 'P-LIN-123'). """ projectId: String """ The UUID of the project update to discuss. An update has one root discussion thread; use its root comment as parentId when adding a reply to an existing thread. """ projectUpdateId: String """ The text that this comment references. Only defined for inline comments. """ quotedText: String } """ A result and its pagination cursor. """ type CommentEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Comment! } """ Conditions used to select comments. Supplied fields are combined with AND; use `or` to accept alternatives and `and` to group conditions. """ input CommentFilter { """ Conditions that the comment must all match. These are combined with the other fields in this filter. """ and: [CommentFilter!] """ Conditions on the stored comment body text. This filters the comment itself, not its quoted text or replies. """ body: StringComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Conditions on the rich-text content being discussed, such as a document body or issue description. Use its issue or document filter to choose the enclosing resource. """ documentContent: NullableDocumentContentFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Filters that the comment's initiative must satisfy. """ initiative: NullableInitiativeFilter """ Conditions on the initiative update being discussed. Use null: false to select comments on initiative updates. """ initiativeUpdate: NullableInitiativeUpdateFilter """ Conditions on the issue directly associated with the comment. Use documentContent to filter comments attached to an issue’s description content instead. """ issue: NullableIssueFilter """ Conditions on customer requests linked to the comment. Use some to require a matching request or length to count linked requests. """ needs: CustomerNeedCollectionFilter """ Alternative conditions; the comment must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [CommentFilter!] """ Conditions on the thread’s root comment. Use null: true to return root comments, or null: false to return replies. An ID condition selects replies in one thread. """ parent: NullableCommentFilter """ Filters that the comment's project must satisfy. """ project: NullableProjectFilter """ Conditions on the project update being discussed. Use null: false to select comments on project updates. """ projectUpdate: NullableProjectUpdateFilter """ Conditions on the comment’s emoji reactions. Use some with an emoji condition to find comments that received that reaction, or length to test the total reaction count. """ reactions: ReactionCollectionFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator """ Conditions on the user recorded as the comment’s author. This does not match an app’s separate display attribution. """ user: UserFilter } """ The result of a comment mutation. """ type CommentPayload { """ The comment that was created or updated. """ comment: Comment! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ The replacement Markdown body for an existing comment. Omit body to leave the content unchanged. quotedText is accepted by this input but is not currently applied by commentUpdate. """ input CommentUpdateInput { """ The replacement message in Markdown. Send an empty string to clear the body or omit it to keep the current content; null is not accepted. Content edits normally update editedAt. """ body: String """ The passage associated with an inline comment. This field is accepted but is not currently changed by commentUpdate. """ quotedText: String } """ Payload for a comment webhook. """ type CommentWebhookPayload { """ The time at which the entity was archived. """ archivedAt: String """ The body of the comment. """ body: String! """ The bot actor data for this comment. """ botActor: String """ The time at which the entity was created. """ createdAt: String! """ The document content for this comment. """ documentContent: DocumentContentChildWebhookPayload """ The ID of the document content this comment belongs to. """ documentContentId: String """ When the comment was last edited. """ editedAt: String """ The external user who created this comment. """ externalUser: ExternalUserChildWebhookPayload """ The ID of the external user who created this comment. """ externalUserId: String """ The ID of the entity. """ id: String! """ The initiative update this comment belongs to. """ initiativeUpdate: InitiativeUpdateChildWebhookPayload """ The ID of the initiative update this comment belongs to. """ initiativeUpdateId: String """ The issue this comment belongs to. """ issue: IssueChildWebhookPayload """ The ID of the issue this comment belongs to. """ issueId: String """ The parent comment. """ parent: CommentChildWebhookPayload """ The ID of the parent comment. """ parentId: String """ The ID of the post this comment belongs to. """ postId: String """ The project update this comment belongs to. """ projectUpdate: ProjectUpdateChildWebhookPayload """ The ID of the project update this comment belongs to. """ projectUpdateId: String """ The quoted text in this comment. """ quotedText: String """ The reaction data for this comment. """ reactionData: JSONObject! """ When the comment was resolved. """ resolvedAt: String """ The ID of the comment that resolved this comment. """ resolvingCommentId: String """ The ID of the user who resolved this comment. """ resolvingUserId: String """ The entity this comment is synced with. """ syncedWith: JSONObject """ The time at which the entity was updated. """ updatedAt: String! """ The user who created this comment. """ user: UserChildWebhookPayload """ The ID of the user who created this comment. """ userId: String } """ Issue completion date sorting options. """ input CompletedAtSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A message to Linear support from the authenticated user. Choose a message category and provide the message itself. Optional device, browser, and client details help support understand the context. """ input ContactCreateInput { """ The user's browser name and version (e.g., 'Chrome 120'). """ browser: String """ The version of the Linear client application the user is running. """ clientVersion: String """ The user's device type or model information. """ device: String """ How disappointed the user would be if they could no longer use Linear. Scale: 0 = not disappointed, 1 = somewhat disappointed, 2 = very disappointed, 3 = extremely disappointed. """ disappointmentRating: Int """ The feedback or support message submitted by the user. """ message: String! """ The user's operating system name and version (e.g., 'macOS 14.0'). """ operatingSystem: String """ Message category: support, question, feedback, sales, exitSurvey, mobilePreorder, or lead. prioritySupport is deprecated. """ type: String! } """ Return type for contact mutations. """ type ContactPayload { """ Whether the operation was successful. """ success: Boolean! } """ [Internal] Comparator for content. """ input ContentComparator { """ [Internal] Contains constraint. """ contains: String """ [Internal] Not-contains constraint. """ notContains: String } """ A built-in team view used by notification subscriptions. """ enum ContextViewType { activeCycle activeIssues backlog triage upcomingCycle } """ Result of queuing a workspace CSV export. Success confirms scheduling; the download link is sent by email when ready. """ type CreateCsvExportReportPayload { """ Whether the operation was successful. """ success: Boolean! } """ Issue creation date sorting options. """ input CreatedAtSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Payload for custom webhook resource events. """ type CustomResourceWebhookPayload { """ The type of action that triggered the webhook. """ action: String! """ The time the payload was created. """ createdAt: DateTime! """ ID of the organization for which the webhook belongs to. """ organizationId: String! """ The type of resource. """ type: String! """ The ID of the webhook that sent this event. """ webhookId: String! """ Unix timestamp in milliseconds when the webhook was sent. """ webhookTimestamp: Float! } """ A saved set of filters for issues, projects, initiatives, or updates. A view can be personal or shared and can be placed in a team, project, or initiative. Its filters choose the matching items; separate view preferences control how those items are grouped, sorted, and displayed. """ type CustomView implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The hex color code of the custom view icon. """ color: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who originally created the custom view. """ creator: User! """ The description of the custom view. """ description: String """ The filter applied to feed items in the custom view. When set, this view displays feed items (updates) instead of issues. """ feedItemFilterData: JSONObject """ The saved issue filter used when modelName is Issue. This selects matching issues; layout, grouping, and ordering are stored in view preferences rather than this filter. """ filterData: JSONObject! """ The legacy serialized filters applied to issues in the custom view. """ filters: JSONObject! @deprecated(reason: "Will be replaced by `filterData` in a future update") """ The icon of the custom view. Can be an emoji or a decorative icon identifier. """ icon: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The filter applied to initiatives in the custom view. When set, this view displays initiatives instead of issues. """ initiativeFilterData: JSONObject """ Initiatives that match both the saved initiative filter and any filter supplied with this query. The additional filter narrows the view rather than replacing its saved criteria. Returns an empty connection when modelName is not Initiative. """ initiatives( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned initiatives. """ filter: InitiativeFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): InitiativeConnection! """ Issues that match both the saved issue filter and any filter supplied with this query. The view’s project or team scope also applies. Returns an empty connection when modelName is not Issue; includeSubTeams defaults to false. """ issues( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Include issues from sub-teams when the custom view is associated with a team. """ includeSubTeams: Boolean = false """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned issues. """ sort: [IssueSortInput!] ): IssueConnection! """ 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. """ modelName: String! """ The name of the custom view, displayed in the sidebar and navigation. """ name: String! """ The workspace of the custom view. """ organization: Organization! """ The workspace’s saved default display settings for this view, or null if none exist. Personal overrides take precedence; use viewPreferencesValues for the effective settings for you. """ organizationViewPreferences: ViewPreferences """ The user who owns the custom view. For personal views, only the owner can see and edit the view. """ owner: User! """ The saved project filter. When present, this view displays projects and modelName is Project, taking precedence over the initiative and update filters. """ projectFilterData: JSONObject """ Projects that match both the saved project filter and any filter supplied with this query. The view’s team or initiative scope also applies. Returns an empty connection when modelName is not Project; includeSubTeams defaults to true for team views. """ projects( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned projects. """ filter: ProjectFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Include projects from sub-teams when the custom view is associated with a team. """ includeSubTeams: Boolean = true """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned projects. """ sort: [ProjectSortInput!] ): ProjectConnection! """ Whether the view is shared rather than personal. Sharing makes the view available to people in its scope; it does not grant access to issues, projects, or other items they could not otherwise see. """ shared: Boolean! """ Short ID used in the view’s URL. Generated on creation. """ slugId: String! """ The team the view belongs to. Null for views without a team scope, or when you cannot access the associated team. """ team: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user who last updated the custom view. Null if the updater's account has been deleted. """ updatedBy: User """ Your saved display overrides for this view, or null if you have none. These are the stored overrides; use viewPreferencesValues to read the effective settings after defaults are applied. """ userViewPreferences: ViewPreferences """ The display settings that apply to you after combining system defaults, workspace defaults, and your personal overrides. Use this for rendering a view; the separate preferences fields expose the stored records you can edit. """ viewPreferencesValues: ViewPreferencesValues } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type CustomViewConnection { """ The page's results paired with their cursors. """ edges: [CustomViewEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [CustomView!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The name, scope, and filters for a saved view. The current user owns the new view, which is personal unless shared is true. Choose the filter field for the kind of items you want to show; an issue view with no filter matches all issues in its scope that the viewer can access. """ input CustomViewCreateInput { """ Hex color for the view’s icon, such as #5E6AD2. """ color: String """ The description of the custom view. """ description: String """ Filter for a view of updates. Sets the view’s modelName to FeedItem when no project or initiative filter is set. """ feedItemFilterData: FeedItemFilter """ The criteria for an issue view. Use the same IssueFilter structure accepted by the issues query. Omit it for an unfiltered issue view within the view’s scope. """ filterData: IssueFilter """ Emoji name or decorative icon identifier for the view. """ icon: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ [ALPHA] Filter for a view of initiatives. Sets the view’s modelName to Initiative when no project filter is set. """ initiativeFilterData: InitiativeFilter """ UUID of the initiative to place the view in. """ initiativeId: String """ The name of the custom view. """ name: String! """ UUID of the owner. Must be the current user; defaults to the current user. """ ownerId: String """ Filter for a view of projects. Sets the view’s modelName to Project. """ projectFilterData: ProjectFilter """ UUID of the project to place the view in. """ projectId: String """ Whether to make the view shared in its scope. Defaults to false for a personal view. Sharing the view does not change access to the items it contains. """ shared: Boolean """ UUID of the team to place the view in. """ teamId: String } """ Custom view creation date sorting options. """ input CustomViewCreatedAtSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A result and its pagination cursor. """ type CustomViewEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: CustomView! } """ Conditions used to select saved views. Supplied fields are combined with AND; use `or` to accept alternatives and `and` to group conditions. """ input CustomViewFilter { """ Conditions that the saved view must all match. These are combined with the other fields in this filter. """ and: [CustomViewFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Conditions on the user who created the saved view. """ creator: UserFilter """ Filter based on whether the custom view has a facet. """ hasFacet: Boolean """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Conditions on the kind of items the view displays: Issue, Project, Initiative, or FeedItem. This is derived from the saved filter configuration, not the view’s name. """ modelName: StringComparator """ Conditions on the saved view’s name. """ name: StringComparator """ Alternative conditions; the saved view must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [CustomViewFilter!] """ Whether the saved view is shared with others. Sharing the view does not grant access to its underlying issues or projects. """ shared: BooleanComparator """ Conditions on the team associated with the view. Use null: true for views without a team; these may still belong to a project or initiative. """ team: NullableTeamFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The result of a custom view subscribers check. """ type CustomViewHasSubscribersPayload { """ Whether the custom view has subscribers. """ hasSubscribers: Boolean! } """ Custom view name sorting options. """ input CustomViewNameSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A notification subscription scoped to a specific custom view. The subscriber receives notifications for events matching the custom view's filter criteria. """ type CustomViewNotificationSubscription implements Entity & Node & NotificationSubscription { """ Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists. """ active: Boolean! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ 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. """ contextViewType: ContextViewType """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The custom view subscribed to. """ customView: CustomView! """ The customer that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ customer: Customer """ The cycle that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ cycle: Cycle """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Whether initiative update notifications also include updates from sub-initiatives. Applies only when initiative updates are enabled and the workspace supports sub-initiatives. """ includeSubInitiativeUpdates: Boolean! """ The initiative that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ initiative: Initiative """ The issue label that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ label: IssueLabel """ The notification event types that this subscription will deliver to the subscriber. """ notificationSubscriptionTypes: [String!]! """ The project that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ project: Project """ The user who will receive notifications from this subscription. """ subscriber: User! """ The team that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ team: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user that this notification subscription is scoped to, for user-specific view subscriptions. Null if the subscription targets a different entity type. """ user: User """ 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. """ userContextViewType: UserContextViewType } """ The result of a custom view mutation. """ type CustomViewPayload { """ The custom view that was created or updated. """ customView: CustomView! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Custom view shared status sorting options. Ascending order puts shared views last. """ input CustomViewSharedSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Sorts views by a single property. Supply exactly one sort option per entry. """ input CustomViewSortInput { """ Sorts by creation time. Defaults to newest first. """ createdAt: CustomViewCreatedAtSort """ Sorts by view name. Defaults to ascending order. """ name: CustomViewNameSort """ Sorts by whether the view is shared. Defaults to personal views first. """ shared: CustomViewSharedSort """ Sorts by last meaningful update time. Defaults to newest first. """ updatedAt: CustomViewUpdatedAtSort } """ The changes to a saved view’s name, appearance, scope, or filters. Omitted fields keep their values. Each supplied filter object replaces that saved filter rather than merging individual conditions. """ input CustomViewUpdateInput { """ Hex color for the view’s icon, such as #5E6AD2. Null clears the color. """ color: String """ The description of the custom view. """ description: String """ The complete replacement update filter. Used when no project or initiative filter is set. Pass null to remove it, or omit the field to keep it. """ feedItemFilterData: FeedItemFilter """ The complete replacement issue filter. Send an empty object to remove issue-filter conditions, or omit it to keep the current filter. It is used only when the view’s modelName is Issue. """ filterData: IssueFilter """ Emoji name or decorative icon identifier for the view. Null clears the icon. """ icon: String """ [ALPHA] The complete replacement initiative filter. Used when no project filter is set. Pass null to remove it, or omit the field to keep it. """ initiativeFilterData: InitiativeFilter """ The name of the custom view. """ name: String """ UUID of the workspace user who will own the view. Transferring a personal view can remove your access to it; omit this field to keep its current owner. """ ownerId: String """ The complete replacement project filter. A non-null value makes this a project view and takes precedence over initiative and update filters. Pass null to remove it, or omit the field to keep it. """ projectFilterData: ProjectFilter """ Whether to share the view with people who can access its team, project, initiative, or workspace scope. False makes it personal to the owner. Views used in some pinned tabs cannot be made personal. """ shared: Boolean """ UUID of the team to place the view in. Null removes the team scope. """ teamId: String } """ Custom view update date sorting options. """ input CustomViewUpdatedAtSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A customer company whose requests help you prioritize work. Customer needs link its feedback to issues or projects, while status, tier, revenue, and size describe the account. Domains and external IDs match incoming requests and integration records to the same customer. """ type Customer implements Node { """ An approximate count of the customer’s distinct requests, counting multiple needs for the same issue or project once. The count is updated separately and may lag recent changes; use needs to inspect the individual records. """ approximateNeedCount: Float! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Business email domains used to match requests to this customer. Domains must be unique across customers in the workspace, including archived customers; public email domains are not allowed. """ domains: [String!]! """ Customer identifiers in external systems. Each ID must be unique across customers in the workspace, including archived customers. """ externalIds: [String!]! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The integration that manages this customer's data (e.g., Intercom, Salesforce). Null if the customer is not managed by any data source integration. """ integration: Integration """ URL of the customer's logo image. Null if no logo has been uploaded. """ logoUrl: String """ The external ID selected as the primary data source. When set, it must be in externalIds. Null when no primary source has been selected. """ mainSourceId: String """ The display name of the customer organization. """ name: String! """ The list of customer needs (product requests and feedback) associated with this customer. """ needs: [CustomerNeed!]! """ 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. """ owner: User """ Annual revenue in whole units of the workspace’s configured revenue currency. Null if not provided; the value remains annual when the UI displays monthly revenue. """ revenue: Int """ 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. """ size: Float """ 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. """ slackChannelId: String """ A unique, human-readable URL slug for the customer. Automatically generated and used in customer page URLs. """ slugId: String! """ The current lifecycle status of the customer. Defaults to the first status by position when a customer is created without an explicit status. """ status: CustomerStatus! """ The workspace-defined customer tier used for prioritization. Null if no tier has been assigned. """ tier: CustomerTier """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The URL of the customer's page in the Linear application. """ url: String! } """ Certain properties of a customer. """ type CustomerChildWebhookPayload { """ The domains associated with this customer. """ domains: [String!]! """ The ids of the customers in external systems. """ externalIds: [String!]! """ The ID of the customer. """ id: String! """ The name of the customer. """ name: String! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type CustomerConnection { """ The page's results paired with their cursors. """ edges: [CustomerEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Customer!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ Issue customer count sorting options. """ input CustomerCountSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ The account details for a new customer. Provide its name, and optionally business domains or external-system IDs for matching requests. Domains and external IDs must be unique across customers in the workspace, including archived customers. """ input CustomerCreateInput { """ The email domains associated with this customer (e.g., 'acme.com'). Public email domains are not allowed. Defaults to an empty array. """ domains: [String!] = [] """ External-system customer IDs, unique across customers in the workspace, including archived customers. Defaults to an empty array. """ externalIds: [String!] = [] """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The URL of the customer's logo image. """ logoUrl: String """ The external ID to select as the primary data source. Must be one of the values provided in externalIds. """ mainSourceId: String """ The display name of the customer organization. """ name: String! """ The customer owner’s user UUID. Application accounts cannot own customers. """ ownerId: String """ Annual revenue in whole units of the workspace’s configured revenue currency. Must be a nonnegative integer. """ revenue: Int """ The size of the customer organization (e.g., number of employees). """ size: Int """ The ID of the Slack channel to link to this customer. """ slackChannelId: String """ Customer status UUID. Defaults to the first status by position. """ statusId: String """ The identifier of the customer tier to assign. """ tierId: String } """ Customer creation date sorting options. """ input CustomerCreatedAtSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A result and its pagination cursor. """ type CustomerEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Customer! } """ Filters customers by name, domains, owner, customer needs, revenue, size, status, or tier. Supplied conditions must match together; use and and or to combine nested filters. """ input CustomerFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [CustomerFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Comparator for the customer's domains. """ domains: StringArrayComparator """ Comparator for the customer's external IDs. """ externalIds: StringArrayComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for the customer name. """ name: StringComparator """ Filters that the customer's needs must satisfy. """ needs: CustomerNeedCollectionFilter """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [CustomerFilter!] """ Filters that the customer owner must satisfy. """ owner: NullableUserFilter """ Comparator for the customer generated revenue. """ revenue: NumberComparator """ Comparator for the customer size. """ size: NumberComparator """ Comparator for the customer slack channel ID. """ slackChannelId: StringComparator """ Filters that the customer's status must satisfy. """ status: CustomerStatusFilter """ Filters that the customer's tier must satisfy. """ tier: CustomerTierFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Issue customer important count sorting options. """ input CustomerImportantCountSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A request or piece of feedback associated with a customer and linked to an issue or project. It can include a written message, priority, and an attachment pointing to the original conversation. Multiple needs can connect the same customer to the same work, preserving each source of feedback. """ type CustomerNeed implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ 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. """ attachment: Attachment """ Manually supplied feedback in Markdown. Null if no body was set; content also includes feedback extracted from the source attachment. """ body: String """ An optional comment providing additional context for this need. Null if the need was not created from or associated with a specific comment. """ comment: Comment """ The effective Markdown content shown for this customer need. Returns the manually stored body when present, otherwise falls back to content extracted from the source attachment. Null if no content is available. """ content: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user recorded as the creator of this customer request. Null if no creator was recorded or the user was deleted. """ creator: User """ The customer organization this need belongs to. Null if the need has not yet been associated with a customer. """ customer: Customer """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The issue linked to this request. Null for requests linked directly to a project or another source. """ issue: Issue """ The original issue recorded when this request moved during an issue merge. Moving the request explicitly with customerNeedUpdate clears this reference. Null when no original issue is recorded or that issue was deleted. """ originalIssue: Issue """ Whether the customer need is important or not. 0 = Not important, 1 = Important. """ priority: Float! """ The project linked to this request, either directly or through its issue. Null if no project is associated. """ project: Project """ 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. """ projectAttachment: ProjectAttachment """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ 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. """ url: String } """ The result of archiving or restoring a resource. """ type CustomerNeedArchivePayload implements ArchivePayload { """ The resource after the operation, when returned. This can be null when the mutation does not return a resource, including after deletion. Check `success` for the operation's result. """ entity: CustomerNeed """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Certain properties of a customer need. """ type CustomerNeedChildWebhookPayload { """ The ID of the attachment this need is referencing. """ attachmentId: String """ The ID of the customer that this need is attached to. """ customerId: String """ The ID of the customer need. """ id: String! """ The ID of the issue this need is referencing. """ issueId: String """ The ID of the project this need is referencing. """ projectId: String } """ Filters a related collection of customer needs. Use some or every to test its members and length to test its size, for example length: { eq: 0 } for an empty collection. Direct property filters act as some only when no collection clause is supplied. """ input CustomerNeedCollectionFilter { """ All of these collection conditions must match. Each can test a different member of the collection. """ and: [CustomerNeedCollectionFilter!] """ Filters that the need's comment must satisfy. """ comment: NullableCommentFilter """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the need's customer must satisfy. """ customer: NullableCustomerFilter """ Filters that needs to be matched by all customer needs. """ every: CustomerNeedFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Conditions on the issue linked to the need. Use { null: true } for needs without an issue. """ issue: NullableIssueFilter """ The number of related objects, before applying some or every. Use { eq: 0 } to find an empty collection. """ length: NumberComparator """ At least one of these collection conditions must match. """ or: [CustomerNeedCollectionFilter!] """ The need’s importance: 0 for Not important or 1 for Important. """ priority: NumberComparator """ Conditions on the project linked to the need. Use { null: true } for needs without a project. """ project: NullableProjectFilter """ Filters that needs to be matched by some customer needs. """ some: CustomerNeedFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type CustomerNeedConnection { """ The page's results paired with their cursors. """ edges: [CustomerNeedEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [CustomerNeed!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ Input for creating a customer need from an existing issue attachment. If the attachment already has an archived need, it will be unarchived instead. """ input CustomerNeedCreateFromAttachmentInput { """ The UUID of the existing issue attachment to create a customer need from. """ attachmentId: String! } """ The issue and optional customer details for a new request. Provide issueId when using the public API. You can include Markdown feedback and a source attachment, and identify the customer by either its UUID or external-system ID. """ input CustomerNeedCreateInput { """ The UUID of an existing attachment to associate with this need as its source. """ attachmentId: String """ A URL to create an attachment from and associate with this customer need as its source. """ attachmentUrl: String """ The feedback in Markdown. """ body: String """ The UUID of an existing comment to associate with this need for additional context. """ commentId: String """ Create the need attributed to an external user with the provided name. This option is only available to OAuth applications creating needs in `actor=app` mode. """ createAsUser: String """ The time at which the customer need was created (e.g. if importing from another system). Must be a time in the past. If none is provided, the backend will generate the time as now. """ createdAt: DateTime """ The external system ID of the customer this need belongs to. Cannot be used together with customerId. """ customerExternalId: String """ The UUID of the customer this need belongs to. Cannot be used together with customerExternalId. """ customerId: String """ Avatar URL for the external user specified in `createAsUser`. Can only be used in conjunction with `createAsUser`. This option is only available to OAuth applications creating needs in `actor=app` mode. """ displayIconUrl: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The issue UUID or identifier, such as LIN-123. Required for public API calls. """ issueId: String """ Whether the customer need is important or not. 0 = Not important, 1 = Important. """ priority: Float } """ A result and its pagination cursor. """ type CustomerNeedEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: CustomerNeed! } """ Filters customer needs by priority or the linked customer, issue, project, or comment. Supplied conditions must match together; use and and or to combine nested filters. """ input CustomerNeedFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [CustomerNeedFilter!] """ Filters that the need's comment must satisfy. """ comment: NullableCommentFilter """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the need's customer must satisfy. """ customer: NullableCustomerFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Conditions on the issue linked to the need. Use { null: true } for needs without an issue. """ issue: NullableIssueFilter """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [CustomerNeedFilter!] """ The need’s importance: 0 for Not important or 1 for Important. """ priority: NumberComparator """ Conditions on the project linked to the need. Use { null: true } for needs without a project. """ project: NullableProjectFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ A notification related to a customer need (request), such as creation, resolution, or being marked as important. """ type CustomerNeedNotification implements Entity & Node & Notification { """ 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. """ actor: User """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The bot that caused the notification. """ botActor: ActorBot """ The category of the notification. """ category: NotificationCategory! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The customer need related to the notification. """ customerNeed: CustomerNeed! """ Related customer need. """ customerNeedId: String! """ The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent. """ emailedAt: DateTime """ 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. """ externalUserActor: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The time at which the user marked the notification as read. Null if the notification is unread. """ readAt: DateTime """ The issue related to the notification. """ relatedIssue: Issue """ The project related to the notification. """ relatedProject: Project """ 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. """ snoozedUntilAt: DateTime """ Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated. """ type: String! """ The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed. """ unsnoozedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The recipient user of this notification. """ user: User! } """ Return type for customer need mutations. """ type CustomerNeedPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The customer need entity that was created or updated by the mutation. """ need: CustomerNeed! """ Whether the operation was successful. """ success: Boolean! } """ Changes to an existing customer request. Omit fields to keep their current values. Moving the request to another issue also moves its source attachment, and applyPriorityToRelatedNeeds can update other requests from the same customer. """ input CustomerNeedUpdateInput { """ Whether to apply the supplied priority to other needs from the same customer on the same issue or project. This only has an effect when priority is also supplied. The mutation returns the additional changed needs in updatedRelatedNeeds. """ applyPriorityToRelatedNeeds: Boolean """ An HTTP or HTTPS URL to replace the request’s source attachment. Only manually added sources can be changed; omit this field for sources managed by an integration. For editable sources, null leaves the source unchanged; use clearAttachment to remove it. """ attachmentUrl: String """ The replacement feedback in Markdown. Null clears the manually supplied body; source attachment content may still be returned by content. """ body: String """ The external system ID of the customer to reassign this need to. Cannot be used together with customerId. """ customerExternalId: String """ The UUID of the customer to reassign this need to. Cannot be used together with customerExternalId. """ customerId: String """ Ignored. The mutation's id argument selects the customer need to update. """ id: String """ The issue to move this need to. Accepts a UUID or issue identifier (e.g., 'LIN-123'). The need's attachment will also be moved to the target issue. """ issueId: String """ Whether the customer need is important or not. 0 = Not important, 1 = Important. """ priority: Float } """ Return type for customer need update mutations, including any related needs that were also updated. """ type CustomerNeedUpdatePayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The customer need entity that was created or updated by the mutation. """ need: CustomerNeed! """ Whether the operation was successful. """ success: Boolean! """ Additional customer needs from the same customer on the same issue/project that were updated when applyPriorityToRelatedNeeds was set. """ updatedRelatedNeeds: [CustomerNeed!]! } """ Payload for a customer need webhook. """ type CustomerNeedWebhookPayload { """ The time at which the entity was archived. """ archivedAt: String """ The attachment this need is referencing. """ attachment: AttachmentWebhookPayload """ The ID of the attachment this need is referencing. """ attachmentId: String """ The body of the need in Markdown format. """ body: String """ The ID of the comment this need is referencing. """ commentId: String """ The time at which the entity was created. """ createdAt: String! """ The ID of the creator of the customer need. """ creatorId: String """ The customer that this need is attached to. """ customer: CustomerChildWebhookPayload """ The ID of the customer that this need is attached to. """ customerId: String """ The ID of the entity. """ id: String! """ The issue this need is referencing. """ issue: IssueChildWebhookPayload """ The ID of the issue this need is referencing. """ issueId: String """ The issue ID this customer need was originally created on. Will be undefined if the customer need hasn't been moved. """ originalIssueId: String """ The priority of the need. """ priority: Float! """ The project this need is referencing. """ project: ProjectChildWebhookPayload """ The ID of the project attachment this need is referencing. """ projectAttachmentId: String """ The ID of the project this need is referencing. """ projectId: String """ The time at which the entity was updated. """ updatedAt: String! } """ A notification related to a customer, such as being added as the customer owner. """ type CustomerNotification implements Entity & Node & Notification { """ 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. """ actor: User """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The bot that caused the notification. """ botActor: ActorBot """ The category of the notification. """ category: NotificationCategory! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The customer related to the notification. """ customer: Customer! """ Related customer. """ customerId: String! """ The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent. """ emailedAt: DateTime """ 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. """ externalUserActor: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The time at which the user marked the notification as read. Null if the notification is unread. """ readAt: DateTime """ 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. """ snoozedUntilAt: DateTime """ Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated. """ type: String! """ The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed. """ unsnoozedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The recipient user of this notification. """ user: User! } """ 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. """ type CustomerNotificationSubscription implements Entity & Node & NotificationSubscription { """ Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists. """ active: Boolean! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ 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. """ contextViewType: ContextViewType """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The custom view that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ customView: CustomView """ The customer subscribed to. """ customer: Customer! """ The cycle that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ cycle: Cycle """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Whether initiative update notifications also include updates from sub-initiatives. Applies only when initiative updates are enabled and the workspace supports sub-initiatives. """ includeSubInitiativeUpdates: Boolean! """ The initiative that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ initiative: Initiative """ The issue label that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ label: IssueLabel """ The notification event types that this subscription will deliver to the subscriber. """ notificationSubscriptionTypes: [String!]! """ The project that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ project: Project """ The user who will receive notifications from this subscription. """ subscriber: User! """ The team that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ team: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user that this notification subscription is scoped to, for user-specific view subscriptions. Null if the subscription targets a different entity type. """ user: User """ 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. """ userContextViewType: UserContextViewType } """ Return type for customer mutations. """ type CustomerPayload { """ The customer entity that was created or updated by the mutation. """ customer: Customer! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Issue customer revenue sorting options. """ input CustomerRevenueSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Issue customer sorting options. """ input CustomerSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Customer sorting options. """ input CustomerSortInput { """ Sort by approximate customer need count """ approximateNeedCount: ApproximateNeedCountSort """ Sort by customer creation date """ createdAt: CustomerCreatedAtSort """ Sort by name """ name: NameSort """ Sort by owner name """ owner: OwnerSort """ Sort by customer generated revenue """ revenue: RevenueSort """ Sort by customer size """ size: SizeSort """ Sort by customer status """ status: CustomerStatusSort """ Sort by customer tier """ tier: TierSort } """ A stage in your customer lifecycle, such as Trial, Active, or Churned. These statuses are defined for the workspace and assigned to customer records. The first status by position is the default for customers created without an explicit status. """ type CustomerStatus implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The color of the status indicator in the UI, as a HEX string (e.g., '#ff0000'). """ color: String! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ An optional description explaining what this status represents in the customer lifecycle. """ description: String """ The user-facing display name of the status shown in the UI. Defaults to the internal name if not explicitly set. """ displayName: String! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The internal name of the status. Used as the default display name if no displayName is explicitly set. """ name: String! """ The sort position of the status in the workspace's customer lifecycle flow. Lower values appear first. Collisions are automatically resolved by redistributing positions. """ position: Float! """ [Deprecated] The type of the customer status. Always returns null as statuses are no longer grouped by type. """ type: CustomerStatusType @deprecated(reason: "Customer statuses are no longer grouped by type.") """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ Certain properties of a customer status. """ type CustomerStatusChildWebhookPayload { """ The color of the customer status. """ color: String! """ The description of the customer status. """ description: String """ The display name of the customer status. """ displayName: String! """ The ID of the customer status. """ id: String! """ The name of the customer status. """ name: String! """ The type of the customer status. """ type: String @deprecated(reason: "Customer statuses are no longer grouped by type.") } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type CustomerStatusConnection { """ The page's results paired with their cursors. """ edges: [CustomerStatusEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [CustomerStatus!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The name and display details for a new customer lifecycle status. Supply at least one of name or displayName; when name is omitted, displayName is used as its name. Omit position to add the status at the end. """ input CustomerStatusCreateInput { """ The color of the status indicator in the UI, as a HEX string (e.g., '#ff0000'). """ color: String! """ An optional description explaining what this status represents. """ description: String """ The user-facing display name of the status. At least one of name or displayName must be provided. """ displayName: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The internal name of the status. At least one of name or displayName must be provided. """ name: String """ The sort position of the status in the workspace's customer lifecycle flow. If omitted or colliding, a position is automatically assigned at the end. """ position: Float } """ A result and its pagination cursor. """ type CustomerStatusEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: CustomerStatus! } """ Filters customer statuses by name, type, display position, color, or description. Supplied conditions must match together; use and and or to combine nested filters. """ input CustomerStatusFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [CustomerStatusFilter!] """ Comparator for the customer status color. """ color: StringComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Comparator for the customer status description. """ description: StringComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for the customer status name. """ name: StringComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [CustomerStatusFilter!] """ Comparator for the customer status position. """ position: NumberComparator """ Comparator for the customer status type. """ type: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Return type for customer status mutations. """ type CustomerStatusPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The customer status entity that was created or updated by the mutation. """ status: CustomerStatus! """ Whether the operation was successful. """ success: Boolean! } """ Customer status sorting options. """ input CustomerStatusSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ [DEPRECATED] A type of customer status. """ enum CustomerStatusType { active inactive } """ Changes to a customer lifecycle status. Omitted fields keep their current values. The updated name or display name must not conflict with another status. """ input CustomerStatusUpdateInput { """ The updated color of the status indicator in the UI, as a HEX string. """ color: String """ The updated description of the status. """ description: String """ The updated user-facing display name of the status. """ displayName: String """ The updated internal name of the status. """ name: String """ The updated sort position of the status in the workspace's customer lifecycle flow. """ position: Float } """ A workspace-defined customer segment, such as a service tier or account category. Assign tiers to customers to filter and prioritize their requests. Names identify the tiers, while position controls their display order. """ type CustomerTier implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The color of the tier indicator in the UI, as a HEX string (e.g., '#ff0000'). """ color: String! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ An optional description explaining what this tier represents and its intended use for customer segmentation. """ description: String """ The user-facing display name of the tier shown in the UI. Defaults to the internal name if not explicitly set. """ displayName: String! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The internal name of the tier. Must be unique within the workspace. Used as the default display name if no displayName is explicitly set. """ name: String! """ The sort position of the tier in the workspace's customer tier ordering. Lower values appear first. Collisions are automatically resolved by redistributing positions. """ position: Float! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ Certain properties of a customer tier. """ type CustomerTierChildWebhookPayload { """ The color of the customer tier. """ color: String! """ The description of the customer tier. """ description: String """ The display name of the customer tier. """ displayName: String! """ The ID of the customer tier. """ id: String! """ The name of the customer tier. """ name: String! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type CustomerTierConnection { """ The page's results paired with their cursors. """ edges: [CustomerTierEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [CustomerTier!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The name and display details for a customer tier. Supply at least one of name or displayName; when name is omitted, displayName is used as its name. Omit position to add the tier at the end. """ input CustomerTierCreateInput { """ The color of the tier indicator in the UI, as a HEX string (e.g., '#ff0000'). """ color: String! """ An optional description explaining what this tier represents. """ description: String """ The user-facing display name of the tier. At least one of name or displayName must be provided. """ displayName: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The internal name of the tier. Must be unique within the workspace. At least one of name or displayName must be provided. """ name: String """ The sort position of the tier in the workspace's customer tier ordering. If omitted or colliding, a position is automatically assigned at the end. """ position: Float } """ A result and its pagination cursor. """ type CustomerTierEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: CustomerTier! } """ Filters customer tiers by display name, position, color, or description. Supplied conditions must match together; use and and or to combine nested filters. """ input CustomerTierFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [CustomerTierFilter!] """ Comparator for the customer tier color. """ color: StringComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Comparator for the customer tier description. """ description: StringComparator """ Comparator for the customer tier display name. """ displayName: StringComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ True matches a missing relation; false requires a relation to be set. A direct null: true condition takes precedence over other property conditions in this filter. """ null: Boolean """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [CustomerTierFilter!] """ Comparator for the customer tier position. """ position: NumberComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Return type for customer tier mutations. """ type CustomerTierPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The customer tier entity that was created or updated by the mutation. """ tier: CustomerTier! } """ Changes to a customer tier. Omitted fields keep their current values. The updated name or display name must not conflict with another tier. """ input CustomerTierUpdateInput { """ The updated color of the tier indicator in the UI, as a HEX string. """ color: String """ The updated description of the tier. """ description: String """ The updated user-facing display name of the tier. """ displayName: String """ The updated internal name of the tier. """ name: String """ The updated sort position of the tier in the workspace's customer tier ordering. """ position: Float } """ Changes to an existing customer. Omit fields to keep their values; domains and externalIds replace their respective lists. For integration-managed customers, fields controlled by the integration are ignored, and a request with no editable fields fails. """ input CustomerUpdateInput { """ The replacement list of business email domains, such as acme.com. Use [] to remove all domains, or omit to keep them. Public email domains and domains used by another customer, including an archived customer, are not allowed. """ domains: [String!] """ The replacement list of external-system customer IDs. Use [] to remove them, or omit to keep them. IDs must be unique across the workspace; if mainSourceId is set, keep that ID in this list or change or clear mainSourceId in the same request. """ externalIds: [String!] """ The URL of the customer's logo image. """ logoUrl: String """ The primary external ID. Must remain in externalIds; null clears it. May also change the customer name to the source’s name. """ mainSourceId: String """ The updated name of the customer. """ name: String """ The customer owner’s user UUID. Null removes the owner; application accounts cannot own customers. """ ownerId: String """ Annual revenue in whole units of the workspace’s configured revenue currency. Null clears the value. """ revenue: Int """ The size of the customer organization (e.g., number of employees). """ size: Int """ The ID of the Slack channel to link to this customer. Set to null to unlink the current channel. """ slackChannelId: String """ The identifier of the customer status to set. """ statusId: String """ The customer tier UUID. Null removes the tier. """ tierId: String } """ Identifiers and account details for finding or creating a customer. Supply matching information through id, externalId, slackChannelId, or domains. If no match is found, name is required. Updates through this input can override integration-managed fields. """ input CustomerUpsertInput { """ Business email domains used to find the customer. For an existing match, this replaces the customer’s domain list; use [] to remove the domains. Public email domains and domains assigned to another customer are not allowed. """ domains: [String!] """ An external-system ID used to find the customer. Added to externalIds when creating a customer; does not add or replace externalIds on an existing match. """ externalId: String """ The customer UUID to match. If no customer matches the supplied identifiers, this becomes the new customer’s UUID; omit to generate one. """ id: String """ The URL of the customer's logo image. """ logoUrl: String """ The name of the customer. Required when creating a new customer. """ name: String """ The identifier of the user to assign as the owner of the customer. """ ownerId: String """ Annual revenue in whole units of the workspace’s configured revenue currency. Null clears the value. """ revenue: Int """ The size of the customer organization (e.g., number of employees). """ size: Int """ The ID of the Slack channel to link to this customer. """ slackChannelId: String """ The identifier of the customer status to set. """ statusId: String """ The identifier of the customer tier to assign. Cannot be used together with tierName. """ tierId: String """ The customer tier’s name or display name. An existing matching tier is reused; otherwise a tier is created. Use this when importing named tiers, or use tierId to select a known tier. The two fields cannot be combined. """ tierName: String } """ Payload for a customer webhook. """ type CustomerWebhookPayload { """ The approximate number of distinct requests associated with this customer, deduplicated per issue or project. This is a denormalized counter and may not reflect the exact count at all times. """ approximateNeedCount: Float! """ The time at which the entity was archived. """ archivedAt: String """ The time at which the entity was created. """ createdAt: String! """ The domains associated with this customer. """ domains: [String!]! """ The ids of the customers in external systems. """ externalIds: [String!]! """ The ID of the entity. """ id: String! """ The customer's logo URL. """ logoUrl: String """ The ID of the main source, when a customer has multiple sources. Must be one of externalIds. """ mainSourceId: String """ The name of the customer. """ name: String! """ The ID of the user who owns the customer. """ ownerId: String """ The annual revenue generated by the customer. """ revenue: Float """ The size of the customer. """ size: Float """ The ID of the Slack channel used to interact with the customer. """ slackChannelId: String """ The customer's unique URL slug. """ slugId: String! """ The customer status. """ status: CustomerStatusChildWebhookPayload """ The ID of the customer status. """ statusId: String """ The customer tier. """ tier: CustomerTierChildWebhookPayload """ The ID of the customer tier. """ tierId: String """ The time at which the entity was updated. """ updatedAt: String! """ The URL of the customer. """ url: String! } """ A scheduled period of work for a team. Issues can belong to one cycle at a time, and unfinished work can move into the next cycle when the current one closes. Use the history arrays to track scope and completion over time, and progress for the cycle’s current progress. """ type Cycle implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ Time the cycle was automatically archived. Null if it has not been auto-archived. """ autoArchivedAt: DateTime """ The time the cycle was closed, or null while it is upcoming or active. A cycle can close before its originally scheduled end, for example when the next cycle is started early. """ completedAt: DateTime """ Daily completed issue counts. Entries align with issueCountHistory. """ completedIssueCountHistory: [Float!]! """ Daily completed scope, weighted by the team’s estimation settings. Entries align with scopeHistory. """ completedScopeHistory: [Float!]! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Description of the cycle’s goals. Null if none is set. """ description: String """ Time the cycle ends. Completing a cycle early moves this time to its completion time. """ endsAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Daily started scope, weighted by the team’s estimation settings. Entries align with scopeHistory. """ inProgressScopeHistory: [Float!]! """ The parent team’s cycle that this cycle inherits. Null if this cycle is not inherited. """ inheritedFrom: Cycle """ 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. """ isActive: Boolean! """ Whether the cycle has not yet started. True if the cycle's start date is in the future. """ isFuture: Boolean! """ Whether this cycle is the next upcoming (not yet started) cycle for the team. """ isNext: Boolean! """ Whether the cycle's end date has passed. """ isPast: Boolean! """ Whether this cycle is the most recently completed cycle for the team. """ isPrevious: Boolean! """ Daily snapshots of the total number of issues in the cycle, starting with its first day. The corresponding positions in completedIssueCountHistory and the scope histories describe the same days. """ issueCountHistory: [Float!]! """ Issues that are currently assigned to this cycle. """ issues( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueConnection! """ The custom name of the cycle. If not set, the cycle is displayed using its number (e.g., "Cycle 5"). """ name: String """ Automatically assigned cycle number, unique within the team. """ number: Float! """ The cycle’s progress from 0 to 1. Completed work contributes fully and started work contributes 25%; triage, canceled, and duplicate issues are excluded. Uses estimates when their total is nonzero and otherwise uses issue counts. Returns 0 for no eligible work, and 0.999 instead of 1 when open issues with zero estimates remain. """ progress: Float! """ Daily snapshots of the cycle’s total scope, using the team’s estimation settings. This can change as work is added, removed, or re-estimated; it is not a fixed commitment captured at the start. """ scopeHistory: [Float!]! """ The time the cycle starts. Cycle scheduling uses the team’s time zone, so local start times can have different UTC offsets across daylight-saving changes. """ startsAt: DateTime! """ The team that owns the cycle. """ team: Team! """ Issues recorded as unfinished when this cycle closed. These are a snapshot of cycle membership at closure; their current status or cycle may have changed since then. """ uncompletedIssuesUponClose( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueConnection! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ The result of archiving or restoring a resource. """ type CycleArchivePayload implements ArchivePayload { """ The resource after the operation, when returned. This can be null when the mutation does not return a resource, including after deletion. Check `success` for the operation's result. """ entity: Cycle """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Certain properties of a cycle. """ type CycleChildWebhookPayload { """ The end date of the cycle. """ endsAt: String! """ The ID of the cycle. """ id: String! """ The name of the cycle. """ name: String """ The number of the cycle. """ number: Float! """ The start date of the cycle. """ startsAt: String! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type CycleConnection { """ The page's results paired with their cursors. """ edges: [CycleEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Cycle!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ Legacy input for cycleCreate, which is no longer supported. """ input CycleCreateInput { """ The completion time of the cycle. If null, the cycle hasn't been completed. """ completedAt: DateTime """ The description of the cycle. """ description: String """ The end time of the cycle. """ endsAt: DateTime! """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The custom name of the cycle. """ name: String """ The start time of the cycle. """ startsAt: DateTime! """ The team to associate the cycle with. """ teamId: String! } """ A result and its pagination cursor. """ type CycleEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Cycle! } """ Conditions used to select cycles. Supplied fields are combined with AND; use `or` to accept alternatives and `and` to group conditions. """ input CycleFilter { """ Conditions that the cycle must all match. These are combined with the other fields in this filter. """ and: [CycleFilter!] """ Conditions on the time the cycle was closed. This is distinct from its scheduled end time. """ completedAt: DateComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Conditions on the cycle’s end time, which can change when a cycle is completed early. """ endsAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for the inherited cycle ID. """ inheritedFromId: IDComparator """ Whether the current time falls within the cycle’s start and end times. Use team to restrict the result to one team’s schedule. """ isActive: BooleanComparator """ Whether the cycle’s start time is in the future. This can match several upcoming cycles; use isNext for only the next one per team. """ isFuture: BooleanComparator """ Whether the cycle has completed and its next numbered cycle has not started yet. This identifies the completed cycle during the team’s gap between cycles. """ isInCooldown: BooleanComparator """ Whether this is the team’s next upcoming, uncompleted and unarchived cycle. Combine with team to select one team’s next cycle. """ isNext: BooleanComparator """ Whether the cycle’s end time has passed. This is independent of whether its completion step has run. """ isPast: BooleanComparator """ Whether this is the team’s most recently completed, unarchived cycle. A past end time alone does not make a cycle the previous one. """ isPrevious: BooleanComparator """ Filters that the cycles issues must satisfy. """ issues: IssueCollectionFilter """ Comparator for the cycle name. """ name: StringComparator """ Conditions on the positive cycle number within a team. Combine with team when you need a specific cycle, since different teams can have the same number. """ number: NumberComparator """ Alternative conditions; the cycle must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [CycleFilter!] """ Conditions on the cycle’s scheduled start time. """ startsAt: DateComparator """ Filters that the cycles team must satisfy. """ team: TeamFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ A notification subscription scoped to a specific cycle. The subscriber receives notifications for events related to issues in this cycle. """ type CycleNotificationSubscription implements Entity & Node & NotificationSubscription { """ Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists. """ active: Boolean! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ 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. """ contextViewType: ContextViewType """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The custom view that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ customView: CustomView """ The customer that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ customer: Customer """ The cycle subscribed to. """ cycle: Cycle! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Whether initiative update notifications also include updates from sub-initiatives. Applies only when initiative updates are enabled and the workspace supports sub-initiatives. """ includeSubInitiativeUpdates: Boolean! """ The initiative that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ initiative: Initiative """ The issue label that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ label: IssueLabel """ The notification event types that this subscription will deliver to the subscriber. """ notificationSubscriptionTypes: [String!]! """ The project that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ project: Project """ The user who will receive notifications from this subscription. """ subscriber: User! """ The team that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ team: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user that this notification subscription is scoped to, for user-specific view subscriptions. Null if the subscription targets a different entity type. """ user: User """ 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. """ userContextViewType: UserContextViewType } """ The payload returned by cycle mutations. """ type CyclePayload { """ The cycle that was created or updated. """ cycle: Cycle """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ When an issue was added relative to its cycle. """ enum CyclePeriod { """ Added at or after the cycle ended. """ after """ Added before the cycle or during its first 24 hours. """ before """ Added after the first 24 hours and before the cycle ended. """ during } """ Conditions on when an issue joined its cycle relative to the cycle’s schedule. This uses the recorded cycle assignment time, not the issue’s creation time. """ input CyclePeriodComparator { """ Matches the given value. """ eq: CyclePeriod """ Matches any value in the list. An empty list matches nothing. """ in: [CyclePeriod!] """ Excludes the given value. """ neq: CyclePeriod """ Excludes every value in the list, and includes null. An empty list adds no restriction. """ nin: [CyclePeriod!] """ Set to true to match resources with no value, or false to require a value. For example, `{ null: true }` finds unset values; `{ eq: null }` is not a substitute. """ null: Boolean } """ Shift an upcoming cycle and all later cycles in its team by the same number of days. """ input CycleShiftAllInput { """ Whole days to shift, from -365 to 365. Negative values move cycles earlier; positive values move them later. """ daysToShift: Float! """ UUID of the first cycle to shift. It must not have started or completed. """ id: String! } """ Issue cycle sorting options. """ input CycleSort { """ When set to true, cycles will be ordered with a custom order. Current cycle comes first, followed by upcoming cycles in ASC order, followed by previous cycles in DESC order. """ currentCycleFirst: Boolean = false """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ The changes to a cycle’s name, description, or schedule. Omit fields you want to keep. Scheduling uses the team’s time zone and may shorten adjacent cycles to avoid overlaps; inherited cycles must be changed on their parent team. """ input CycleUpdateInput { """ The recorded completion time. Omit to keep the current value, or pass null to clear the completion marker. Changing this field does not itself move unfinished issues to another cycle. """ completedAt: DateTime """ The cycle’s goals or other context. Pass null to clear the description, or omit to keep it. """ description: String """ The new end time. It cannot be changed for a completed cycle or moved before today in the team’s time zone. Extending it into the next cycle moves that cycle’s start, but must leave the next cycle at least one day long. """ endsAt: DateTime """ The custom cycle name. Pass null to remove it and use the cycle number for display, or omit to keep the current name. """ name: String """ The new start time. It cannot be changed for an active or completed cycle or moved before today in the team’s time zone. Moving it into the previous cycle shortens that cycle; the new start must be more than one day after the previous cycle’s start. """ startsAt: DateTime } """ Payload for a cycle webhook. """ type CycleWebhookPayload { """ The time at which the entity was archived. """ archivedAt: String """ The time at which the cycle was automatically archived by the auto pruning process. """ autoArchivedAt: String """ The completion time of the cycle. If null, the cycle hasn't been completed. """ completedAt: String """ The number of completed issues in the cycle after each day. """ completedIssueCountHistory: [Float!]! """ The number of completed estimation points after each day. """ completedScopeHistory: [Float!]! """ The time at which the entity was created. """ createdAt: String! """ The cycle's description. """ description: String """ The end date of the cycle. """ endsAt: String! """ The ID of the entity. """ id: String! """ The number of in progress estimation points after each day. """ inProgressScopeHistory: [Float!]! """ The ID of the cycle inherited from. """ inheritedFromId: String """ The total number of issues in the cycle after each day. """ issueCountHistory: [Float!]! """ The name of the cycle. """ name: String """ The number of the cycle. """ number: Float! """ The total number of estimation points after each day. """ scopeHistory: [Float!]! """ The start date of the cycle. """ startsAt: String! """ The team ID of the cycle. """ teamId: String! """ The IDs of the uncompleted issues upon close. """ uncompletedIssuesUponCloseIds: [String!]! """ The time at which the entity was updated. """ updatedAt: String! } """ Union type for all possible webhook entity data payloads """ union DataWebhookPayload = | AgentActivityWebhookPayload | AgentSessionWebhookPayload | AttachmentWebhookPayload | AuditEntryWebhookPayload | CommentWebhookPayload | CustomerNeedWebhookPayload | CustomerWebhookPayload | CycleWebhookPayload | DocumentWebhookPayload | InitiativeUpdateWebhookPayload | InitiativeWebhookPayload | IssueLabelWebhookPayload | IssueWebhookPayload | ProjectLabelWebhookPayload | ProjectUpdateWebhookPayload | ProjectWebhookPayload | ReactionWebhookPayload | ReleaseNoteWebhookPayload | ReleaseWebhookPayload | UserWebhookPayload """ Compares timestamps at millisecond precision. Accepts ISO 8601 timestamps or durations relative to when the filter runs; `{ gte: "-P7D" }` includes times from seven days ago onward. Combine `gte` and `lt` for a time window. A YYYY-MM-DD value means midnight UTC, so equality with a date does not match the whole day. """ input DateComparator { """ Matches the given value. """ eq: DateTimeOrDuration """ Matches values greater than the given value. """ gt: DateTimeOrDuration """ Matches values greater than or equal to the given value. """ gte: DateTimeOrDuration """ Values to include in the match. For scalar comparisons, matches any listed value. An empty list matches nothing. """ in: [DateTimeOrDuration!] """ Matches values less than the given value. """ lt: DateTimeOrDuration """ Matches values less than or equal to the given value. """ lte: DateTimeOrDuration """ Excludes the given value. """ neq: DateTimeOrDuration """ Values to exclude from the match. For scalar comparisons, an empty list adds no restriction. """ nin: [DateTimeOrDuration!] } """ By which resolution is a date defined. """ enum DateResolutionType { halfYear month quarter year } """ An ISO 8601 timestamp string, returned in UTC, such as `2026-11-06T14:30:00.000Z`. Include `Z` or a timezone offset when supplying a timestamp. Inputs also accept ISO 8601 durations relative to the request time: `-P7D` is seven days ago and `PT2H` is two hours ahead. """ scalar DateTime """ An ISO 8601 timestamp, a YYYY-MM-DD date, or a relative ISO 8601 duration such as `-P7D`. Durations are resolved when the filter runs, so saved filters keep their relative meaning. A date without a time means midnight UTC; use a range to match an entire day. """ scalar DateTimeOrDuration """ The day of the week. """ enum Day { Friday Monday Saturday Sunday Thursday Tuesday Wednesday } """ Issue delegate sorting options. """ input DelegateSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Input for confirming workspace deletion with a verification code. """ input DeleteOrganizationInput { """ The deletion code to confirm operation. """ deletionCode: String! } """ The result of a delete mutation. The mutation determines whether the resource is deleted immediately or scheduled for deletion. """ type DeletePayload implements ArchivePayload { """ The ID of the resource targeted by the delete operation. Use this to remove the resource from your local state after a successful mutation. """ entityId: String! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ A package registry a dependency file's packages can be looked up in. """ enum DependencyEcosystem { npm } """ An exact published package version to look up in a public registry. Provide the registry package name and version, including the scope in an npm name such as @scope/package. Version ranges and tags are not resolved to a version. """ input DependencyPackageInput { """ The registry the package comes from. """ ecosystem: DependencyEcosystem! """ Package name. """ name: String! """ Package version. """ version: String! } """ Registry metadata for one dependency package version. """ type DependencyPackageMetadataResult { """ SPDX license identifier. Null if the registry doesn't report one. """ license: String """ Package name, echoed back from the request. """ name: String! """ When this version was published. Null if the registry doesn't report it. """ publishedAt: DateTime """ Package version, echoed back from the request. """ version: String! """ Downloads for the package across all versions during the registry's last-week interval. Null when unavailable, including failed lookups or skipped uncached lookups for batches containing more than 20 scoped npm package names. Cached counts can be up to a day old. """ weeklyDownloads: Float } """ A document for longer-form context, such as a project brief or an issue’s supporting notes. Its metadata identifies the owner and containing resource, while content returns the body as Markdown. Access depends on both its location and any document sharing restrictions. """ type Document implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The hex color of the document icon. Null if no custom color has been set. """ color: String """ Comments on the document’s content, including inline discussion threads. Use each comment’s parent, children, and resolution fields to present the discussion. """ comments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned comments. """ filter: CommentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CommentConnection! """ The document’s current body as Markdown, or null if no content is stored. Metadata such as title and owner is returned separately on the document. """ content: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the document. Null if the creator's account has been deleted. """ creator: User """ The UUID of the document’s separate content record. Use this ID for document-content history or comments attached to the content, rather than the document’s own UUID. Null if no content record exists. """ documentContentId: String """ The time the document was hidden from its default resource view. Null when it is not hidden. Hiding is separate from trashing or archiving and does not remove the document’s content. """ hiddenAt: DateTime """ The icon of the document, either a decorative icon type or an emoji string. Null if no icon has been set. """ icon: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The initiative that the document is associated with. Null if the document belongs to a different parent entity type. """ initiative: Initiative """ The issue that the document is associated with. Null if the document belongs to a different parent entity type. """ issue: Issue """ The last template recorded as applied to this document. Later edits to the template do not replace the document’s content. Null if no template is recorded or it was deleted. """ lastAppliedTemplate: Template """ The user responsible for the document. Assigning an owner also subscribes them to updates. Null if no owner is assigned or the account was deleted; ownership is distinct from who last edited the document. """ owner: User """ The project that the document is associated with. Null if the document belongs to a different parent entity type. """ project: Project """ The release that the document is associated with. Null if the document belongs to a different parent entity type. """ release: Release """ Unique short identifier used in the document’s URL. """ slugId: String! """ The document’s position among resources in its container, with lower values first. Documents and external links can share this ordering, so use their sortOrder values together when reproducing a resource list. """ sortOrder: Float! """ Users who are subscribed to the document. """ subscribers( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned subscribers. """ filter: UserFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Include disabled and suspended accounts. Defaults to false. """ includeDisabled: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): UserConnection! """ The title of the document. An empty string indicates an untitled document. """ title: String! """ True if the document is in the trash; null otherwise. Trashed documents are archived and can be restored. """ trashed: Boolean """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user who last updated the document. Null if the user's account has been deleted. """ updatedBy: User """ The canonical url for the document. """ url: String! """ [Internal] What people who can open a document in a public team, or in a project with a public team, but are not members of its teams can do with it: edit, comment, or view. Never above general access. Null means the same as general access, and is always null on a personal document. """ workspaceAccess: DocumentShareRole } """ The result of archiving or restoring a resource. """ type DocumentArchivePayload implements ArchivePayload { """ The resource after the operation, when returned. This can be null when the mutation does not return a resource, including after deletion. Check `success` for the operation's result. """ entity: Document """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Certain properties of a document. """ type DocumentChildWebhookPayload { """ The ID of the document. """ id: String! """ The initiative this document belongs to. """ initiative: InitiativeChildWebhookPayload """ The ID of the initiative this document belongs to. """ initiativeId: String """ The project this document belongs to. """ project: ProjectChildWebhookPayload """ The ID of the project this document belongs to. """ projectId: String """ The title of the document. """ title: String! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type DocumentConnection { """ The page's results paired with their cursors. """ edges: [DocumentEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Document!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The rich-text content of a resource, such as an issue description or document body, stored separately from that resource’s metadata. Read content for Markdown that your integration can display or process. contentState is the serialized collaborative-editing state and is not Markdown. """ type DocumentContent implements Node { """ The AI prompt rules that the content is associated with. Null if the content belongs to a different parent entity type. """ aiPromptRules: AiPromptRules """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The current body converted to Markdown, or null if no content is stored. This is a rendered representation of the rich text, so it may not preserve the exact Markdown originally submitted. """ content: String """ The complete collaborative document state as a base64-encoded Yjs update. Decode it with a compatible Yjs document when working with collaborative content; use content for a Markdown representation. """ contentState: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The document that the content is associated with. Null if the content belongs to a different parent entity type. """ document: Document """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The initiative that the content is associated with. Null if the content belongs to a different parent entity type. """ initiative: Initiative """ The issue that the content is associated with. Null if the content belongs to a different parent entity type. """ issue: Issue """ The project that the content is associated with. Null if the content belongs to a different parent entity type. """ project: Project """ The project milestone that the content is associated with. Null if the content belongs to a different parent entity type. """ projectMilestone: ProjectMilestone """ 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. """ restoredAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The welcome message that the content is associated with. Null if the content belongs to a different parent entity type. """ welcomeMessage: WelcomeMessage } """ Certain properties of a document content. """ type DocumentContentChildWebhookPayload { """ The document this document content belongs to. """ document: DocumentChildWebhookPayload """ The project this document belongs to. """ project: ProjectChildWebhookPayload } """ A user’s unpublished changes to a DocumentContent record. Each user can have one active draft for the same content, and the live body stays unchanged until the draft is applied. Use documentContentId to associate the draft with the resource being edited. """ type DocumentContentDraft implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The draft’s full content as a base64-encoded Yjs update. This is the unpublished version, not a Markdown string or a list of changed lines. """ contentState: String! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The document content that this draft is a revision of. """ documentContent: DocumentContent! """ The identifier of the document content that this draft is a revision of. """ documentContentId: String! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user who created or owns this draft. """ user: User! """ The identifier of the user who owns this draft. """ userId: String! } """ A saved version of rich-text content, with its capture time and contributors. """ type DocumentContentHistory implements Node { """ UUIDs of users whose edits are included in this version. """ actorIds: [String!]! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ Time of the content state captured by this version. Can precede createdAt, when the history entry was saved. """ contentDataSnapshotAt: DateTime! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The content whose version was saved. """ documentContent: DocumentContent! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ Saved-version metadata for one DocumentContent record, ordered newest first. An empty history means no accessible saved versions were found. """ type DocumentContentHistoryPayload { """ The document content history entries. """ history: [DocumentContentHistoryType!]! """ Whether the operation was successful. """ success: Boolean! } """ Metadata for a saved version of rich-text content. The capture time identifies the content state, while actorIds identifies users whose edits contributed to it. This public type does not include the historical body. """ type DocumentContentHistoryType { """ UUIDs of users whose edits are included in this version. """ actorIds: [String!] """ The time of the content state captured in this version. It can precede createdAt because saving a new edit may first record the previously stored state. """ contentDataSnapshotAt: DateTime! """ Time the history entry was saved. """ createdAt: DateTime! """ The identifier of the document content that this history entry snapshots. """ documentContentId: String! """ The unique identifier of the document content history entry. """ id: String! } """ Unpublished changes to rich-text content contributed by automations. The live body stays unchanged until the revision is applied. The base and revision states let a compatible editor compare the proposal with the live content it was based on. """ type DocumentContentRevision implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The live document content state this revision was last refreshed from, as a base64-encoded Yjs state update. """ baseContentState: String! """ A hash of the current base and revision content. It identifies the content summarized by this revision when it matches summaryContentHash; treat the hash as an opaque value. """ contentHash: String """ Unpublished content as a base64-encoded Yjs state update. """ contentState: String! """ UUIDs of the workflows that contributed edits to this revision. """ contributorWorkflowDefinitionIds: [String!]! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The document content that this revision is based on. """ documentContent: DocumentContent! """ The identifier of the document content that this revision is based on. """ documentContentId: String! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ A short description of the proposed changes. Compare summaryContentHash with contentHash before displaying it as current; the summary can lag behind edits to the revision. """ summary: String """ Content hash used to generate summary. Differs from contentHash while the summary is out of date. """ summaryContentHash: String """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ The metadata and optional Markdown body for a new document. Choose exactly one container: a project, issue, or release. The document’s UUID identifies its metadata, while a separate DocumentContent record holds its body. """ input DocumentCreateInput { """ Icon color as a hexadecimal CSS color, such as #5E6AD2. """ color: String """ The initial body in Markdown. Omit it to create the document without a body; Linear creates a content record when content is added. """ content: String """ Emoji or decorative icon identifier for the document. """ icon: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ UUID or identifier of the containing issue, such as ENG-123. Cannot be combined with another parent resource. """ issueId: String """ UUID of the template to record as last applied. Does not apply the template’s content. """ lastAppliedTemplateId: String """ The UUID of an active, non-app user who can access the document. Defaults to the acting user for human-authored requests and to no owner for app-authored requests. Pass null to create it without an owner; assigning an owner also subscribes them. """ ownerId: String """ UUID or identifier of the containing project, such as P-LIN-123. Cannot be combined with another parent resource. """ projectId: String """ UUID of the containing release. Cannot be combined with another parent resource. """ releaseId: String """ The position among the container’s resources, with lower values first. Omit it to place the document last. Positions are shared with external links where the container supports them, and collisions may be adjusted. """ sortOrder: Float """ The title of the document. """ title: String! } """ Document creation date sorting options. """ input DocumentCreatedAtSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Document creator sorting options. """ input DocumentCreatorSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A result and its pagination cursor. """ type DocumentEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Document! } """ Conditions used to select documents. Supplied fields are combined with AND; use `or` to accept alternatives and `and` to group conditions. """ input DocumentFilter { """ Conditions that the document must all match. These are combined with the other fields in this filter. """ and: [DocumentFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Conditions on the user who created the document, independent of its current owner. """ creator: UserFilter """ Conditions on the cycle that contains the document. """ cycle: CycleFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Conditions on the initiative that contains the document. """ initiative: InitiativeFilter """ Conditions on the issue that contains the document. This selects attached documents, not the issue’s own description. """ issue: IssueFilter """ Alternative conditions; the document must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [DocumentFilter!] """ Conditions on the document’s owner. Use null: true for documents without an owner; ownership is separate from the creator and most recent editor. """ owner: NullableUserFilter """ Filters that the document's parent document must satisfy. Use `null: true` for documents that are not sub-documents. """ parentDocument: NullableDocumentFilter """ Filters that the user owning the personal space of a personal document must satisfy. Use `null: false` for personal documents. """ personalUser: NullableUserFilter """ Conditions on the project that contains the document. This selects documents directly associated with a project, not documents attached to that project’s issues. """ project: ProjectFilter """ Conditions on the release that contains the document. """ release: ReleaseFilter """ Comparator for the document's searchable content. """ searchableContent: ContentComparator """ Conditions on the document’s short URL identifier. This differs from its UUID and title. """ slugId: StringComparator """ Conditions on the team directly associated with the document. Use null: true when no team is set on the document. """ team: NullableTeamFilter """ Conditions on the document title. This does not search the document’s body. """ title: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ A notification related to a document, such as comments, mentions, content changes, or document lifecycle events. """ type DocumentNotification implements Entity & Node & Notification { """ 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. """ actor: User """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The bot that caused the notification. """ botActor: ActorBot """ The category of the notification. """ category: NotificationCategory! """ Related comment ID. Null if the notification is not related to a comment. """ commentId: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Related document ID. """ documentId: String! """ The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent. """ emailedAt: DateTime """ 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. """ externalUserActor: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Related parent comment ID. Null if the notification is not related to a comment. """ parentCommentId: String """ Name of the reaction emoji related to the notification. """ reactionEmoji: String """ The time at which the user marked the notification as read. Null if the notification is unread. """ readAt: DateTime """ 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. """ snoozedUntilAt: DateTime """ Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated. """ type: String! """ The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed. """ unsnoozedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The recipient user of this notification. """ user: User! } """ The result of a document mutation. """ type DocumentPayload { """ The document that was created or updated. """ document: Document! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Document project sorting options. """ input DocumentProjectSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A page of document search results. Read nodes for the matched documents and pageInfo to continue paging. totalCount is the size of the limited candidate set, not an exact workspace-wide match count. """ type DocumentSearchPayload { """ Serialized archived documents on this page and their archived projects, for Linear’s client. For normal API reads, select the document fields you need from nodes instead. """ archivePayload: ArchiveResponse! """ The page's results paired with their cursors. """ edges: [DocumentSearchResultEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [DocumentSearchResult!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! """ Number of candidates retrieved before filtering and pagination. Search caps candidates, so this is not an exact count of all matching documents. """ totalCount: Float! } """ A document returned by search, with the same fields as Document plus search metadata. The meaning of metadata.score depends on the query’s ordering. """ type DocumentSearchResult implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The hex color of the document icon. Null if no custom color has been set. """ color: String """ Comments on the document’s content, including inline discussion threads. Use each comment’s parent, children, and resolution fields to present the discussion. """ comments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned comments. """ filter: CommentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CommentConnection! """ The document’s current body as Markdown, or null if no content is stored. Metadata such as title and owner is returned separately on the document. """ content: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the document. Null if the creator's account has been deleted. """ creator: User """ The UUID of the document’s separate content record. Use this ID for document-content history or comments attached to the content, rather than the document’s own UUID. Null if no content record exists. """ documentContentId: String """ The time the document was hidden from its default resource view. Null when it is not hidden. Hiding is separate from trashing or archiving and does not remove the document’s content. """ hiddenAt: DateTime """ The icon of the document, either a decorative icon type or an emoji string. Null if no icon has been set. """ icon: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The initiative that the document is associated with. Null if the document belongs to a different parent entity type. """ initiative: Initiative """ The issue that the document is associated with. Null if the document belongs to a different parent entity type. """ issue: Issue """ The last template recorded as applied to this document. Later edits to the template do not replace the document’s content. Null if no template is recorded or it was deleted. """ lastAppliedTemplate: Template """ score reflects relevance by default, or can contain timestamp milliseconds when orderBy selects createdAt or updatedAt. Compare scores only within the same query and ordering. context is an empty object retained for compatibility. """ metadata: JSONObject! """ The user responsible for the document. Assigning an owner also subscribes them to updates. Null if no owner is assigned or the account was deleted; ownership is distinct from who last edited the document. """ owner: User """ The project that the document is associated with. Null if the document belongs to a different parent entity type. """ project: Project """ The release that the document is associated with. Null if the document belongs to a different parent entity type. """ release: Release """ Unique short identifier used in the document’s URL. """ slugId: String! """ The document’s position among resources in its container, with lower values first. Documents and external links can share this ordering, so use their sortOrder values together when reproducing a resource list. """ sortOrder: Float! """ Users who are subscribed to the document. """ subscribers( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned subscribers. """ filter: UserFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Include disabled and suspended accounts. Defaults to false. """ includeDisabled: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): UserConnection! """ The title of the document. An empty string indicates an untitled document. """ title: String! """ True if the document is in the trash; null otherwise. Trashed documents are archived and can be restored. """ trashed: Boolean """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user who last updated the document. Null if the user's account has been deleted. """ updatedBy: User """ The canonical url for the document. """ url: String! """ [Internal] What people who can open a document in a public team, or in a project with a public team, but are not members of its teams can do with it: edit, comment, or view. Never above general access. Null means the same as general access, and is always null on a personal document. """ workspaceAccess: DocumentShareRole } """ A result and its pagination cursor. """ type DocumentSearchResultEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: DocumentSearchResult! } """ What a user can do with a document: edit, comment, or view. """ enum DocumentShareRole { """ The user can read and comment on the document but not edit it. """ comment """ The user can read, edit, and comment on the document. """ edit """ The user can read the document but not edit or comment on it. """ view } """ Document sorting options. """ input DocumentSortInput { """ Sort by document creation date. """ createdAt: DocumentCreatedAtSort """ Sort by the document's creator (author). """ creator: DocumentCreatorSort """ Sort by the document's parent project name. """ project: DocumentProjectSort """ Sort by document title. """ title: DocumentTitleSort """ Sort by document last-updated date. """ updatedAt: DocumentUpdatedAtSort } """ Document title sorting options. """ input DocumentTitleSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ The metadata or Markdown content to change on a document. Omitted fields keep their values. Supplying a destination project, issue, or release moves the document out of its current container and can change who can access it. """ input DocumentUpdateInput { """ Icon color as a hexadecimal CSS color. Null clears the color. """ color: String """ The replacement body in Markdown. A nonempty value replaces the whole body; omitting it, passing null, or passing an empty string leaves the current body unchanged. """ content: String """ The time to record for hiding the document from its default resource view. Pass null to show it again, or omit the field to keep its current visibility. This does not trash the document. """ hiddenAt: DateTime """ Emoji or decorative icon identifier. Null clears the icon. """ icon: String """ UUID or identifier of the destination issue, such as ENG-123. Moves the document out of its previous container. Omitted or null values do not move it. """ issueId: String """ UUID of the template to record as last applied. Does not apply the template’s content. Pass null to clear the recorded template, or omit to keep it. """ lastAppliedTemplateId: String """ The UUID of an active, non-app user who can access the document. Assigning an owner also subscribes them. Pass null to clear ownership where the document’s access settings allow it; personal documents keep their owner. """ ownerId: String """ UUID or identifier of the destination project, such as P-LIN-123. Moves the document out of its previous container. Omitted or null values do not move it. """ projectId: String """ UUID of the destination release. Moves the document out of its previous container. Omitted or null values do not move it. """ releaseId: String """ Position among resources in the containing resource’s list. Lower values appear first. """ sortOrder: Float """ The title of the document. """ title: String """ The trash marker for an already archived document. Set true to mark it as trashed, or null to remove that marker while keeping it archived. Use documentDelete to trash an active document and documentUnarchive to restore it. """ trashed: Boolean } """ Document update date sorting options. """ input DocumentUpdatedAtSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Payload for a document webhook. """ type DocumentWebhookPayload { """ The time at which the entity was archived. """ archivedAt: String """ The color of the document. """ color: String """ The content of the document. """ content: String """ The time at which the entity was created. """ createdAt: String! """ The ID of the user who created the document. """ creatorId: String """ The description of the document. """ description: String """ The time at which the document was hidden. """ hiddenAt: String """ The icon of the document. """ icon: String """ The ID of the entity. """ id: String! """ The ID of the initiative this document belongs to. """ initiativeId: String """ The ID of the last template that was applied to this document. """ lastAppliedTemplateId: String """ The ID of the project this document belongs to. """ projectId: String """ The ID of the resource folder this document belongs to. """ resourceFolderId: String """ The document's unique URL slug. """ slugId: String! """ The order of the item in the resources list. """ sortOrder: Float! """ The IDs of the users who are subscribed to this document. """ subscriberIds: [String!] """ The title of the document. """ title: String! """ A flag that indicates whether the document is in the trash bin. """ trashed: Boolean """ The time at which the entity was updated. """ updatedAt: String! """ The ID of the user who last updated the document. """ updatedById: String } """ Unpublished content owned by a user and linked to one parent. Drafts are private to their owner and are removed when the corresponding content is published. """ type Draft implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The draft's rich-text content as a JSON-encoded ProseMirror document. Parse the returned string to read its document nodes and formatting; it is not rendered Markdown or HTML. """ bodyData: JSON! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Always null. Drafts cannot belong to a customer need. """ customerNeed: CustomerNeed @deprecated(reason: "Drafts for customer needs were never supported. This field is always null.") """ Additional properties for the draft, such as generation metadata for AI-generated drafts, health status for project updates, or post titles. """ data: JSONObject """ The generated content, generation time, and generation count. Null when no generation metadata is stored. """ generationMetadata: DraftGenerationMetadata """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The initiative for which this is a draft comment or initiative update. Null if the draft belongs to a different parent entity type. """ initiative: Initiative """ The initiative update for which this is a draft comment. Null if the draft belongs to a different parent entity type. """ initiativeUpdate: InitiativeUpdate """ Whether the draft was autogenerated for the user. """ isAutogenerated: Boolean! @deprecated(reason: "Use 'generationMetadata' instead") """ The issue for which this is a draft comment. Null if the draft belongs to a different parent entity type. """ issue: Issue """ 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. """ parentComment: Comment """ The project for which this is a draft comment or project update. Null if the draft belongs to a different parent entity type. """ project: Project """ The project update for which this is a draft comment. Null if the draft belongs to a different parent entity type. """ projectUpdate: ProjectUpdate """ The team for which this is a draft post. Null if the draft belongs to a different parent entity type. """ team: Team """ The health selected for a project or initiative update draft. Null for other draft types or when no health is set. """ updateHealth: DraftUpdateHealthType """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user who created the draft. """ user: User! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type DraftConnection { """ The page's results paired with their cursors. """ edges: [DraftEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Draft!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A result and its pagination cursor. """ type DraftEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Draft! } """ Metadata about AI-generated draft content. """ type DraftGenerationMetadata { """ The time at which the draft content was generated. """ generatedAt: DateTime! """ The generated text content as a ProseMirror document. """ generatedContent: JSONObject! """ The number of times the draft content has been generated. """ generationCount: Int! } """ The health status carried by a project update or initiative update draft. """ enum DraftUpdateHealthType { atRisk offTrack onTrack } """ Issue due date sorting options. """ input DueDateSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ An elapsed duration, returned as an ISO 8601 duration string. Inputs accept duration strings such as `P1D` for one day or `PT2H` for two hours, or numbers in milliseconds. For example, `7200000` represents two hours. """ scalar Duration """ An address that routes incoming email into Linear issues. Team addresses use a team directly; template addresses use an issue template; Asks addresses add a request workflow with replies and optional automatic messages. Use emailAddress when configuring email forwarding or sending requests. address is only the routing token, and forwardingEmailAddress records the customer-facing address rather than configuring your mail provider. """ type EmailIntakeAddress implements Node { """ The unique routing token within the intake address. Use emailAddress for the full address to send email to. """ address: String! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the intake address. Null if the creator is unavailable. """ creator: User """ Whether issues created from emails sent to this address are automatically converted into customer requests, linking the sender as a customer contact. """ customerRequestsEnabled: Boolean! """ The full email address, including the domain, to which incoming emails can be sent. """ emailAddress: String! """ Whether the email address is enabled. """ enabled: Boolean! """ The address your requesters use, such as support@example.com, before your mail provider forwards messages to emailAddress. It can also provide the custom sending domain for Asks replies. Configure the actual forwarding rule with your mail provider. Null means no customer-facing forwarding address is recorded. """ forwardingEmailAddress: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Custom message sent when the issue is canceled. Null uses the default reply. """ issueCanceledAutoReply: String """ Whether to email the requester when their issue is canceled. """ issueCanceledAutoReplyEnabled: Boolean! """ Custom message sent when the issue is completed. Null uses the default reply. """ issueCompletedAutoReply: String """ Whether to email the requester when their issue is completed. """ issueCompletedAutoReplyEnabled: Boolean! """ Custom message sent when a request creates an issue. Null uses the default reply. """ issueCreatedAutoReply: String """ Whether to email an acknowledgment when a request creates an issue. """ issueCreatedAutoReplyEnabled: Boolean! """ The time an incoming email was last processed successfully. Null if none has been processed. """ lastUsedAt: DateTime """ The workspace that the email address is associated with. """ organization: Organization! """ Whether to reopen completed or canceled issues when a substantive email reply is received. """ reopenOnReply: Boolean! """ Whether replies to Asks requests can be sent by email. """ repliesEnabled: Boolean! """ The sender name for outgoing Asks emails. Null if no custom name is set. """ senderName: String """ The custom sending domain for outgoing Asks email, including the DNS records needed to verify it. Read canSendFromCustomDomain to determine whether verification is complete. Null means no custom sending domain is configured. """ sesDomainIdentity: SesDomainIdentity """ The team that receives incoming requests directly. Null when the destination comes from a template or Asks web settings. """ team: Team """ The issue template used for incoming requests. Null when this address routes directly to a team. """ template: Template """ The type of the email address. """ type: EmailIntakeAddressType! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ Whether the commenter's name is included in the email replies. """ useUserNamesInReplies: Boolean! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type EmailIntakeAddressConnection { """ The page's results paired with their cursors. """ edges: [EmailIntakeAddressEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [EmailIntakeAddress!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ Configuration for a team, template, or Asks intake address. Supply exactly one destination: teamId or templateId. Without type, Linear selects team or template from that destination. Choose asks explicitly to configure request replies and automatic messages; replies are disabled by default. asksWeb addresses are managed by the Asks web feature and cannot be created here. """ input EmailIntakeAddressCreateInput { """ Whether incoming issues become customer requests linked to the sender as a contact. Defaults to false on create. """ customerRequestsEnabled: Boolean """ The customer-facing forwarding address for Asks. Must be unique among active addresses in the workspace. """ forwardingEmailAddress: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ Custom message sent when the issue is canceled. Omit to use the default message. """ issueCanceledAutoReply: String """ Whether to email the requester when their issue is canceled. Defaults to false on create. """ issueCanceledAutoReplyEnabled: Boolean """ Custom message sent when the issue is completed. Omit to use the default message. """ issueCompletedAutoReply: String """ Whether to email the requester when their issue is completed. Defaults to false on create. """ issueCompletedAutoReplyEnabled: Boolean """ Custom acknowledgment message for new requests. Omit to use the default message on create; pass null to restore it on update. """ issueCreatedAutoReply: String """ Whether to email an acknowledgment when a request creates an issue. Defaults to true for new Asks addresses. """ issueCreatedAutoReplyEnabled: Boolean """ Whether to reopen completed or canceled issues when a substantive email reply is received. Defaults to false. """ reopenOnReply: Boolean """ Whether replies to Asks requests can be sent by email. Defaults to false. """ repliesEnabled: Boolean """ The sender name for outgoing Asks emails. """ senderName: String """ The UUID of the destination team. Use exactly one of teamId and templateId. """ teamId: String """ The UUID of the destination issue template. Use exactly one of templateId and teamId. """ templateId: String """ Address type: team, template, or asks. Defaults to team or template based on the destination. asksWeb cannot be created here. """ type: EmailIntakeAddressType """ Whether the commenter's name is included in email replies. Defaults to false. """ useUserNamesInReplies: Boolean } """ A result and its pagination cursor. """ type EmailIntakeAddressEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: EmailIntakeAddress! } """ The result of an email intake address mutation. """ type EmailIntakeAddressPayload { """ The email address that was created or updated. """ emailIntakeAddress: EmailIntakeAddress! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ The result of requesting custom sending domain verification. """ type EmailIntakeAddressRefreshSesDomainStatusPayload { """ Whether a verification check was queued. False if no custom domain is configured or it is already verified. """ success: Boolean! } """ The type of the email address. """ enum EmailIntakeAddressType { asks asksWeb team template } """ Changes to an existing email intake address. Omitted fields keep their current values. Team and template addresses keep their original destination; only Asks addresses can switch teams or templates. When switching an Asks destination, clear the old destination with null and provide the new one so exactly one remains. Sender and forwarding settings require integration management permission. """ input EmailIntakeAddressUpdateInput { """ Whether incoming issues become customer requests linked to the sender as a contact. Defaults to false on create. """ customerRequestsEnabled: Boolean """ Whether a team or template intake address accepts incoming email. This setting cannot be updated for Asks addresses. """ enabled: Boolean """ The customer-facing forwarding address for Asks. Must be unique among active addresses in the workspace. """ forwardingEmailAddress: String """ Custom message sent when the issue is canceled. Pass null to restore the default message. """ issueCanceledAutoReply: String """ Whether to email the requester when their issue is canceled. Defaults to false on create. """ issueCanceledAutoReplyEnabled: Boolean """ Custom message sent when the issue is completed. Pass null to restore the default message. """ issueCompletedAutoReply: String """ Whether to email the requester when their issue is completed. Defaults to false on create. """ issueCompletedAutoReplyEnabled: Boolean """ Custom acknowledgment message for new requests. Omit to use the default message on create; pass null to restore it on update. """ issueCreatedAutoReply: String """ Whether to email an acknowledgment when a request creates an issue. Defaults to true for new Asks addresses. """ issueCreatedAutoReplyEnabled: Boolean """ Whether to reopen completed or canceled issues when a substantive email reply is received. """ reopenOnReply: Boolean """ Whether replies to Asks requests can be sent by email. """ repliesEnabled: Boolean """ The sender name for outgoing Asks emails. """ senderName: String """ The UUID of the destination team. Use exactly one of teamId and templateId. """ teamId: String """ The UUID of the destination issue template. Use exactly one of templateId and teamId. """ templateId: String """ Whether the commenter's name is included in the email replies. """ useUserNamesInReplies: Boolean } """ An email category and the user ID and unsubscribe token from a Linear email. The token must match that user ID. This changes email preferences for the selected category; it does not remove workspace membership or change other notification channels. """ input EmailUnsubscribeInput { """ Unsubscribe token from a Linear email, paired with userId. """ token: String! """ Email category: invite-accepted, privacy-legal-updates, changelog, marketing, product-updates, or unread-notification-reminder. """ type: String! """ The identifier of the user. """ userId: String! } """ The result of an email unsubscribe mutation. """ type EmailUnsubscribePayload { """ Whether the operation was successful. """ success: Boolean! } """ Starts email sign-in for an account. Generate a clientAuthCode UUID and keep it in the client until sign-in finishes; you must send the same value when redeeming the emailed token. The response does not contain the token. """ input EmailUserAccountAuthChallengeInput { """ Token returned by the login challenge. Required when challenge verification is enabled. """ challengeResponse: String """ Client-generated UUID that binds the login to this browser. Required by the resolver; send the same value when redeeming the email token. """ clientAuthCode: String """ The email for which to generate the magic login code. """ email: String! """ The workspace invite link to associate with this authentication. """ inviteLink: String """ Whether the login was requested from the desktop app. """ isDesktop: Boolean """ Whether the login email should contain only a verification code and omit the sign-in link. Defaults to false. """ loginCodeOnly: Boolean """ PostHog session ID for attribution tracking. """ sessionId: String } """ Acknowledges an email sign-in challenge. The authentication token is sent by email and is not returned in this payload. A successful request does not by itself sign the account in. """ type EmailUserAccountAuthChallengeResponse { """ Authentication challenge type. The email challenge currently returns authToken. """ authType: String! """ Whether the operation was successful. """ success: Boolean! } """ A custom image emoji available throughout a workspace. Use its name in reactions and its url to display the image. Standard Unicode emoji do not have Emoji records. """ type Emoji implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who uploaded the emoji. Null if none is recorded or the account was deleted. """ creator: User """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The unique name of the custom emoji within the workspace. """ name: String! """ The workspace that the emoji belongs to. """ organization: Organization! """ How the emoji was added: user for an upload, or slack for an import from Slack. """ source: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The URL of the uploaded image for this custom emoji. """ url: String! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type EmojiConnection { """ The page's results paired with their cursors. """ edges: [EmojiEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Emoji!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The name and uploaded image for a custom workspace emoji. Upload the image to Linear first, then supply the resulting asset URL. """ input EmojiCreateInput { """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ A unique name within the workspace, using lowercase letters, digits, hyphens, and underscores. Use the name without surrounding colons; it must contain 1–256 characters. """ name: String! """ The image URL returned by a Linear file upload. It must point to Linear’s upload storage; arbitrary external image URLs are not accepted. """ url: String! } """ Emoji creation date sorting options. """ input EmojiCreatedAtSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A result and its pagination cursor. """ type EmojiEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Emoji! } """ Conditions used to select custom emoji. Supplied fields are combined with AND; use `or` to accept alternatives and `and` to group conditions. """ input EmojiFilter { """ Conditions that the custom emoji must all match. These are combined with the other fields in this filter. """ and: [EmojiFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Conditions on a custom emoji’s name, without surrounding colons. Standard Unicode emoji are not stored as Emoji records. """ name: StringComparator """ Alternative conditions; the custom emoji must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [EmojiFilter!] """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The result of a custom emoji mutation. """ type EmojiPayload { """ The emoji that was created. """ emoji: Emoji! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Custom emoji sorting options. """ input EmojiSortInput { """ Sort by emoji creation date. """ createdAt: EmojiCreatedAtSort } """ A workspace resource with a stable ID and lifecycle timestamps. An archived resource still exists, but is normally omitted from lists unless `includeArchived` is true. """ interface Entity implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ Union type for webhook actor payloads """ union EntityActorWebhookPayload = | ExternalUserActorWebhookPayload | IntegrationActorWebhookPayload | OauthClientActorWebhookPayload | UserActorWebhookPayload """ A resource link that points from a Linear entity to content hosted elsewhere, such as a design file, dashboard, or external document. label is the text shown in Linear and url is the destination. Each link belongs to one parent, and sortOrder positions it alongside that parent’s other links and documents. Removing the link does not delete the external resource. """ type EntityExternalLink implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the link. Null if the creator is unavailable. """ creator: User """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The parent initiative. Null if the link belongs to another kind of resource. """ initiative: Initiative """ The link's label. """ label: String! """ The parent project. Null if the link belongs to another kind of resource. """ project: Project """ 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. """ sortOrder: Float! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The link's URL. """ url: String! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type EntityExternalLinkConnection { """ The page's results paired with their cursors. """ edges: [EntityExternalLinkEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [EntityExternalLink!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A resource link to add to an initiative, project, or release. Provide url, label, and exactly one parent field. Initiative and project references accept UUIDs or their identifiers; releaseId accepts a UUID. Omit sortOrder to place the link after the parent’s existing resources. """ input EntityExternalLinkCreateInput { """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The initiative associated with the link. Can be a UUID or initiative identifier (e.g., 'I-12'). """ initiativeId: String """ The label for the link. """ label: String! """ The project associated with the link. Can be a UUID or project identifier (e.g., 'P-LIN-123'). """ projectId: String """ UUID of the parent release. Requires access to release management. """ releaseId: String """ Position among the parent's links and documents. Lower values appear first; omitted on create, the link is placed last. """ sortOrder: Float """ The URL of the link. """ url: String! } """ A result and its pagination cursor. """ type EntityExternalLinkEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: EntityExternalLink! } """ The result of an entity external link mutation. """ type EntityExternalLinkPayload { """ The link that was created or updated. """ entityExternalLink: EntityExternalLink! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Changes to an existing resource link’s destination, display label, or position. Omitted fields remain unchanged. This input cannot move a link to another parent; create a new link under that parent and remove the old one if needed. """ input EntityExternalLinkUpdateInput { """ The label for the link. """ label: String """ Position among the parent's links and documents. Lower values appear first; omitted on create, the link is placed last. """ sortOrder: Float """ The URL of the link. """ url: String } """ Compares project or initiative IDs. Accepts UUIDs, generated identifiers, and custom identifiers in the current workspace. Unresolved identifiers match nothing in `eq` or `in` and are ignored in `neq` or `nin`. All supplied conditions must match. """ input EntityIdentifierIDComparator { """ Matches the given value. """ eq: ID """ Matches any value in the list. An empty list matches nothing. """ in: [ID!] """ Excludes the given value. """ neq: ID """ Excludes every value in the list. An empty list adds no restriction. """ nin: [ID!] } """ Payload for entity-related webhook events. """ type EntityWebhookPayload { """ The type of action that triggered the webhook. """ action: String! """ The actor who triggered the action. """ actor: EntityActorWebhookPayload """ The time the payload was created. """ createdAt: DateTime! """ The entity that was changed. """ data: DataWebhookPayload! """ ID of the organization for which the webhook belongs to. """ organizationId: String! """ The type of resource, i.e., the name of the entity. """ type: String! """ In case of an update event, previous values of all updated properties. """ updatedFrom: JSONObject """ URL for the entity. """ url: String """ The ID of the webhook that sent this event. """ webhookId: String! """ Unix timestamp in milliseconds when the webhook was sent. """ webhookTimestamp: Float! } """ Compares numeric issue estimates, using the values from each issue's team estimate scale. Use `{ null: true }` to find issues without an estimate. Without `and` or `or`, all supplied comparisons must match. When supplied, `and` or `or` replaces the direct comparisons; `and` takes precedence if both are present. """ input EstimateComparator { """ Requires every listed estimate filter to match. Replaces direct comparisons and `or`; put the comparisons you need inside this list. An empty list adds no restriction. """ and: [NullableNumberComparator!] """ Matches the given value. """ eq: Float """ Matches values greater than the given value. """ gt: Float """ Matches values greater than or equal to the given value. """ gte: Float """ Matches any value in the list. An empty list matches nothing. """ in: [Float!] """ Matches values less than the given value. """ lt: Float """ Matches values less than or equal to the given value. """ lte: Float """ Excludes the given value. """ neq: Float """ Excludes every value in the list, and includes null. An empty list adds no restriction. """ nin: [Float!] """ Set to true to match resources with no value, or false to require a value. For example, `{ null: true }` finds unset values; `{ eq: null }` is not a substitute. """ null: Boolean """ Requires at least one listed estimate filter to match. For example, combine `{ null: true }` and `{ gte: 5 }` to find unestimated issues or estimates of at least 5. Replaces direct comparisons and is ignored when `and` is supplied. An empty list adds no restriction. """ or: [NullableNumberComparator!] } """ Issue estimate sorting options. """ input EstimateSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Input for tracking an anonymous analytics event. """ input EventTrackingInput { """ Event name: $pageview or $pageleave. Other names return success=false. """ event: String! """ JSON properties to attach to the event. A nonempty sessionId supplied alongside properties overrides any $session_id in this object. """ properties: JSONObject """ Client session ID for PostHog session correlation. """ sessionId: String } """ Result of accepting an anonymous analytics event; success does not confirm delivery. """ type EventTrackingPayload { """ Whether the operation was successful. """ success: Boolean! } """ A reference from a Linear entity to a Jira issue or epic, GitHub issue, or Slack message. id belongs to the external service; metadata provides the identifiers or links needed to interpret it. This is a reference, not a full copy of the external record or a guarantee that it is still accessible. """ type ExternalEntityInfo { """ Identifier in the external service: a Jira issue ID, GitHub issue node ID, or Slack message timestamp. """ id: String! """ Service-specific identifiers and links. Select the matching metadata type with an inline fragment. Null when no metadata is available. """ metadata: ExternalEntityInfoMetadata """ The external service that this entity belongs to (e.g., jira, github, slack). """ service: ExternalSyncService! } """ Repository and issue number for a linked GitHub issue. """ type ExternalEntityInfoGithubMetadata { """ Issue number within the repository. Null when not recorded. """ number: Float """ GitHub account or organization that owns the repository. Null when not recorded. """ owner: String """ Repository name without the owner. Null when not recorded. """ repo: String } """ Identifiers for a linked Jira issue or epic. """ type ExternalEntityInfoJiraMetadata { """ Jira issue key, such as PROJ-123. Null when not recorded. """ issueKey: String """ Jira issue type ID. Null when not recorded. """ issueTypeId: String """ Jira project ID. Null when not recorded. """ projectId: String } """ Service-specific metadata for an external entity linked to Linear. """ union ExternalEntityInfoMetadata = | ExternalEntityInfoGithubMetadata | ExternalEntityInfoJiraMetadata | ExternalEntitySlackMetadata """ Channel and message details for a linked Slack message. """ type ExternalEntitySlackMetadata { """ Slack channel ID. Null when not recorded. """ channelId: String """ Slack channel name. Null when not recorded. """ channelName: String """ Whether the entity originated from Slack (not Linear). """ isFromSlack: Boolean! """ Permalink to the Slack message. Null when not recorded. """ messageUrl: String } """ The service that syncs an external entity to Linear. """ enum ExternalSyncService { github jira slack } """ A person or bot identified through an external service, such as Slack, Jira, or GitHub. Scoped to a workspace and used to attribute issues, comments, and reactions received through integrations. """ type ExternalUser implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ A URL to the external user's avatar image. Null if no avatar is available from the external service. """ avatarUrl: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The name shown when attributing activity to this external user. It is not a unique identifier. """ displayName: String! """ The external user's email address, in lowercase. Null if unavailable. """ email: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ 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. """ lastSeen: DateTime """ The external user's full name. """ name: String! """ The workspace that the external user belongs to. """ organization: Organization! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ External user actor payload for webhooks. """ type ExternalUserActorWebhookPayload { """ The email of the external user. """ email: String! """ The ID of the external user. """ id: String! """ The name of the external user. """ name: String! """ The type of actor. """ type: String! } """ Certain properties of an external user. """ type ExternalUserChildWebhookPayload { """ The email of the external user. """ email: String! """ The ID of the external user. """ id: String! """ The name of the external user. """ name: String! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type ExternalUserConnection { """ The page's results paired with their cursors. """ edges: [ExternalUserEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [ExternalUser!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A result and its pagination cursor. """ type ExternalUserEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: ExternalUser! } """ 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. """ type Facet implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ 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). """ sortOrder: Float! """ The user whose feed this facet belongs to. Set when this facet represents a view in a user's personal feed. """ sourceFeedUser: User """ The owning initiative. Set when this facet represents a view tab on an initiative. """ sourceInitiative: Initiative """ The owning organization. Set for workspace-level facets that are not scoped to a specific team, project, or initiative. """ sourceOrganization: Organization """ 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. """ sourcePage: FacetPageSource """ The owning project. Set when this facet represents a view tab on a project. """ sourceProject: Project """ The owning team. Set when this facet represents a view on a team-level page. """ sourceTeam: Team """ The custom view that this facet points to. Each facet targets exactly one custom view, establishing a one-to-one relationship. """ targetCustomView: CustomView """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } enum FacetPageSource { feed initiatives projects teamIssues } """ A personal sidebar bookmark or folder. The type identifies the target, and the corresponding relation contains the bookmarked entity. Folders organize favorites without changing the underlying entities or other users’ sidebars. """ type Favorite implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ Children of the favorite. Only applies to favorites of type folder. """ children( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): FavoriteConnection! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The favorited custom view. """ customView: CustomView """ The favorited customer. """ customer: Customer """ The favorited cycle. """ cycle: Cycle """ The favorited document. """ document: Document """ The name of the folder. Only applies to favorites of type folder. """ folderName: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The favorited initiative. """ initiative: Initiative """ The targeted tab of the initiative. """ initiativeTab: InitiativeTab """ The favorited issue. """ issue: Issue """ The favorited label. """ label: IssueLabel """ The saved definition of a live folder whose contents are computed from your work. Includes version and root keys, plus a filter for roots that support it. These contents are not stored as child favorites. """ liveFolderDefinition: JSONObject """ The predefined live folder represented by this favorite. """ liveFolderPreset: String """ The user who owns this favorite. Favorites are personal and only visible to their owner. """ owner: User! """ 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. """ parent: Favorite """ The targeted tab of the release pipeline. """ pipelineTab: PipelineTab """ The team of the favorited predefined view. """ predefinedViewTeam: Team """ The type of favorited predefined view (e.g., 'allIssues', 'activeCycle', 'backlog', 'triage'). Only populated when the favorite type is 'predefinedView'. """ predefinedViewType: String """ The favorited project. """ project: Project """ The favorited project label. """ projectLabel: ProjectLabel """ The targeted tab of the project. """ projectTab: ProjectTab """ [DEPRECATED] The favorited team of the project. """ projectTeam: Team """ The favorited release. """ release: Release """ The favorited release note. """ releaseNote: ReleaseNote """ The favorited release pipeline. """ releasePipeline: ReleasePipeline """ The position of this item in the user's favorites list. Lower values appear first. Used to maintain user-defined ordering within the sidebar. """ sortOrder: Float! """ The favorited team. """ team: Team """ The type of entity this favorite references, such as 'issue', 'project', 'cycle', 'customView', 'document', 'folder', etc. Determines which associated entity field is populated. """ type: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ URL of the favorited entity. Folders return 'null' value. """ url: String """ The favorited user. """ user: User """ The favorited loop. """ workflowDefinition: WorkflowDefinition } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type FavoriteConnection { """ The page's results paired with their cursors. """ edges: [FavoriteEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Favorite!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A bookmark or folder to add to your sidebar. Supply exactly one target entity, folderName, or liveFolderPreset. parentId can place a bookmark in your own custom folder; folders cannot be nested. """ input FavoriteCreateInput { """ The identifier of the custom view to favorite. """ customViewId: String """ The identifier of the customer to favorite. """ customerId: String """ The identifier of the cycle to favorite. """ cycleId: String """ The identifier of the dashboard to favorite. """ dashboardId: String """ The identifier of the document to favorite. """ documentId: String """ The identifier of the facet to favorite. """ facetId: String """ The name of the favorite folder. """ folderName: String """ The identifier. If none is provided, the backend will generate one. """ id: String """ The tab of the initiative to favorite. """ initiativeTab: InitiativeTab """ The identifier of the issue to favorite. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String """ The identifier of the label to favorite. """ labelId: String """ The predefined live folder to create. """ liveFolderPreset: String """ UUID of the destination favorite folder. Omit for the top level; folders cannot have a parent. """ parentId: String """ The tab of the release pipeline to favorite. """ pipelineTab: PipelineTab """ The identifier of team for the predefined view to favorite. """ predefinedViewTeamId: String """ The type of the predefined view to favorite. """ predefinedViewType: String """ The identifier of the project to favorite. """ projectId: String """ The identifier of the project label to favorite. """ projectLabelId: String """ The tab of the project to favorite. """ projectTab: ProjectTab """ The identifier of the pull request to favorite. """ pullRequestId: String """ The identifier of the release to favorite. """ releaseId: String """ The identifier of the release note to favorite. """ releaseNoteId: String """ The identifier of the release pipeline to favorite. """ releasePipelineId: String """ Position in the favorites list, in ascending order. Omit or pass 0 to append; collisions are adjusted. """ sortOrder: Float """ The identifier of the team to favorite. """ teamId: String """ The identifier of the user to favorite. """ userId: String """ The identifier of the loop to favorite. """ workflowDefinitionId: String } """ A result and its pagination cursor. """ type FavoriteEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Favorite! } """ Return type for favorite mutations. """ type FavoritePayload { """ The favorite that was created or updated. """ favorite: Favorite! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Changes to a favorite you own. Omitted fields stay unchanged. Use parentId to move a bookmark into a custom folder or back to the top level; folders cannot be nested. """ input FavoriteUpdateInput { """ New folder name. Only applies to custom folders; predefined live folders cannot be renamed. """ folderName: String """ The destination folder UUID. Null moves the favorite to the sidebar’s top level. """ parentId: String """ Position in the favorites list, in ascending order. Pass 0 to append; collisions are adjusted. """ sortOrder: Float } """ Feed item filtering options """ input FeedItemFilter { """ Compound filters, all of which need to be matched by the feed item. """ and: [FeedItemFilter!] """ Filters that the feed item author must satisfy. """ author: UserFilter """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Compound filters, one of which need to be matched by the feed item. """ or: [FeedItemFilter!] """ Filters that the feed item's project update must satisfy. """ projectUpdate: ProjectUpdateFilter """ Filters that the related feed item initiatives must satisfy. """ relatedInitiatives: InitiativeCollectionFilter """ Filters that the related feed item team must satisfy. """ relatedTeams: TeamCollectionFilter """ Comparator for the project or initiative update health: onTrack, atRisk, offTrack """ updateHealth: StringComparator """ Comparator for the update type: initiative, project, team """ updateType: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Cadence to generate feed summary """ enum FeedSummarySchedule { daily never weekly } type FileUploadDeletePayload { """ Whether the operation was successful. """ success: Boolean! } """ By which resolution is frequency defined. """ enum FrequencyResolutionType { daily weekly } """ The result of a Front attachment mutation. """ type FrontAttachmentPayload { """ The issue attachment that was created. """ attachment: Attachment! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ A team rule that moves linked issues to an issue status after a Git event. A rule for a matching target branch overrides the team’s default rule for that event. A branch-specific rule can have a null status to explicitly take no action. """ type GitAutomationState implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ [DEPRECATED] The target branch, if null, the automation will be triggered on any branch. """ branchPattern: String @deprecated(reason: "Use targetBranch instead.") """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The Git event that triggers this automation rule (e.g., branch created, PR opened for review, or PR merged). """ event: GitAutomationStates! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The issue status to apply when the event occurs. A branch-specific rule can return null to take no action, overriding the team’s default for the same event. Default rules must have a status. """ state: WorkflowState """ Limits this rule to matching pull request target branches. Null makes it the default for branches without a matching rule for this event. """ targetBranch: GitAutomationTargetBranch """ The team that this automation rule belongs to. Issues must belong to this team for the automation to apply. """ team: Team! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type GitAutomationStateConnection { """ The page's results paired with their cursors. """ edges: [GitAutomationStateEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [GitAutomationState!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The team, Git event, and issue status for a new automation rule. Set targetBranchId to restrict the rule to a branch pattern. A branch-specific rule can use a null stateId to suppress the default automation; a default rule requires a status. """ input GitAutomationStateCreateInput { """ The event that triggers the automation. """ event: GitAutomationStates! """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The UUID of the issue status to apply. Null is allowed only when targetBranchId selects a branch-specific rule, and means no action for that branch and event. Default rules must specify a status. """ stateId: String """ The UUID of a target branch pattern. Omit or use null to create the team’s default rule for this event. A matching branch-specific rule overrides the default. """ targetBranchId: String """ The team associated with the automation state. """ teamId: String! } """ A result and its pagination cursor. """ type GitAutomationStateEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: GitAutomationState! } """ The result of a git automation state mutation. """ type GitAutomationStatePayload { """ The automation state that was created or updated. """ gitAutomationState: GitAutomationState! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Changes to an existing Git automation rule. Omitted fields remain unchanged. A null targetBranchId makes the rule a default, which requires a non-null stateId. """ input GitAutomationStateUpdateInput { """ The event that triggers the automation. """ event: GitAutomationStates """ The UUID of the issue status to apply. For a branch-specific rule, null disables the action and overrides the team’s default. A default rule cannot have a null status; omit to keep the current status. """ stateId: String """ The UUID of a target branch pattern. Null makes this the team’s default rule for the event; matching branch-specific rules override it. Omit to keep the current target. """ targetBranchId: String } """ The Git events that can trigger an automation rule. Each value corresponds to a pull/merge request lifecycle event (e.g., branch created, PR opened for review, PR merged). """ enum GitAutomationStates { draft merge mergeable review start } """ A team’s target-branch rule for Git automation. Exact names or regular expressions select pull request target branches; matching rules override defaults for the same event. """ type GitAutomationTargetBranch implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ 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. """ automationStates( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): GitAutomationStateConnection! """ An exact target-branch name, or an RE2 regular expression when isRegex is true. Use anchors such as ^release/ to constrain regular-expression matches. """ branchPattern: String! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Whether the branch pattern should be interpreted as a regular expression. When false, the pattern is matched as an exact branch name. """ isRegex: Boolean! """ The team that this target branch definition belongs to. The branch pattern is unique within a team. """ team: Team! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A target-branch pattern that groups a team’s Git automation rules. By default the pattern is an exact branch name; set isRegex to true for an RE2 regular expression. """ input GitAutomationTargetBranchCreateInput { """ An exact target-branch name, or an RE2 regular expression when isRegex is true. Regular expressions do not need to match the whole name. """ branchPattern: String! """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ Whether the branch pattern is a regular expression. """ isRegex: Boolean = false """ The team associated with the Git target branch automation. """ teamId: String! } """ The result of a git automation target branch mutation. """ type GitAutomationTargetBranchPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The Git target branch automation that was created or updated. """ targetBranch: GitAutomationTargetBranch! } """ Changes to a target-branch pattern. Omitted fields keep their values. Changing the pattern or matching mode changes which pull requests use all automation rules linked to this definition. """ input GitAutomationTargetBranchUpdateInput { """ An exact target-branch name, or an RE2 regular expression when isRegex is true. Regular expressions do not need to match the whole name. """ branchPattern: String """ Whether the branch pattern is a regular expression. """ isRegex: Boolean } """ GitHub commit connection and its webhook verification secret. """ type GitHubCommitIntegrationPayload { """ GitHub-specific details for the operation. Populated by GitHub-related mutations only. """ gitHub: GitHubIntegrationConnectDetails """ The integration that was created or updated. """ integration: Integration """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The webhook secret to provide to GitHub. """ webhookSecret: String! } """ Whether the GitHub Enterprise Server app has connected during setup. """ type GitHubEnterpriseServerInstallVerificationPayload { """ Whether Linear has received a connection from the app during this setup attempt. """ success: Boolean! } """ Connection record and URLs needed to finish GitHub Enterprise Server setup. """ type GitHubEnterpriseServerPayload { """ GitHub-specific details for the operation. Populated by GitHub-related mutations only. """ gitHub: GitHubIntegrationConnectDetails """ URL to install the registered GitHub App. """ installUrl: String! """ The integration that was created or updated. """ integration: Integration """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ URL to register the GitHub App on the Enterprise Server. """ setupUrl: String! """ Whether the operation was successful. """ success: Boolean! """ The webhook secret to provide to GitHub. """ webhookSecret: String! } """ GitHub-specific details that some integration mutations may return alongside the standard payload. Populated only by GitHub-related mutations. """ type GitHubIntegrationConnectDetails { """ Full names ('owner/repo') of repositories whose existing GitHub Issues sync mappings would become inaccessible if the new GitHub App installation replaces the existing one. When non-empty the connect was halted; the client should surface the impact and re-call the mutation with `confirmReplace: true` to commit, or do nothing to leave the integration unchanged. Capped at a small constant; longer lists are truncated. """ lostRepositoryNames: [String!] } """ Instruction for the client after attempting to remove code access from a GitHub integration. """ enum GitHubRemoveCodeAccessAction { Done InstallBasicApp } """ Result of connecting GitLab. On success, use webhookSecret to configure the GitLab webhook. If success is false, the integration was not created and error fields explain the failed token or connectivity check; webhookSecret is then an empty string. """ type GitLabIntegrationCreatePayload { """ Error message if the connection failed. """ error: String """ Method and post-encoding upstream URI of the failed request, for debugging proxy allowlist rules (e.g. `GET /api/v4/projects/aire%2Fagents`). """ errorRequest: String """ Response body from GitLab for debugging. """ errorResponseBody: String """ Response headers from GitLab for debugging (JSON stringified). """ errorResponseHeaders: String """ GitHub-specific details for the operation. Populated by GitHub-related mutations only. """ gitHub: GitHubIntegrationConnectDetails """ The integration that was created or updated. """ integration: Integration """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The webhook secret to provide to GitLab. """ webhookSecret: String! } """ GitLab connectivity check result, with diagnostic details when the check fails. """ type GitLabTestConnectionPayload { """ Error message if the connection test failed. """ error: String """ Method and post-encoding upstream URI of the failed request, for debugging proxy allowlist rules (e.g. `GET /api/v4/projects/aire%2Fagents`). """ errorRequest: String """ Response body from GitLab for debugging. """ errorResponseBody: String """ Response headers from GitLab for debugging (JSON stringified). """ errorResponseHeaders: String """ GitHub-specific details for the operation. Populated by GitHub-related mutations only. """ gitHub: GitHubIntegrationConnectDetails """ The integration that was created or updated. """ integration: Integration """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ [Internal] The kind of link between an issue and a pull request. """ enum GitLinkKind { closes contributes links } """ A GitHub team discovered through Linear's GitHub integration. GitHub teams can be requested as PR reviewers and mentioned in comments. Tracked separately from external users but shaped compatibly so the UI can render teams alongside users in assignment, review, and mention surfaces. """ type GithubTeam implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ A URL to the team's avatar image. Null when GitHub does not expose a logo for the team. """ avatarUrl: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Human-readable description of the team, when set on GitHub. """ description: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The last time the team was observed in a GitHub payload (e.g. requested as a reviewer). Defaults to the creation time and is updated on subsequent sightings. """ lastSeen: DateTime """ The GitHub team's display name (e.g. "Frontend Team"). """ name: String! """ The workspace that the team was discovered for. """ organization: Organization! """ The GitHub team's slug (e.g. "frontend-team"). Used as the team's at-mention handle, scoped by the GitHub organization that owns the team. """ slug: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ Input for exchanging a Google OAuth authorization code for a Linear session. """ input GoogleUserAccountAuthInput { """ Code returned from Google's OAuth flow. """ code: String! """ Whether to reject sign-in when it would create a new account. Defaults to false, which allows account creation through this Google sign-in flow. """ disallowSignup: Boolean """ An optional invite link for a workspace used to populate available workspaces. """ inviteLink: String """ Redirect URI used in the Google OAuth authorization request. """ redirectUri: String """ PostHog session ID for attribution tracking. """ sessionId: String """ Browser timezone. Required by the input type but currently unused by this operation. """ timezone: String! } """ Union type for all possible guidance rule origins """ union GuidanceRuleOriginWebhookPayload = OrganizationOriginWebhookPayload | TeamOriginWebhookPayload """ Metadata for guidance that should be provided to an AI agent. """ type GuidanceRuleWebhookPayload { """ The content of the guidance as markdown. """ body: String! """ Where the guidance was defined within the organization. """ origin: GuidanceRuleOriginWebhookPayload! } """ Compares resource UUIDs by equality or list membership. All supplied conditions must match. Use `in` to fetch a known set of resources; an empty `in` list matches nothing. Human-readable identifiers are accepted only by the entity-specific ID comparators. """ input IDComparator { """ Matches the given value. """ eq: ID """ Matches any value in the list. An empty list matches nothing. """ in: [ID!] """ Excludes the given value. """ neq: ID """ Excludes every value in the list. An empty list adds no restriction. """ nin: [ID!] } """ 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. """ type IdentityProvider implements Node { """ Whether users are allowed to change their name and display name even if SCIM is enabled. """ allowNameChange: Boolean! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Whether the identity provider is the default identity provider migrated from organization level settings. """ defaultMigrated: Boolean! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The issuer's custom entity ID. """ issuerEntityId: String """ 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. """ priority: Float """ Whether SAML authentication is enabled for the workspace. """ samlEnabled: Boolean! """ Whether SCIM provisioning is enabled for the workspace. """ scimEnabled: Boolean! """ The service provider (Linear) custom entity ID. Defaults to https://auth.linear.app/sso """ spEntityId: String """ Binding method for authentication call. Can be either `post` (default) or `redirect`. """ ssoBinding: String """ Sign in endpoint URL for the identity provider. """ ssoEndpoint: String """ The algorithm of the Signing Certificate. Can be one of `sha1`, `sha256` (default), or `sha512`. """ ssoSignAlgo: String """ X.509 Signing Certificate in string form. """ ssoSigningCert: String """ The time at which the current SAML configuration was marked as verified. Null if it has not been verified. Cleared whenever the SAML configuration changes. """ ssoVerifiedAt: DateTime """ The type of identity provider. """ type: IdentityProviderType! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ The type of identity provider. """ enum IdentityProviderType { general webForms } """ The result of copying an external image into Linear storage. """ type ImageUploadFromUrlPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The Linear asset URL after the image has been copied. Null if no upload is returned. """ url: String } """ Which users of the source service an import maps to Linear users. """ enum ImportUsersOption { """ Map users who match a Linear user by email, and invite the users whose email is on one of the workspace's domains. Skip the rest. """ matchAndInvite """ Map users who match a Linear user by email, and skip the rest. """ matchOnly """ Import no users. """ skip } """ Changes to a group of related inbox notifications. Supply read or snoozedUntilAt; omitted fields remain unchanged. """ input InboxNotificationUpdateInput { """ True marks the group read; false marks it unread. Null or omission leaves the read state unchanged. """ read: Boolean """ The time until which to snooze the notification stack. Null unsnoozes it. """ snoozedUntilAt: DateTime } """ Return type for inbox notification updates. """ type InboxNotificationUpdatePayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The requested notification after the update. """ notification: Notification! """ Whether the operation was successful. """ success: Boolean! """ The notifications changed by the stack update. """ updatedNotifications: [Notification!]! } """ Maps existing team states and labels when changing which resources the team inherits. """ input InheritanceEntityMapping { """ Mapping of the IssueLabel ID to the new IssueLabel name. """ issueLabels: JSONObject """ Mapping of the ProjectLabel ID to the new ProjectLabel name. """ projectLabels: JSONObject """ Mapping of the WorkflowState ID to the new WorkflowState ID. """ workflowStates: JSONObject! } """ A strategic goal supported by projects and, optionally, sub-initiatives. An initiative has its own owner, lifecycle status, target date, and written updates. Linking a project to an initiative does not change the project’s teams or issue workflow. """ type Initiative implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The initiative's color. """ color: String """ The time the initiative entered Completed status. Changing to any other status clears this value. Null when the initiative has no current completion time. """ completedAt: DateTime """ The full initiative overview in Markdown. Null if no overview has been set; description is the separate short summary. """ content: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the initiative. """ creator: User """ A short plain-text summary of the initiative. Use content for its longer Markdown overview. Null if no summary is set. """ description: String """ The document backing the initiative overview. Null if no overview has been set. """ documentContent: DocumentContent """ Documents associated with the initiative. """ documents( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned documents. """ filter: DocumentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): DocumentConnection! """ The resolution of the reminder frequency. """ frequencyResolution: FrequencyResolutionType! """ 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. """ health: InitiativeUpdateHealthType """ 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. """ healthUpdatedAt: DateTime """ History entries associated with the initiative. """ history( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): InitiativeHistoryConnection! """ The icon of the initiative. Can be an emoji or a decorative icon type. """ icon: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Initiative updates associated with the initiative. """ initiativeUpdates( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): InitiativeUpdateConnection! """ Settings for all integrations associated with that initiative. """ integrationsSettings: IntegrationsSettings """ The IDs of the initiative labels associated with this initiative. """ labelIds: [String!]! """ Labels associated with this initiative. """ labels( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned initiative labels. """ filter: InitiativeLabelFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): InitiativeLabelConnection! """ The most recent status update posted for this initiative. Null if no updates have been posted. """ lastUpdate: InitiativeUpdate """ The team that leads the initiative and determines its visibility. An initiative without a lead team is visible at workspace level. Null if no lead team is assigned. """ leadTeam: Team """ Links associated with the initiative. """ links( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): EntityExternalLinkConnection! """ The name of the initiative. """ name: String! """ The workspace of the initiative. """ organization: Organization! """ The user responsible for the initiative and its status updates. Null if no owner is assigned. """ owner: User """ The immediate parent initiative. Null if this is a top-level initiative. """ parentInitiative: Initiative """ The priority of the initiative. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. """ priority: Int! """ The sort order of the initiative within the workspace when ordered by priority. """ prioritySortOrder: Float! """ Projects linked to this initiative that you can access. By default, this also includes projects in its sub-initiatives; set includeSubInitiatives to false to return only directly linked projects. """ projects( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned projects. """ filter: ProjectFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Whether to include projects from sub-initiatives. Defaults to true. """ includeSubInitiatives: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned projects. """ sort: [ProjectSortInput!] ): ProjectConnection! """ The initiative's unique URL slug, used to construct human-readable URLs. """ slugId: String! """ The sort order of the initiative within the workspace. """ sortOrder: Float! """ The time the initiative most recently entered Active status. This is refreshed if the initiative leaves Active and later returns to it. Null if no activation time has been recorded. """ startedAt: DateTime """ The lifecycle status of the initiative. One of Proposed, Planned, Active, Completed, Canceled. """ status: InitiativeStatus! """ The initiative’s direct children. Does not recursively include deeper descendants. """ subInitiatives( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned sub-initiatives. """ filter: InitiativeFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned initiatives. """ sort: [InitiativeSortInput!] ): InitiativeConnection! """ The estimated completion date of the initiative. Null if no target date is set. """ targetDate: TimelessDate """ The precision of targetDate: month, quarter, halfYear, or year. Null means an exact date or no target date. """ targetDateResolution: DateResolutionType """ Whether the initiative is in the trash. Trashed initiatives are also archived and can be restored with initiativeUnarchive while they remain available. Null means the initiative is not trashed. """ trashed: Boolean """ The frequency at which to prompt for updates. When not set, reminders are inherited from workspace. """ updateReminderFrequency: Float """ The n-weekly frequency at which to prompt for updates. When not set, reminders are inherited from workspace. """ updateReminderFrequencyInWeeks: Float """ The day at which to prompt for updates. """ updateRemindersDay: Day """ The hour at which to prompt for updates. """ updateRemindersHour: Float """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The initiative’s URL in Linear. """ url: String! """ The initiative’s visibility, inherited from its lead team. Without a lead team, the initiative is public within the workspace. This does not make it accessible outside the workspace. """ visibility: InitiativeVisibility! } """ The result of archiving or restoring a resource. """ type InitiativeArchivePayload implements ArchivePayload { """ The resource after the operation, when returned. This can be null when the mutation does not return a resource, including after deletion. Check `success` for the operation's result. """ entity: Initiative """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Certain properties of an initiative. """ type InitiativeChildWebhookPayload { """ The ID of the initiative. """ id: String! """ The name of the initiative. """ name: String! """ The URL of the initiative. """ url: String! } """ Filters a related collection of initiatives. Use some or every to test its members and length to test its size, for example length: { eq: 0 } for an empty collection. Direct property filters act as some only when no collection clause is supplied. """ input InitiativeCollectionFilter { """ Comparator for the initiative activity type. """ activityType: StringComparator """ Conditions on this initiative’s parent initiatives and their ancestors. For example, some: { id: { eq: ID } } finds descendants of the specified initiative. """ ancestors: InitiativeCollectionFilter """ All of these collection conditions must match. Each can test a different member of the collection. """ and: [InitiativeCollectionFilter!] """ Comparator for the initiative canceled at date. """ canceledAt: NullableDateComparator """ Comparator for the initiative completed at date. """ completedAt: NullableDateComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the initiative creator must satisfy. """ creator: NullableUserFilter """ Comparator for the initiative's custom identifier. """ customIdentifier: NullableStringComparator """ Filters that needs to be matched by all initiatives. """ every: InitiativeFilter """ Comparator for the initiative health: onTrack, atRisk, offTrack """ health: StringComparator """ The initiative’s health after accounting for the age of its latest update and its reminder schedule. Accepts onTrack, atRisk, offTrack, outdated, or noUpdate. """ healthWithAge: StringComparator """ Comparator for the identifier. """ id: EntityIdentifierIDComparator """ Conditions on updates published directly to this initiative. Updates on sub-initiatives are not included in this collection. """ initiativeUpdates: InitiativeUpdatesCollectionFilter """ Filters that the initiative labels must satisfy. """ labels: InitiativeLabelCollectionFilter """ Conditions on the initiative’s own lead team. Use { null: true } to find workspace-level initiatives. """ leadTeam: NullableTeamFilter """ The number of related objects, before applying some or every. Use { eq: 0 } to find an empty collection. """ length: NumberComparator """ Comparator for the initiative name. """ name: StringComparator """ At least one of these collection conditions must match. """ or: [InitiativeCollectionFilter!] """ Filters that the initiative owner must satisfy. """ owner: NullableUserFilter """ Comparator for the initiative priority. """ priority: NullableNumberComparator """ Conditions on distinct accessible projects linked to this initiative or its sub-initiatives. A project linked through several sub-initiatives is counted once. """ projects: ProjectCollectionFilter """ Comparator for the initiative slug ID. """ slugId: StringComparator """ Filters that needs to be matched by some initiatives. """ some: InitiativeFilter """ Comparator for the initiative started at date. """ startedAt: NullableDateComparator """ Comparator for the initiative status: Proposed, Planned, Active, Completed, Canceled """ status: StringComparator """ Comparator for the initiative target date. """ targetDate: NullableDateComparator """ Conditions on teams contributing through projects or lead-team associations. When team initiatives are available, this also accounts for sub-initiative projects and lead teams in the initiative hierarchy. Use leadTeam to filter only the initiative’s own lead team. """ teams: TeamCollectionFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type InitiativeConnection { """ The page's results paired with their cursors. """ edges: [InitiativeEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Initiative!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The details for a new initiative. Provide a name and optionally an owner, lead team, overview, and target date. Projects are linked separately with initiativeToProjectCreate. """ input InitiativeCreateInput { """ The initiative's color. """ color: String """ The full initiative overview in Markdown, separate from the short description. """ content: String """ A short plain-text summary. Use content for the full Markdown overview. """ description: String """ The initiative's icon. """ icon: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ UUIDs of initiative labels to apply. Label groups themselves cannot be applied. """ labelIds: [String!] """ The UUID of the team that leads the initiative and determines its visibility. Omit or use null for a workspace initiative. Any assigned owner must be able to access a private or restricted lead team. """ leadTeamId: String """ The name of the initiative. """ name: String! """ The UUID of a workspace member who will own the initiative. Guests cannot be owners. If the lead team is private or restricted, the owner must be able to access that team. """ ownerId: String """ The priority of the initiative. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. """ priority: Int """ The sort order of the initiative within the workspace, when ordered by priority. """ prioritySortOrder: Float """ The sort order of the initiative within the workspace. """ sortOrder: Float """ The initiative’s lifecycle status. Defaults to Active when omitted. """ status: InitiativeStatus """ Planned completion date in YYYY-MM-DD format. Use targetDateResolution for a month, quarter, half-year, or year. """ targetDate: TimelessDate """ The precision of targetDate: month, quarter, halfYear, or year. Omit for an exact date. """ targetDateResolution: DateResolutionType } """ Initiative creation date sorting options. """ input InitiativeCreatedAtSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A result and its pagination cursor. """ type InitiativeEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Initiative! } """ Filters initiatives by status, health, dates, ownership, labels, hierarchy, or related projects. Supplied conditions must match together; use and and or to combine nested filters. """ input InitiativeFilter { """ Comparator for the initiative activity type. """ activityType: StringComparator """ Conditions on this initiative’s parent initiatives and their ancestors. For example, some: { id: { eq: ID } } finds descendants of the specified initiative. """ ancestors: InitiativeCollectionFilter """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [InitiativeFilter!] """ Comparator for the initiative canceled at date. """ canceledAt: NullableDateComparator """ Comparator for the initiative completed at date. """ completedAt: NullableDateComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the initiative creator must satisfy. """ creator: NullableUserFilter """ Comparator for the initiative's custom identifier. """ customIdentifier: NullableStringComparator """ Comparator for the initiative health: onTrack, atRisk, offTrack """ health: StringComparator """ The initiative’s health after accounting for the age of its latest update and its reminder schedule. Accepts onTrack, atRisk, offTrack, outdated, or noUpdate. """ healthWithAge: StringComparator """ Comparator for the identifier. """ id: EntityIdentifierIDComparator """ Conditions on updates published directly to this initiative. Updates on sub-initiatives are not included in this collection. """ initiativeUpdates: InitiativeUpdatesCollectionFilter """ Filters that the initiative labels must satisfy. """ labels: InitiativeLabelCollectionFilter """ Conditions on the initiative’s own lead team. Use { null: true } to find workspace-level initiatives. """ leadTeam: NullableTeamFilter """ Comparator for the initiative name. """ name: StringComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [InitiativeFilter!] """ Filters that the initiative owner must satisfy. """ owner: NullableUserFilter """ Comparator for the initiative priority. """ priority: NullableNumberComparator """ Conditions on distinct accessible projects linked to this initiative or its sub-initiatives. A project linked through several sub-initiatives is counted once. """ projects: ProjectCollectionFilter """ Comparator for the initiative slug ID. """ slugId: StringComparator """ Comparator for the initiative started at date. """ startedAt: NullableDateComparator """ Comparator for the initiative status: Proposed, Planned, Active, Completed, Canceled """ status: StringComparator """ Comparator for the initiative target date. """ targetDate: NullableDateComparator """ Conditions on teams contributing through projects or lead-team associations. When team initiatives are available, this also accounts for sub-initiative projects and lead teams in the initiative hierarchy. Use leadTeam to filter only the initiative’s own lead team. """ teams: TeamCollectionFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The result of an AI-generated initiative filter suggestion based on a text prompt. """ type InitiativeFilterSuggestionPayload { """ The json filter that is suggested. """ filter: JSONObject """ The log id of the prompt that created this filter. """ logId: String } """ Initiative health sorting options. """ input InitiativeHealthSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Initiative health update date sorting options. """ input InitiativeHealthUpdatedAtSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A group of recorded changes to an initiative, including its properties and hierarchy. The entries JSON contains individual events ordered by event time. A record can gain entries over time, so use the entry timestamps when interpreting individual changes. """ type InitiativeHistory implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The events that happened while recording that history. """ entries: JSONObject! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The initiative that this history record belongs to. """ initiative: Initiative! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type InitiativeHistoryConnection { """ The page's results paired with their cursors. """ edges: [InitiativeHistoryEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [InitiativeHistory!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A result and its pagination cursor. """ type InitiativeHistoryEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: InitiativeHistory! } """ A workspace label for categorizing initiatives. Labels can belong to groups; the group’s selection mode controls how many child labels can be applied together. """ type InitiativeLabel implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ Labels directly contained in this label group. Empty for labels that are not groups. """ children( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned initiative labels. """ filter: InitiativeLabelFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): InitiativeLabelConnection! """ Hex color of the label, such as #EB5757. """ color: String! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the label. """ creator: User """ The label's description. """ description: String """ The selection mode of this label group. Null for regular labels. Groups without a type use single-select behavior. """ groupType: LabelGroupType """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Initiatives associated with the label. """ initiatives( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned initiatives. """ filter: InitiativeFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned initiatives. """ sort: [InitiativeSortInput!] ): InitiativeConnection! """ Whether this is a group of child labels. Groups cannot be applied directly to issues, projects, or initiatives. """ isGroup: Boolean! """ Time the label was last applied to an issue, project, or initiative. Null if it has never been applied. """ lastAppliedAt: DateTime """ The label's name. """ name: String! """ The workspace that the initiative label belongs to. """ organization: Organization! """ The parent label group. Null for labels outside a group. The group’s groupType controls whether multiple children can be applied together. """ parent: InitiativeLabel """ The user who retired the label. Retired labels cannot be applied to new initiatives but remain on existing ones. Null if the label is active. """ retiredBy: User """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ Certain properties of an initiative label. """ type InitiativeLabelChildWebhookPayload { """ The color of the initiative label. """ color: String! """ The ID of the initiative label. """ id: String! """ The name of the initiative label. """ name: String! """ The parent ID of the initiative label. """ parentId: String } """ Filters a related collection of initiative labels. Use some or every to test its members and length to test its size, for example length: { eq: 0 } for an empty collection. Direct property filters act as some only when no collection clause is supplied. """ input InitiativeLabelCollectionFilter { """ All of these collection conditions must match. Each can test a different member of the collection. """ and: [InitiativeLabelCollectionFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the initiative labels creator must satisfy. """ creator: NullableUserFilter """ Filters that needs to be matched by all initiative labels. """ every: InitiativeLabelFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for whether the label is a group label. """ isGroup: BooleanComparator """ The number of related objects, before applying some or every. Use { eq: 0 } to find an empty collection. """ length: NumberComparator """ Comparator for the name. """ name: StringComparator """ True matches an unset label list, which is different from an empty list. Use length: { eq: 0 } to find initiatives without labels. """ null: Boolean """ At least one of these collection conditions must match. """ or: [InitiativeLabelCollectionFilter!] """ Conditions on the label group containing this label. This filters group properties, such as its name, rather than the child label itself. """ parent: InitiativeLabelFilter """ Filters that needs to be matched by some initiative labels. """ some: InitiativeLabelCollectionFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type InitiativeLabelConnection { """ The page's results paired with their cursors. """ edges: [InitiativeLabelEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [InitiativeLabel!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ Input for creating a new initiative label. A name is required. The label is created as a workspace-level label available to all initiatives. """ input InitiativeLabelCreateInput { """ Hex color, such as #EB5757. Defaults to the parent group's color, or #4EA7FC without a parent. Null is not accepted. """ color: String """ Description of the label’s purpose, up to 255 characters. """ description: String """ How children of a label group can be applied to an initiative. singleSelect allows one child; multiSelect allows several. Omission or null uses single-select behavior. This setting applies to groups. """ groupType: LabelGroupType """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ Create a group to hold child labels. Groups cannot be applied directly. Defaults to false. """ isGroup: Boolean """ Label name, from 1 to 80 characters. Emoji are not allowed. """ name: String! """ UUID of an existing label group. Groups cannot be nested inside other groups. """ parentId: String """ Retirement time. Set to create a retired label; omit or pass null for an active label. """ retiredAt: DateTime } """ A result and its pagination cursor. """ type InitiativeLabelEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: InitiativeLabel! } """ Filters initiative labels by name, creator, or parent label group. Supplied conditions must match together; use and and or to combine nested filters. """ input InitiativeLabelFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [InitiativeLabelFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the initiative labels creator must satisfy. """ creator: NullableUserFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for whether the label is a group label. """ isGroup: BooleanComparator """ Comparator for the name. """ name: StringComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [InitiativeLabelFilter!] """ Conditions on the label group containing this label. This filters group properties, such as its name, rather than the child label itself. """ parent: InitiativeLabelFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The result of an initiative label mutation. """ type InitiativeLabelPayload { """ The label that was created or updated. """ initiativeLabel: InitiativeLabel! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Input for updating an existing initiative label. All fields are optional; only provided fields will be updated. """ input InitiativeLabelUpdateInput { """ Hex color, such as #EB5757. Changing a group's color also updates children that shared its previous color. Null is not accepted. """ color: String """ Description of the label’s purpose, up to 255 characters. Null clears the description. """ description: String """ How children of this label group can be applied to an initiative: singleSelect allows one child and multiSelect allows several. Omit to keep the current setting; null uses single-select behavior. """ groupType: LabelGroupType """ Whether the label is a group of child labels. Changing this requires an unused label with no parent or children. Groups cannot be applied directly. """ isGroup: Boolean """ Label name, from 1 to 80 characters. Emoji and null are not accepted. """ name: String """ UUID of an existing label group. Null removes the label from its group. Groups cannot be nested. """ parentId: String """ Retirement time. Set to null to restore the label. Changing a group's retirement state also changes its children; a child cannot be restored while its group is retired. """ retiredAt: DateTime } """ Payload for an initiative label webhook. """ type InitiativeLabelWebhookPayload { """ The time at which the entity was archived. """ archivedAt: String """ The color of the initiative label. """ color: String! """ The time at which the entity was created. """ createdAt: String! """ The creator ID of the initiative label. """ creatorId: String """ The label's description. """ description: String """ The ID of the entity. """ id: String! """ Whether the label is a group. """ isGroup: Boolean! """ The name of the initiative label. """ name: String! """ The parent ID of the initiative label. """ parentId: String """ The time at which the entity was updated. """ updatedAt: String! } """ Initiative manual sorting options. """ input InitiativeManualSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Initiative name sorting options. """ input InitiativeNameSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A notification related to an initiative, such as being added as owner, initiative updates, comments, or mentions. """ type InitiativeNotification implements Entity & Node & Notification { """ 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. """ actor: User """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The bot that caused the notification. """ botActor: ActorBot """ The category of the notification. """ category: NotificationCategory! """ The comment related to the notification. """ comment: Comment """ Related comment ID. Null if the notification is not related to a comment. """ commentId: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The document related to the notification. """ document: Document """ The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent. """ emailedAt: DateTime """ 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. """ externalUserActor: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The initiative related to the notification. """ initiative: Initiative """ Related initiative ID. """ initiativeId: String! """ The initiative update related to the notification. """ initiativeUpdate: InitiativeUpdate """ Related initiative update ID. """ initiativeUpdateId: String """ The parent comment related to the notification, if a notification is a reply comment notification. """ parentComment: Comment """ Related parent comment ID. Null if the notification is not related to a comment. """ parentCommentId: String """ Name of the reaction emoji related to the notification. """ reactionEmoji: String """ The time at which the user marked the notification as read. Null if the notification is unread. """ readAt: DateTime """ 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. """ snoozedUntilAt: DateTime """ Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated. """ type: String! """ The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed. """ unsnoozedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The recipient user of this notification. """ user: User! } """ 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. """ type InitiativeNotificationSubscription implements Entity & Node & NotificationSubscription { """ Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists. """ active: Boolean! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ 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. """ contextViewType: ContextViewType """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The custom view that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ customView: CustomView """ The customer that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ customer: Customer """ The cycle that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ cycle: Cycle """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Whether initiative update notifications also include updates from sub-initiatives. Applies only when initiative updates are enabled and the workspace supports sub-initiatives. """ includeSubInitiativeUpdates: Boolean! """ The initiative subscribed to. """ initiative: Initiative! """ The issue label that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ label: IssueLabel """ The notification event types that this subscription will deliver to the subscriber. """ notificationSubscriptionTypes: [String!]! """ The project that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ project: Project """ The user who will receive notifications from this subscription. """ subscriber: User! """ The team that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ team: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user that this notification subscription is scoped to, for user-specific view subscriptions. Null if the subscription targets a different entity type. """ user: User """ 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. """ userContextViewType: UserContextViewType } """ Initiative owner sorting options. """ input InitiativeOwnerSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ The payload returned by the initiative mutations. """ type InitiativePayload { """ The initiative that was created or updated. """ initiative: Initiative! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Initiative priority sorting options. """ input InitiativePrioritySort { """ Whether to consider no priority as the highest or lowest priority """ noPriorityFirst: Boolean = false """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ 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. """ type InitiativeRelation implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The parent initiative in this hierarchical relation. """ initiative: Initiative! """ The child initiative in this hierarchical relation. """ relatedInitiative: Initiative! """ The sort order of the child initiative within its parent initiative. """ sortOrder: Float! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user who created the parent-child relation. Null if no creator was recorded or the user was deleted. """ user: User } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type InitiativeRelationConnection { """ The page's results paired with their cursors. """ edges: [InitiativeRelationEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [InitiativeRelation!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The parent and child initiatives for a new hierarchy link. Both must be accessible and unarchived, and the workspace must support sub-initiatives. The link cannot create a cycle or exceed the hierarchy’s nesting limit. """ input InitiativeRelationCreateInput { """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The identifier of the parent initiative in the hierarchy. """ initiativeId: String! """ The identifier of the child initiative in the hierarchy. """ relatedInitiativeId: String! """ The sort order of the child initiative within its parent. """ sortOrder: Float } """ A result and its pagination cursor. """ type InitiativeRelationEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: InitiativeRelation! } """ The result of an initiative relation mutation. """ type InitiativeRelationPayload { """ The initiative relation that was created or updated. """ initiativeRelation: InitiativeRelation! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Changes to the ordering of an existing parent-child link. Omit sortOrder to leave it unchanged. The parent and child cannot be changed through this input; create a new relation to move an initiative. """ input InitiativeRelationUpdateInput { """ The sort order of the child initiative within its parent. """ sortOrder: Float } """ Initiative sorting options. """ input InitiativeSortInput { """ Sort by initiative creation date. """ createdAt: InitiativeCreatedAtSort """ Sort by initiative health status. """ health: InitiativeHealthSort """ Sort by initiative health update date. """ healthUpdatedAt: InitiativeHealthUpdatedAtSort """ Sort by manual order. """ manual: InitiativeManualSort """ Sort by initiative name. """ name: InitiativeNameSort """ Sort by initiative owner name. """ owner: InitiativeOwnerSort """ Sort by initiative priority. """ priority: InitiativePrioritySort """ Sort by initiative target date. """ targetDate: InitiativeTargetDateSort """ Sort by initiative update date. """ updatedAt: InitiativeUpdatedAtSort } """ Initiative lifecycle stage, from proposed and planned through active to completed or canceled. """ enum InitiativeStatus { Active Canceled Completed Planned Proposed } """ Different tabs available inside an initiative. """ enum InitiativeTab { overview projects updates } """ Initiative target date sorting options. """ input InitiativeTargetDateSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ The association that includes a project in an initiative and stores its manual ordering there. A project can support multiple initiatives, but cannot be linked to both an initiative and one of its ancestors or descendants. """ type InitiativeToProject implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The initiative that the project is associated with. """ initiative: Initiative! """ The project that the initiative is associated with. """ project: Project! """ The project’s manual position within the initiative, returned as a numeric string. Lower values appear first. """ sortOrder: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type InitiativeToProjectConnection { """ The page's results paired with their cursors. """ edges: [InitiativeToProjectEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [InitiativeToProject!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The project and initiative to link, with an optional position for the project. Both must be active and editable. The project must not already belong to that initiative or to one of its ancestors or descendants. """ input InitiativeToProjectCreateInput { """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The identifier of the initiative. """ initiativeId: String! """ The identifier of the project. """ projectId: String! """ Manual position within the initiative. Lower values appear first; omit or use 0 to append. """ sortOrder: Float } """ A result and its pagination cursor. """ type InitiativeToProjectEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: InitiativeToProject! } """ The result of an initiative-to-project mutation. """ type InitiativeToProjectPayload { """ The initiative-to-project association that was created or updated. """ initiativeToProject: InitiativeToProject! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Changes to a project’s ordering within an initiative. This input does not move the project to another initiative; create or delete associations for that. """ input InitiativeToProjectUpdateInput { """ Manual position within the initiative. Lower values appear first; 0 appends the project. """ sortOrder: Float } """ A published status report for an initiative. It combines a written message and reported health with a snapshot of the initiative’s projects, so readers can see what changed since the previous update. """ type InitiativeUpdate implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The update content in markdown format. """ body: String! """ Number of comments associated with the initiative update. """ commentCount: Int! """ Comments associated with the initiative update. """ comments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned comments. """ filter: CommentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CommentConnection! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Changes between the project snapshots captured by this initiative update and the previous update. These are changes at publication time, rather than changes since your last API request. Null if snapshot data is unavailable. """ diff: JSONObject """ Changes in the initiative's project snapshots since the previous update, in Markdown. Null if snapshot data is unavailable. """ diffMarkdown: String """ The time the update was edited. """ editedAt: DateTime """ The health of the initiative at the time this update was posted. Possible values are onTrack, atRisk, or offTrack. """ health: InitiativeUpdateHealthType! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The initiative that this status update was posted to. """ initiative: Initiative! """ Whether the diff between this update and the previous one should be hidden in the UI. Only used for legacy updates. Not settable in the UI. """ isDiffHidden: Boolean! """ Whether this update's health is outdated based on its age and the initiative's update reminder schedule. """ isStale: Boolean! """ Emoji reaction summary, grouped by emoji type. """ reactionData: JSONObject! """ Reactions associated with the initiative update. """ reactions: [Reaction!]! """ The update's unique URL slug. """ slugId: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The URL to the initiative update. """ url: String! """ The user who wrote the update. """ user: User! } """ The result of archiving or restoring a resource. """ type InitiativeUpdateArchivePayload implements ArchivePayload { """ The resource after the operation, when returned. This can be null when the mutation does not return a resource, including after deletion. Check `success` for the operation's result. """ entity: InitiativeUpdate """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Certain properties of an initiative update. """ type InitiativeUpdateChildWebhookPayload { """ The body of the initiative update. """ bodyData: String! """ The edited at timestamp of the initiative update. """ editedAt: String! """ The health of the initiative update. """ health: String! """ The ID of the initiative update. """ id: String! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type InitiativeUpdateConnection { """ The page's results paired with their cursors. """ edges: [InitiativeUpdateEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [InitiativeUpdate!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The initiative, Markdown message, and optional health for a new status report. The current user becomes the author and the initiative’s projects are captured automatically. Provide body when using the public API. """ input InitiativeUpdateCreateInput { """ Update body in Markdown. Required when creating an update through the public API. """ body: String """ Initiative health reported by this update. Defaults to onTrack. """ health: InitiativeUpdateHealthType """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ UUID of the initiative to post the update to. """ initiativeId: String! """ Whether the diff between the current update and the previous one should be hidden. """ isDiffHidden: Boolean } """ A result and its pagination cursor. """ type InitiativeUpdateEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: InitiativeUpdate! } """ Filters initiative updates by author, initiative, or reactions. Supplied conditions must match together; use and and or to combine nested filters. """ input InitiativeUpdateFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [InitiativeUpdateFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Filters that the initiative update initiative must satisfy. """ initiative: InitiativeFilter """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [InitiativeUpdateFilter!] """ Filters that the initiative updates reactions must satisfy. """ reactions: ReactionCollectionFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator """ Filters that the initiative update creator must satisfy. """ user: UserFilter } """ The health type when the update is created. """ enum InitiativeUpdateHealthType { atRisk offTrack onTrack } """ Initiative fields to change. Omitted fields remain unchanged. """ input InitiativeUpdateInput { """ The initiative's color. """ color: String """ Replacement initiative overview in Markdown. Empty strings, null, and omission leave the existing content unchanged. """ content: String """ The short plain-text summary. Use content for the full Markdown overview. """ description: String """ The unit of updateReminderFrequency: daily or weekly. """ frequencyResolution: FrequencyResolutionType """ The initiative's icon. """ icon: String """ The replacement list of initiative label UUIDs. Use [] to remove all labels, or omit to leave them unchanged. Use initiativeAddLabel or initiativeRemoveLabel when changing one label at a time. """ labelIds: [String!] """ The UUID of the new lead team, which also determines the initiative’s visibility. The owner must be able to access a private or restricted team. Use null to make this a workspace initiative, or omit to keep its current lead team. """ leadTeamId: String """ The name of the initiative. """ name: String """ The UUID of the new initiative owner. The user must be a workspace member, not a guest, and must be able to access a private or restricted lead team. Use null to remove the owner, or omit to keep the current owner. """ ownerId: String """ The priority of the initiative. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. """ priority: Int """ The sort order of the initiative within the workspace, when ordered by priority. """ prioritySortOrder: Float """ The sort order of the initiative within the workspace. """ sortOrder: Float """ The initiative's status. """ status: InitiativeStatus """ Planned completion date in YYYY-MM-DD format. Pass null to clear it. """ targetDate: TimelessDate """ The precision of targetDate: month, quarter, halfYear, or year. Null uses an exact date. """ targetDateResolution: DateResolutionType """ The stored trash flag. This field does not archive or restore the initiative. Use initiativeDelete to move it to the trash and initiativeUnarchive to restore it. """ trashed: Boolean """ The interval between update reminders, in the unit given by frequencyResolution. Null inherits the workspace setting; omit to leave unchanged. """ updateReminderFrequency: Float """ The interval between update reminders in weeks. Null inherits the workspace setting; omit to leave unchanged. """ updateReminderFrequencyInWeeks: Float """ The day of the week on which to prompt for initiative updates. """ updateRemindersDay: Day """ The hour of the day (0-23) at which to prompt for initiative updates. """ updateRemindersHour: Int } """ The result of an initiative update mutation. """ type InitiativeUpdatePayload { """ The initiative update that was created or updated. """ initiativeUpdate: InitiativeUpdate! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ The result of an initiative update reminder mutation. """ type InitiativeUpdateReminderPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Changes to an initiative update. Omitted fields remain unchanged. Only the author or a user with workspace entity management permission can edit it. """ input InitiativeUpdateUpdateInput { """ Replacement update body in Markdown. Pass an empty string to clear it. """ body: String """ The health of the initiative at the time of the update. """ health: InitiativeUpdateHealthType } """ Payload for an initiative update webhook. """ type InitiativeUpdateWebhookPayload { """ The time at which the entity was archived. """ archivedAt: String """ The body of the initiative update. """ body: String! """ The body data of the initiative update. """ bodyData: String! """ The time at which the entity was created. """ createdAt: String! """ The diff between the current update and the previous one, formatted as markdown. """ diffMarkdown: String """ The edited at timestamp of the initiative update. """ editedAt: String! """ The health of the initiative update. """ health: String! """ The ID of the entity. """ id: String! """ The initiative that the initiative update belongs to. """ initiative: InitiativeChildWebhookPayload! """ The initiative id of the initiative update. """ initiativeId: String! """ The reaction data for this initiative update. """ reactionData: JSONObject! """ The slug id of the initiative update. """ slugId: String! """ The time at which the entity was updated. """ updatedAt: String! """ The URL of the initiative update. """ url: String """ The user that created the initiative update. """ user: UserChildWebhookPayload! """ The user id of the initiative update. """ userId: String! } """ Initiative update date sorting options. """ input InitiativeUpdatedAtSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Filters a related collection of initiative updates. Use some or every to test its members and length to test its size, for example length: { eq: 0 } for an empty collection. Direct property filters act as some only when no collection clause is supplied. """ input InitiativeUpdatesCollectionFilter { """ All of these collection conditions must match. Each can test a different member of the collection. """ and: [InitiativeUpdatesCollectionFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that needs to be matched by all initiative updates. """ every: InitiativeUpdatesFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ The number of related objects, before applying some or every. Use { eq: 0 } to find an empty collection. """ length: NumberComparator """ At least one of these collection conditions must match. """ or: [InitiativeUpdatesCollectionFilter!] """ Filters that needs to be matched by some initiative updates. """ some: InitiativeUpdatesFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Filters initiative updates by ID or creation and update timestamps. Supplied conditions must match together; use and and or to combine nested filters. """ input InitiativeUpdatesFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [InitiativeUpdatesFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [InitiativeUpdatesFilter!] """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The visibility of an initiative. Derived from its lead team; public when no lead team is assigned. """ enum InitiativeVisibility { private public restricted } """ Payload for an initiative webhook. """ type InitiativeWebhookPayload { """ The time at which the entity was archived. """ archivedAt: String """ When the initiative was canceled. """ canceledAt: String """ The color of the initiative. """ color: String """ When the initiative was completed. """ completedAt: String """ The time at which the entity was created. """ createdAt: String! """ The user who created the initiative. """ creator: UserChildWebhookPayload """ The ID of the user who created the initiative. """ creatorId: String """ The description of the initiative. """ description: String! """ The resolution of the update reminder frequency. """ frequencyResolution: String! """ The health status of the initiative. """ health: String """ When the health status was last updated. """ healthUpdatedAt: String """ The icon of the initiative. """ icon: String """ The ID of the entity. """ id: String! """ The human-readable identifier of the initiative. """ identifier: String """ The IDs of the initiative labels associated with this initiative. """ labelIds: [String!]! """ The last update for this initiative. """ lastUpdate: InitiativeUpdateChildWebhookPayload """ The ID of the last update for this initiative. """ lastUpdateId: String """ The ID of the team that leads the initiative. """ leadTeamId: String """ The name of the initiative. """ name: String! """ The ID of the organization this initiative belongs to. """ organizationId: String! """ The user who owns the initiative. """ owner: UserChildWebhookPayload """ The ID of the user who owns the initiative. """ ownerId: String """ The parent initiative associated with the initiative. """ parentInitiative: InitiativeChildWebhookPayload """ The parent initiatives associated with the initiative. """ parentInitiatives: [InitiativeChildWebhookPayload!] """ Previous identifiers of the initiative. """ previousIdentifiers: [String!] """ The priority of the initiative. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. """ priority: Float! """ The projects associated with the initiative. """ projects: [ProjectChildWebhookPayload!] """ The unique slug identifier of the initiative. """ slugId: String! """ The sort order of the initiative within the organization. """ sortOrder: Float! """ When the initiative was started. """ startedAt: String """ The current status of the initiative. """ status: String! """ The sub-initiatives associated with the initiative. """ subInitiatives: [InitiativeChildWebhookPayload!] """ The target date of the initiative. """ targetDate: String """ The resolution of the target date. """ targetDateResolution: String """ Whether the initiative is trashed. """ trashed: Boolean """ The frequency of update reminders. """ updateReminderFrequency: Float """ The frequency of update reminders in weeks. """ updateReminderFrequencyInWeeks: Float """ The day of the week for update reminders. """ updateRemindersDay: Float """ The hour of the day for update reminders. """ updateRemindersHour: Float """ The time at which the entity was updated. """ updatedAt: String! """ The URL of the initiative. """ url: String! } """ A configured connection between Linear and an external service. The service value distinguishes workspace connections, personal account connections, and destinations such as Slack notification channels. Connections can belong to a workspace, user, team, project, initiative, or view; the same provider can therefore have several integration records with different purposes. """ type Integration implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user that added the integration. """ creator: User! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The workspace that the integration is associated with. """ organization: Organization! """ Service and connection type, such as slack, slackPersonal, github, or jira. """ service: String! """ Team that owns the connection. Null for connections scoped to the workspace, a user, or another resource. """ team: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ Integration actor payload for webhooks. """ type IntegrationActorWebhookPayload { """ The ID of the integration. """ id: String! """ The service of the integration. """ service: String! """ The type of actor. """ type: String! } """ Certain properties of an integration. """ type IntegrationChildWebhookPayload { """ The ID of the integration. """ id: String! """ The service of the integration. """ service: String! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type IntegrationConnection { """ The page's results paired with their cursors. """ edges: [IntegrationEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Integration!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A result and its pagination cursor. """ type IntegrationEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Integration! } """ Next step after removing GitHub code access. """ type IntegrationGithubRemoveCodeAccessPayload { """ Done if code access was removed; InstallBasicApp if the caller must complete the basic GitHub App installation flow. """ action: GitHubRemoveCodeAccessAction! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! } """ Result of comparing requested scopes with the scopes stored for an integration. This does not contact the provider or test whether its token is still valid. """ type IntegrationHasScopesPayload { """ Whether the integration has the required scopes. """ hasAllScopes: Boolean! """ Requested scopes not recorded on the integration. Empty when all requested scopes are present. """ missingScopes: [String!] } """ Result of an integration operation. Check success and any service-specific details before continuing setup. The integration can be absent on success, for example when the operation only disconnects a service or schedules work. """ type IntegrationPayload { """ GitHub-specific details for the operation. Populated by GitHub-related mutations only. """ gitHub: GitHubIntegrationConnectDetails """ The integration that was created or updated. """ integration: Integration """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Input for requesting a currently unavailable integration. """ input IntegrationRequestInput { """ Optional email address. Currently unused. """ email: String """ Name of the requested integration. """ name: String! } """ The result of an integration request mutation. """ type IntegrationRequestPayload { """ Whether the operation was successful. """ success: Boolean! } """ Linear supported integration services. """ enum IntegrationService { airbyte asksWeb claudeSecurity datadog discord email figma figmaPlugin front github githubCodeAccessPersonal githubCommit githubEnterpriseServer githubImport githubPersonal gitlab gitlabPersonal gong googleCalendarPersonal googleSheets intercom jira jiraPersonal launchDarkly launchDarklyPersonal loom mcpServer mcpServerPersonal microsoftPersonal microsoftTeams microsoftTeamsProjectPost notion opsgenie origin pagerDuty salesforce sentry slack slackAsks slackCustomViewNotifications slackInitiativePost slackOrgInitiativeUpdatesPost slackOrgProjectUpdatesPost slackPersonal slackPost slackProjectPost slackProjectUpdatesPost zendesk } """ Slack workspace name refreshed from Slack. """ type IntegrationSlackWorkspaceNamePayload { """ The current name of the Slack workspace. """ name: String! """ Whether the operation was successful. """ success: Boolean! } """ A link that makes an existing issue template available through an integration. foreignEntityId can restrict the link to a provider resource such as a Slack channel. This record does not copy the template; removing the link leaves the template and integration in place. """ type IntegrationTemplate implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ External resource that can use the template, such as a Slack channel ID. Null when the link has no resource scope. """ foreignEntityId: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The integration that the template is associated with. """ integration: Integration! """ Issue template used when the integration creates an issue. """ template: Template! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type IntegrationTemplateConnection { """ The page's results paired with their cursors. """ edges: [IntegrationTemplateEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [IntegrationTemplate!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ Links an existing issue template to an integration. Slack Asks requires foreignEntityId to identify a configured intake destination and only accepts team templates. Intercom, Slack, Zendesk, and Salesforce also accept workspace templates, with up to ten linked templates per integration. """ input IntegrationTemplateCreateInput { """ External resource ID, from 1 to 255 characters. Slack Asks requires a channel already connected to the integration. """ foreignEntityId: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The identifier of the integration. """ integrationId: String! """ The identifier of the template. """ templateId: String! } """ A result and its pagination cursor. """ type IntegrationTemplateEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: IntegrationTemplate! } """ The result of an integration template mutation. """ type IntegrationTemplatePayload { """ The link created between the template and integration. """ integrationTemplate: IntegrationTemplate! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Notification preferences for one team, project, initiative, or custom view. These settings decide which events are sent through that destination's Slack or Microsoft Teams connection; they do not establish the connection themselves. A team can also have separate preferences for a particular context view. """ type IntegrationsSettings implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The team view these preferences apply to. Null for settings without a specific team view. """ contextViewType: ContextViewType """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The initiative these settings apply to. Null for another destination type. """ initiative: Initiative """ Whether to send a Microsoft Teams message when a project update is created. """ microsoftTeamsProjectUpdateCreated: Boolean """ The project these settings apply to. Null for another destination type. """ project: Project """ Whether to send a Slack message when a top-level initiative comment is created. New settings default to true. Existing unset settings inherit the initiative update preference until first edited. """ slackInitiativeCommentCreated: Boolean """ Whether to send a Slack message when an initiative update is created. """ slackInitiativeUpdateCreated: Boolean """ Whether to send a Slack message when a new issue is added to triage. """ slackIssueAddedToTriage: Boolean """ Whether to send a Slack message when an issue enters the associated team or custom view. """ slackIssueAddedToView: Boolean """ Whether to send a Slack message when a new issue is created for the project or the team. """ slackIssueCreated: Boolean @deprecated(reason: "No longer in use. Use `slackIssueAddedToView` instead.") """ Whether to send a Slack message when a comment is created on any of the project or team's issues. """ slackIssueNewComment: Boolean """ Whether to send a Slack message when an SLA is breached. """ slackIssueSlaBreached: Boolean """ Whether to send a Slack message when an SLA is at high risk. """ slackIssueSlaHighRisk: Boolean """ Whether to send a Slack message when any of the project or team's issues has a change in status. """ slackIssueStatusChangedAll: Boolean """ Whether to send a Slack message when any of the project or team's issues change to completed or canceled. """ slackIssueStatusChangedDone: Boolean """ Whether to send a Slack message when a top-level project comment is created. New settings default to true. Existing unset settings inherit the project update preference until first edited. """ slackProjectCommentCreated: Boolean """ Whether to send a Slack message when a project update is created. """ slackProjectUpdateCreated: Boolean """ Whether to send a new project update to team Slack channels. """ slackProjectUpdateCreatedToTeam: Boolean """ Whether to send a new project update to workspace Slack channel. """ slackProjectUpdateCreatedToWorkspace: Boolean """ The team these settings apply to. Null for another destination type. """ team: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ Creates notification preferences for exactly one destination: teamId, projectId, initiativeId, or customViewId. Supply booleans for the events you want to enable; null is not accepted. contextViewType can further scope team settings. These preferences need a connected integration to deliver messages and do not create a Slack or Microsoft Teams connection. """ input IntegrationsSettingsCreateInput { """ The team view these settings apply to. Requires teamId; omit for general team settings. """ contextViewType: ContextViewType """ The identifier of the custom view to create settings for. """ customViewId: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The identifier of the initiative to create settings for. """ initiativeId: String """ Whether to send a Microsoft Teams message when a project update is created. """ microsoftTeamsProjectUpdateCreated: Boolean """ The identifier of the project to create settings for. """ projectId: String """ Whether to send a Slack message when a top-level initiative comment is created. """ slackInitiativeCommentCreated: Boolean """ Whether to send a Slack message when an initiative update is created. """ slackInitiativeUpdateCreated: Boolean """ Whether to send a Slack message when a new issue is added to triage. """ slackIssueAddedToTriage: Boolean """ Whether to send a Slack message when an issue is added to a view. """ slackIssueAddedToView: Boolean """ Whether to send a Slack message when a new issue is created for the project or the team. """ slackIssueCreated: Boolean """ Whether to send a Slack message when a comment is created on any of the project or team's issues. """ slackIssueNewComment: Boolean """ Whether to send a Slack message when an SLA is breached. """ slackIssueSlaBreached: Boolean """ Whether to send a Slack message when an SLA is at high risk. """ slackIssueSlaHighRisk: Boolean """ Whether to send a Slack message when any of the project or team's issues has a change in status. """ slackIssueStatusChangedAll: Boolean """ Whether to send a Slack message when any of the project or team's issues change to completed or canceled. """ slackIssueStatusChangedDone: Boolean """ Whether to send a Slack message when a top-level project comment is created. """ slackProjectCommentCreated: Boolean """ Whether to send a Slack message when a project update is created. """ slackProjectUpdateCreated: Boolean """ Whether to send new project updates to the linked team Slack channels. """ slackProjectUpdateCreatedToTeam: Boolean """ Whether to send new project updates to the linked workspace Slack channel. """ slackProjectUpdateCreatedToWorkspace: Boolean """ The identifier of the team to create settings for. """ teamId: String } """ The created or updated integration notification preferences. """ type IntegrationsSettingsPayload { """ The settings that were created or updated. """ integrationsSettings: IntegrationsSettings! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Changes selected notification preferences on an existing settings record. Send true to enable an event or false to disable it; omitted fields keep their current values and null is not accepted. The destination cannot be changed through this input. """ input IntegrationsSettingsUpdateInput { """ Whether to send a Microsoft Teams message when a project update is created. """ microsoftTeamsProjectUpdateCreated: Boolean """ Whether to send a Slack message when a top-level initiative comment is created. """ slackInitiativeCommentCreated: Boolean """ Whether to send a Slack message when an initiative update is created. """ slackInitiativeUpdateCreated: Boolean """ Whether to send a Slack message when a new issue is added to triage. """ slackIssueAddedToTriage: Boolean """ Whether to send a Slack message when an issue is added to a view. """ slackIssueAddedToView: Boolean """ Whether to send a Slack message when a new issue is created for the project or the team. """ slackIssueCreated: Boolean """ Whether to send a Slack message when a comment is created on any of the project or team's issues. """ slackIssueNewComment: Boolean """ Whether to send a Slack message when an SLA is breached. """ slackIssueSlaBreached: Boolean """ Whether to send a Slack message when an SLA is at high risk. """ slackIssueSlaHighRisk: Boolean """ Whether to send a Slack message when any of the project or team's issues has a change in status. """ slackIssueStatusChangedAll: Boolean """ Whether to send a Slack message when any of the project or team's issues change to completed or canceled. """ slackIssueStatusChangedDone: Boolean """ Whether to send a Slack message when a top-level project comment is created. """ slackProjectCommentCreated: Boolean """ Whether to send a Slack message when a project update is created. """ slackProjectUpdateCreated: Boolean """ Whether to send new project updates to the linked team Slack channels. """ slackProjectUpdateCreatedToTeam: Boolean """ Whether to send new project updates to the linked workspace Slack channel. """ slackProjectUpdateCreatedToWorkspace: Boolean } """ Settings for notifications and issue intake through Intercom. Omitted fields stay unchanged on update. """ input IntercomSettingsInput { """ Whether a ticket should be automatically reopened when its linked Linear issue is canceled. """ automateTicketReopeningOnCancellation: Boolean """ Whether a ticket should be automatically reopened when a comment is posted on its linked Linear issue """ automateTicketReopeningOnComment: Boolean """ Whether a ticket should be automatically reopened when its linked Linear issue is completed. """ automateTicketReopeningOnCompletion: Boolean """ Whether a ticket should be automatically reopened when its linked Linear project is canceled. """ automateTicketReopeningOnProjectCancellation: Boolean """ Whether a ticket should be automatically reopened when its linked Linear project is completed. """ automateTicketReopeningOnProjectCompletion: Boolean """ [ALPHA] Whether customer and customer requests should not be automatically created when conversations are linked to a Linear issue. """ disableCustomerRequestsAutoCreation: Boolean """ Whether Linear Agent should be enabled for this integration. """ enableAiIntake: Boolean """ Whether Linear Agent should process supported attachments from Intercom conversations during AI intake. When false, attachments are omitted from the prompt. """ enableAiIntakeAttachmentProcessing: Boolean """ Whether an internal message should be added when someone comments on an issue. """ sendNoteOnComment: Boolean """ Whether an internal message should be added when a Linear issue changes status (for status types except completed or canceled). """ sendNoteOnStatusChange: Boolean } """ An issue is a work item owned by a team, with a title and a status in that team’s workflow. Use projects to group related work, cycles to plan when to work on it, and parent issues to organize sub-issues. The UUID stays the same when an issue moves between teams; its human-readable identifier changes. """ type Issue implements Node { """ The time the issue was added to its current cycle. Changes when the cycle changes, and is null when the issue has no cycle. """ addedToCycleAt: DateTime """ The time the issue was added to its current project. Changes when the project changes, and is null when the issue has no project. """ addedToProjectAt: DateTime """ The time the issue was created in or moved to its current team. Use this to distinguish a team move from the issue’s original creation time. """ addedToTeamAt: DateTime """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The external user who requested creation of the Asks issue on behalf of the creator. """ asksExternalUserRequester: ExternalUser """ The internal user who requested creation of the Asks issue on behalf of the creator. """ asksRequester: User """ The user to whom the issue is assigned. Null if the issue is unassigned. """ assignee: User """ Attachments associated with the issue. """ attachments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned attachments. """ filter: AttachmentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): AttachmentConnection! """ The time the issue was automatically archived under the team’s inactivity settings. Null if it was not auto-archived or has since been restored. """ autoArchivedAt: DateTime """ The time the issue was automatically closed after inactivity. Null if it has not been auto-closed or its status has changed since then. """ autoClosedAt: DateTime """ The order of the item in its column on the board. """ boardOrder: Float! @deprecated(reason: "Will be removed in near future, please use `sortOrder` instead") """ The bot that created the issue, if applicable. """ botActor: ActorBot """ A suggested Git branch name based on the issue’s identifier and title and your branch naming preferences. This generates a name; it does not create a branch in a repository. """ branchName: String! """ Time the issue entered a canceled or duplicate status. Cleared when it leaves those status types. """ canceledAt: DateTime """ The issue’s direct sub-issues that you can access. Use each child’s children field to read deeper levels of the hierarchy; this connection does not flatten the full tree. """ children( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueConnection! """ Comments associated with the issue, including replies and inline comments on its description. Use each comment’s parent and children fields to reconstruct discussion threads. """ comments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned comments. """ filter: CommentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CommentConnection! """ Time the issue entered a completed status. Null when it is not completed. """ completedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ 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. """ creator: User """ Number of linked attachments from supported customer support ticket systems. """ customerTicketCount: Int! """ The cycle that the issue is associated with. Null if the issue is not part of any cycle. """ cycle: Cycle """ The agent delegated to work on the issue. Null if no agent is delegated. """ delegate: User """ The issue’s description as Markdown, or null if no description is stored. Use this field to read the content and IssueUpdateInput.description to replace it. """ description: String """ [ALPHA] The document content representing this issue description. """ documentContent: DocumentContent """ Documents associated with the issue. """ documents( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned documents. """ filter: DocumentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): DocumentConnection! """ Due date in YYYY-MM-DD format, without a time or time zone. Null if no due date is set. """ dueDate: TimelessDate """ The numeric estimate in the team’s configured scale. For T-shirt estimates, the stored values 1, 2, 3, 5, and 8 correspond to XS through XL, with 13 and 21 for extended sizes. Zero is an explicit estimate; null means the issue has not been estimated. """ estimate: Float """ 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. """ externalUserCreator: ExternalUser """ The caller’s favorite for this issue. Null if the caller has not favorited it. """ favorite: Favorite """ Attachments previously associated with the issue before being moved to another issue. """ formerAttachments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned attachments. """ filter: AttachmentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): AttachmentConnection! """ Customer needs previously associated with the issue before being moved to another issue. """ formerNeeds( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned needs. """ filter: CustomerNeedFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CustomerNeedConnection! """ Changes recorded for this issue, including updates to its properties and relations. Each entry contains only the changes it records, with previous and new values where available. """ history( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueHistoryConnection! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The issue’s current human-readable identifier, such as ENG-123. It changes when the issue moves to another team; use id when you need a stable identifier. """ identifier: String! """ Whether this issue inherits shared access from its parent issue. """ inheritsSharedAccess: Boolean! """ The integration service recorded as the source of this issue. Null when no integration source is recorded; this does not indicate whether the issue is currently syncing with an external service. """ integrationSourceType: IntegrationService """ Relations whose target is this issue. For a blocks relation, the source issue blocks this issue; combine these with relations to read all links involving the issue. """ inverseRelations( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueRelationConnection! """ The UUIDs of labels assigned to the issue. Use labels to read their names, colors, and groups, or use these IDs when comparing or updating label assignments. """ labelIds: [String!]! """ Labels associated with this issue. """ labels( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issue labels. """ filter: IssueLabelFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueLabelConnection! """ The most recently applied issue template. This records where the issue’s defaults came from; subsequent edits to the template do not replace the issue’s current values. Null if no template is recorded or it was deleted. """ lastAppliedTemplate: Template """ Customer needs associated with the issue. """ needs( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned needs. """ filter: CustomerNeedFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CustomerNeedConnection! """ The issue’s number within its current team. Combine it with the team key to form an identifier such as ENG-123, or read the identifier field directly. Numbers are not necessarily consecutive. """ number: Float! """ The parent issue. Null if this is a top-level issue or the parent is inaccessible. """ parent: Issue """ Identifiers the issue used before it moved between teams. Use identifier for its current identifier and id for a UUID that remains stable across team moves. """ previousIdentifiers: [String!]! """ The priority of the issue. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. """ priority: Float! """ Display name for priority: No priority, Urgent, High, Medium, or Low. """ priorityLabel: String! """ The issue’s position within its priority group, with lower values first. This order is separate from sortOrder, which is used for other manually sorted lists. """ prioritySortOrder: Float! """ The project that the issue is associated with. Null if the issue is not part of any project. """ project: Project """ Milestone within the issue’s project. Null if no milestone is assigned. """ projectMilestone: ProjectMilestone """ Emoji reaction summary for the issue, grouped by emoji type. Contains the count and reacting user information for each emoji. """ reactionData: JSONObject! """ Reactions associated with the issue. """ reactions: [Reaction!]! """ The recurring template that created the issue. Null if none is recorded or the template was deleted. """ recurringIssueTemplate: Template """ Relations whose source is this issue. For a blocks relation, this issue blocks relatedIssue; also read inverseRelations to find relations pointing to this issue. """ relations( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueRelationConnection! """ Releases associated with the issue. """ releases( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned releases. """ filter: ReleaseFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ReleaseConnection! """ Shared access metadata for this issue. """ sharedAccess: IssueSharedAccess! """ Deadline after which the current SLA is breached. Null if no SLA is set. """ slaBreachesAt: DateTime """ Time the current SLA enters high risk. Null if no SLA is set. """ slaHighRiskAt: DateTime """ Time the current SLA enters medium risk. Null if no SLA is set. """ slaMediumRiskAt: DateTime """ Time the current SLA started. Null if no SLA is set. """ slaStartedAt: DateTime """ How SLA days are counted: all for calendar days, or onlyBusinessDays for the team’s working days. """ slaType: String """ The user who last snoozed the issue in triage. Null if no snoozing user is recorded, the snooze was cleared, or the user was deleted. """ snoozedBy: User """ Time until which the issue is hidden from triage. Null if it is not snoozed. """ snoozedUntilAt: DateTime """ The issue’s position in manually sorted lists, with lower values first. Use a value between two neighboring issues to place it between them; Linear may adjust positions to avoid collisions. """ sortOrder: Float! """ The comment from which this issue was created. Null if none is recorded or the comment was deleted. """ sourceComment: Comment """ Time the issue entered a started status. Cleared when moved back to triage, backlog, or an unstarted status. """ startedAt: DateTime """ Time the issue most recently entered triage. Null if it has never entered triage. """ startedTriageAt: DateTime """ The issue’s current status in its team’s workflow. The status name is customizable; its type identifies the workflow category, such as started or completed. """ state: WorkflowState! """ The periods the issue spent in each status, ordered from oldest to newest. Re-entering a status creates a new interval; an interval with no endedAt is still open. Use last to fetch the most recent intervals. """ stateHistory( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int ): IssueStateSpanConnection! """ The issue’s position among its parent’s direct sub-issues, with lower values first. Null for top-level issues. This order is independent of the issue’s position in team lists. """ subIssueSortOrder: Float """ Users who are subscribed to the issue. """ subscribers( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned subscribers. """ filter: UserFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Include disabled and suspended accounts. Defaults to false. """ includeDisabled: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): UserConnection! """ The external services the issue is synced with. """ syncedWith: [ExternalEntityInfo!] """ The team that owns the issue. Its settings determine the available statuses, estimation scale, and cycle schedule. """ team: Team! """ The issue title. """ title: String! """ Whether the issue is in the trash: true for a trashed issue, null otherwise. Trashed issues are also archived and are scheduled for permanent deletion after the grace period. """ trashed: Boolean """ Time the issue last left triage. Null before triage is completed or after re-entering triage. """ triagedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The URL for opening this issue in Linear. Access to the page still depends on the viewer’s workspace and issue permissions. """ url: String! } """ The result of archiving or restoring a resource. """ type IssueArchivePayload implements ArchivePayload { """ The resource after the operation, when returned. This can be null when the mutation does not return a resource, including after deletion. Check `success` for the operation's result. """ entity: Issue """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ An issue assignment notification type. """ scalar IssueAssignedToYouNotificationType """ Payload for an issue assigned to you notification. """ type IssueAssignedToYouNotificationWebhookPayload { """ The actor who caused the notification. """ actor: UserChildWebhookPayload """ The ID of the actor who caused the notification. """ actorId: String """ The time at which the entity was archived. """ archivedAt: String """ The time at which the entity was created. """ createdAt: String! """ The ID of the external user who caused the notification. """ externalUserActorId: String """ The ID of the entity. """ id: String! """ The issue this notification belongs to. """ issue: IssueWithDescriptionChildWebhookPayload! """ The ID of the issue this notification belongs to. """ issueId: String! """ An issue assigned to you notification type. """ type: IssueAssignedToYouNotificationType! """ The time at which the entity was updated. """ updatedAt: String! """ The ID of the user who received the notification. """ userId: String! } """ The issues to create together in one request, from one to 50 issues. If one creation fails, the entire batch is rolled back. To create a parent and its sub-issues together, give the parent an id and place it before inputs that reference that id. """ input IssueBatchCreateInput { """ The issues to create, in creation order. Put parents before their sub-issues so each parent exists when its children are created. """ issues: [IssueCreateInput!]! } """ The result of creating or updating a batch of issues. The issues array contains the resulting issues, so you can read assigned identifiers and any values set by team defaults. """ type IssueBatchPayload { """ The issues created or updated by the operation. """ issues: [Issue!]! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Certain properties of an issue. """ type IssueChildWebhookPayload { """ The ID of the issue. """ id: String! """ The identifier of the issue. """ identifier: String! """ The ID of the team that the issue belongs to. """ team: TeamChildWebhookPayload! """ The ID of the team that the issue belongs to. """ teamId: String! """ The title of the issue. """ title: String! """ The URL of the issue. """ url: String! } """ Conditions on a collection of issues. Use some to require a matching item, every to check the whole collection, or length to check its size. Direct issue fields act as some only when no and, or, some, every, or length clause is supplied. """ input IssueCollectionFilter { """ Comparator for the issue's accumulatedStateUpdatedAt date. """ accumulatedStateUpdatedAt: NullableDateComparator """ Filters that the issue's activities must satisfy. """ activity: ActivityCollectionFilter """ Conditions on when the issue joined its current cycle. Changing cycles resets this time; removing the cycle clears it. """ addedToCycleAt: NullableDateComparator """ Conditions on when the issue joined its cycle. before includes the cycle’s first 24 hours; during covers the remaining time before closure, and after covers times at or after closure. """ addedToCyclePeriod: CyclePeriodComparator """ Age (created -> now) comparator, defined if the issue is still open. """ ageTime: NullableDurationComparator """ Collection conditions that must all match. Different some branches can be satisfied by different issues. """ and: [IssueCollectionFilter!] """ Conditions on when the issue was archived. Also set includeArchived on the query; a filter alone does not include records excluded by the query’s archive setting. """ archivedAt: NullableDateComparator """ Conditions on the assigned user. For example, null: true finds unassigned issues, while id: { eq: "user-uuid" } selects one assignee. """ assignee: NullableUserFilter """ Conditions on the issue’s external links. For example, some with a URL or sourceType condition finds issues with at least one matching attachment. """ attachments: AttachmentCollectionFilter """ Conditions on when the issue was automatically archived. Include archived issues in the query to find them; restoring an issue clears this value. """ autoArchivedAt: NullableDateComparator """ Conditions on when the issue was automatically closed after inactivity. The value is cleared when its status changes. """ autoClosedAt: NullableDateComparator """ Conditions on when the issue entered a canceled or duplicate status. The value is cleared when the issue leaves those status types. """ canceledAt: NullableDateComparator """ Conditions on direct sub-issues. Use some for a matching child, every for all children, or length to count them. This does not search all descendants recursively. """ children: IssueCollectionFilter """ Conditions on comments linked directly to the issue, including replies. Inline comments on the issue description are linked through documentContent and are not included by this filter. """ comments: CommentCollectionFilter """ Conditions on the recorded completion time. Use null: false to require a completion time, or a date range to find issues completed during that period. """ completedAt: NullableDateComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the issues creator must satisfy. """ creator: NullableUserFilter """ Conditions on the number of distinct customers with active requests linked to the issue. Requests without a customer record each count separately. Supply one comparison; to apply a range, put separate customerCount conditions in and. """ customerCount: NumberComparator """ Conditions on the number of distinct customers with active, important requests linked to the issue. Important requests without a customer record each count separately. Supply one comparison; to apply a range, put separate customerImportantCount conditions in and. """ customerImportantCount: NumberComparator """ Conditions on the assigned cycle. Use null: true for issues without a cycle or whose team has cycles disabled. Use null: false to require an assigned cycle on a team with cycles enabled. Other cycle comparisons do not require cycles to be enabled. """ cycle: NullableCycleFilter """ Cycle time (started -> completed) comparator. """ cycleTime: NullableDurationComparator """ Filters that the issue's delegated agent must satisfy. """ delegate: NullableUserFilter """ Conditions on the issue’s stored description text. Use null to find issues without a stored description, or text comparisons to match its contents. """ description: NullableStringComparator """ Conditions on the due date, without a time of day. Use null: true for issues without a due date. """ dueDate: NullableTimelessDateComparator """ Conditions on the stored numeric estimate in the team’s scale. Use null to find unestimated issues; zero is a separate, explicit estimate. """ estimate: EstimateComparator """ Requires at least one related issue and requires every related issue to match these conditions. Use length: { eq: 0 } to find an empty collection. """ every: IssueFilter """ Comparator for filtering issues bucketed as having active agent sessions, no closed agent pull requests, and no merged agent pull requests. """ hasActiveAgentSessions: RelationExistsComparator """ Whether another issue blocks this issue, with both issues still open. A link with a closed issue counts under hasRelatedRelations instead. """ hasBlockedByRelations: RelationExistsComparator """ Whether this issue blocks another issue, with both issues still open. A link with a closed issue counts under hasRelatedRelations instead. """ hasBlockingRelations: RelationExistsComparator """ Comparator for filtering issues bucketed as having all agent sessions dismissed or closed, and no merged agent pull requests. """ hasDismissedAgentSessions: RelationExistsComparator """ Whether other issues have been marked as duplicates of this issue. This checks incoming duplicate links, not whether this issue is itself a duplicate. """ hasDuplicateRelations: RelationExistsComparator """ Comparator for filtering issues bucketed as having an errored agent session, no active sessions, and no merged agent pull requests. """ hasErroredAgentSessions: RelationExistsComparator """ Comparator for filtering issues which have agent-session-linked pull requests that were merged. """ hasMergedAgentPullRequests: RelationExistsComparator """ Whether the issue has a related link in either direction. Blocking links also count as related when either issue is closed; open blocking relationships are covered by hasBlockingRelations and hasBlockedByRelations. """ hasRelatedRelations: RelationExistsComparator """ Comparator for filtering issues which have been shared with users outside of the team. """ hasSharedUsers: RelationExistsComparator """ Comparator for filtering issues which have suggested assignees. """ hasSuggestedAssignees: RelationExistsComparator """ Comparator for filtering issues which have suggested labels. """ hasSuggestedLabels: RelationExistsComparator """ Comparator for filtering issues which have suggested projects. """ hasSuggestedProjects: RelationExistsComparator """ Comparator for filtering issues which have suggested related issues. """ hasSuggestedRelatedIssues: RelationExistsComparator """ Comparator for filtering issues which have suggested similar issues. """ hasSuggestedSimilarIssues: RelationExistsComparator """ Comparator for filtering issues which have suggested teams. """ hasSuggestedTeams: RelationExistsComparator """ Matches the issue UUID or human-readable identifier, such as ENG-123. Use number with a team filter when matching only the numeric portion. """ id: IssueIDComparator """ Conditions on assigned labels. Use some for at least one matching label, every to constrain all labels, or length: { eq: 0 } for unlabeled issues. Separate some conditions in and can require different labels on the same issue. """ labels: IssueLabelCollectionFilter """ Filters that the last applied template must satisfy. """ lastAppliedTemplate: NullableTemplateFilter """ Lead time (created -> completed) comparator. """ leadTime: NullableDurationComparator """ Conditions on the total number of related issues, independent of some or every. Use eq: 0 to find an empty collection. """ length: NumberComparator """ Conditions on customer requests linked to the issue. Use some to require a matching request or length to count linked requests. """ needs: CustomerNeedCollectionFilter """ Matches the issue number within its team. Numbers are not unique across teams, so combine this with team when looking for a specific issue. """ number: NumberComparator """ Alternative collection conditions; at least one must match. Other collection clauses at this level still apply. An empty list adds no condition. """ or: [IssueCollectionFilter!] """ Conditions on the immediate parent issue. Use null: true to find top-level issues, or an ID condition to find direct sub-issues of one parent. """ parent: NullableIssueFilter """ Conditions on the numeric priority: 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. Lower nonzero values mean higher priority. """ priority: NullableNumberComparator """ Conditions on the assigned project. Use null: true for issues without a project; otherwise the project must match the supplied conditions. """ project: NullableProjectFilter """ Filters that the issues project milestone must satisfy. """ projectMilestone: NullableProjectMilestoneFilter """ Conditions on emoji reactions added directly to the issue. Reactions on its comments are filtered through comments.reactions. """ reactions: ReactionCollectionFilter """ [ALPHA] Filters that the recurring issue template must satisfy. """ recurringIssueTemplate: NullableTemplateFilter """ Conditions on releases linked to the issue. An issue can belong to several releases; use some to require a matching release or length to count them. """ releases: ReleaseCollectionFilter """ Comparator for the issues content. """ searchableContent: ContentComparator """ Filters that users the issue has been shared with must satisfy. """ sharedWith: UserCollectionFilter """ Conditions on the SLA deadline. A deadline before now does not by itself mean the SLA was missed; use slaStatus to distinguish unfinished breaches from completed outcomes. """ slaBreachesAt: NullableDateComparator """ Conditions on the current SLA risk or outcome. Use null: true for issues without an SLA status, including canceled issues and issues without an SLA. """ slaStatus: SlaStatusComparator """ Filters that the issues snoozer must satisfy. """ snoozedBy: NullableUserFilter """ Conditions on when the issue’s triage snooze ends. Use null: true for issues without a recorded snooze time. """ snoozedUntilAt: NullableDateComparator """ Requires at least one related issue to match these conditions. An empty collection does not match. """ some: IssueFilter """ Filters that the source must satisfy. """ sourceMetadata: SourceMetadataComparator """ Conditions on when work started. Use null: true for issues with no recorded start time; moving back to triage, backlog, or an unstarted status clears it. """ startedAt: NullableDateComparator """ Conditions on the issue’s current status. Filter by type, such as started or completed, to match the same workflow category across teams with different status names and IDs. """ state: WorkflowStateFilter """ Filters that issue subscribers must satisfy. """ subscribers: UserCollectionFilter """ Filters that the issue's suggestions must satisfy. """ suggestions: IssueSuggestionCollectionFilter """ Filters that the issues team must satisfy. """ team: TeamFilter """ Conditions on the issue title. This does not search descriptions or comments. """ title: StringComparator """ Triage time (entered triaged -> triaged) comparator. """ triageTime: NullableDurationComparator """ Conditions on when the issue last left triage. The value is unset before triage is completed and after re-entering triage. """ triagedAt: NullableDateComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ An issue comment mention notification type. """ scalar IssueCommentMentionNotificationType """ Payload for an issue comment mention notification. """ type IssueCommentMentionNotificationWebhookPayload { """ The actor who caused the notification. """ actor: UserChildWebhookPayload """ The ID of the actor who caused the notification. """ actorId: String """ The time at which the entity was archived. """ archivedAt: String """ The comment this notification belongs to. """ comment: CommentChildWebhookPayload! """ The ID of the comment this notification belongs to. """ commentId: String! """ The time at which the entity was created. """ createdAt: String! """ The ID of the external user who caused the notification. """ externalUserActorId: String """ The ID of the entity. """ id: String! """ The issue this notification belongs to. """ issue: IssueWithDescriptionChildWebhookPayload! """ The ID of the issue this notification belongs to. """ issueId: String! """ The parent comment for the comment this notification belongs to. """ parentComment: CommentChildWebhookPayload """ The ID of the parent comment for the comment this notification belongs to. """ parentCommentId: String """ An issue comment mention notification type. """ type: IssueCommentMentionNotificationType! """ The time at which the entity was updated. """ updatedAt: String! """ The ID of the user who received the notification. """ userId: String! } """ An issue comment reaction notification type. """ scalar IssueCommentReactionNotificationType """ Payload for an issue comment reaction notification. """ type IssueCommentReactionNotificationWebhookPayload { """ The actor who caused the notification. """ actor: UserChildWebhookPayload """ The ID of the actor who caused the notification. """ actorId: String """ The time at which the entity was archived. """ archivedAt: String """ The comment this notification belongs to. """ comment: CommentChildWebhookPayload! """ The ID of the comment this notification belongs to. """ commentId: String! """ The time at which the entity was created. """ createdAt: String! """ The ID of the external user who caused the notification. """ externalUserActorId: String """ The ID of the entity. """ id: String! """ The issue this notification belongs to. """ issue: IssueWithDescriptionChildWebhookPayload! """ The ID of the issue this notification belongs to. """ issueId: String! """ The parent comment for the comment this notification belongs to. """ parentComment: CommentChildWebhookPayload """ The ID of the parent comment for the comment this notification belongs to. """ parentCommentId: String """ The emoji of the reaction this notification is for. """ reactionEmoji: String! """ An issue comment reaction notification type. """ type: IssueCommentReactionNotificationType! """ The time at which the entity was updated. """ updatedAt: String! """ The ID of the user who received the notification. """ userId: String! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type IssueConnection { """ The page's results paired with their cursors. """ edges: [IssueEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Issue!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The details for a new issue. Choose a team and provide a title, or use templateId to take the title and other defaults from a template. A template can also create sub-issues; supplied field values override its defaults, while supplied labels are combined with the template’s labels. """ input IssueCreateInput { """ The UUID of the user responsible for the issue. Omit it to use the template’s assignee, if any, or pass null to leave that default unset. Team triage rules can still assign an unassigned issue. """ assigneeId: String """ Completion time for an imported issue. Requires createdAt and a completed status; must be in the past and not before createdAt. """ completedAt: DateTime """ Display name credited with creating the issue. Available only to OAuth applications using actor=app. """ createAsUser: String """ Creation time for imported issues. Must be in the past. Defaults to the current time. """ createdAt: DateTime """ The UUID of a cycle in the issue’s team. When a cycle is supplied without a status, the issue starts in the team’s default unstarted status. Team cycle settings can also assign a cycle automatically when you leave this unset. """ cycleId: String """ The UUID of an agent user to delegate work to. Delegation can start an agent session on the issue and requires permission to invoke that agent. """ delegateId: String """ The issue’s description in Markdown. Use it for the context, requirements, and links that do not belong in the title. When creating from a template, a supplied description replaces the template’s description. """ description: String """ Avatar URL for createAsUser. Requires createAsUser and an OAuth application using actor=app. """ displayIconUrl: String """ Due date in YYYY-MM-DD format, without a time or time zone. """ dueDate: TimelessDate """ The numeric estimate, from 0 to 64. Linear maps it to the nearest value in the team’s configured scale; use numeric values even for T-shirt sizes. Zero is accepted only when the team allows it. Omit to use the template’s estimate, if any, or pass null for no estimate. """ estimate: Int """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The UUIDs of labels to apply. Labels must be available to the issue’s team, and a single-select group can contribute at most one label. When using a template, these labels are combined with its labels, with your choice taking precedence within a single-select group. """ labelIds: [String!] """ UUID of the template to record as last applied. Use templateId to apply its values. """ lastAppliedTemplateId: String """ The UUID or identifier of an existing parent issue, such as ENG-123. Setting this makes the new issue a sub-issue; the parent can belong to another team if you can access it. """ parentId: String """ Keep the supplied sortOrder instead of placing the issue first in its status. Defaults to false. """ preserveSortOrderOnCreate: Boolean """ The priority of the issue. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. """ priority: Int """ Position among issues with the same priority. Lower values appear first. """ prioritySortOrder: Float """ UUID or identifier of the project, such as P-LIN-123. The project must include the issue’s team. If omitted for a sub-issue, the parent’s project is used when it includes that team; null leaves the issue without a project. """ projectId: String """ The UUID of a milestone in the project supplied in projectId. A milestone cannot be assigned without its project. """ projectMilestoneId: String """ The UUID of a comment whose issue should be linked to the new issue. If the comment belongs to an issue, Linear creates a related-issue relation between that issue and the new one. """ referenceCommentId: String """ The UUIDs of releases to associate with the new issue. Requires release management to be available in the workspace; the releases must exist and be accessible to you. """ releaseIds: [String!] """ The SLA day count type for the issue. Whether SLA should be business days only or calendar days (default). """ slaType: SLADayCountType """ Position in manually sorted lists. Lower values appear first. Set preserveSortOrderOnCreate to keep this position. """ sortOrder: Float """ The UUID of the comment from which this issue was created. Records the source comment on the issue; use referenceCommentId to also link to the comment’s issue. """ sourceCommentId: String """ UUID of a status in the issue’s team. Defaults to the team’s initial status, or an unstarted status when cycleId is set. """ stateId: String """ The position among the parent’s direct sub-issues, with lower values first. Requires parentId. If omitted, the new sub-issue is placed last; conflicting positions are adjusted. """ subIssueSortOrder: Float """ The UUIDs of users to subscribe to issue updates. Linear may also subscribe people involved in the issue, such as its assignee and users mentioned in the description. """ subscriberIds: [String!] """ UUID of the team that will own the issue. """ teamId: String! """ The UUID of an issue template to use. Linear applies its defaults and creates any sub-issues it defines, returning the root issue. Supplied values override the template’s defaults; labelIds are combined with its labels. """ templateId: String """ The title shown in issue lists and at the top of the issue. Required unless templateId is provided; when supplied with a template, it replaces the template’s title. """ title: String """ Whether to apply the team’s default template. Linear selects the member or non-member default based on your team membership; if no matching default is set, creation proceeds without a template. Cannot be combined with templateId. """ useDefaultTemplate: Boolean } """ A result and its pagination cursor. """ type IssueEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Issue! } """ An issue emoji reaction notification type. """ scalar IssueEmojiReactionNotificationType """ Payload for an issue emoji reaction notification. """ type IssueEmojiReactionNotificationWebhookPayload { """ The actor who caused the notification. """ actor: UserChildWebhookPayload """ The ID of the actor who caused the notification. """ actorId: String """ The time at which the entity was archived. """ archivedAt: String """ The time at which the entity was created. """ createdAt: String! """ The ID of the external user who caused the notification. """ externalUserActorId: String """ The ID of the entity. """ id: String! """ The issue this notification belongs to. """ issue: IssueWithDescriptionChildWebhookPayload! """ The ID of the issue this notification belongs to. """ issueId: String! """ The emoji of the reaction this notification is for. """ reactionEmoji: String! """ An issue emoji reaction notification type. """ type: IssueEmojiReactionNotificationType! """ The time at which the entity was updated. """ updatedAt: String! """ The ID of the user who received the notification. """ userId: String! } """ Conditions used to select issues. Supplied fields are combined with AND; use `or` to accept alternatives and `and` to group conditions. """ input IssueFilter { """ Comparator for the issue's accumulatedStateUpdatedAt date. """ accumulatedStateUpdatedAt: NullableDateComparator """ Filters that the issue's activities must satisfy. """ activity: ActivityCollectionFilter """ Conditions on when the issue joined its current cycle. Changing cycles resets this time; removing the cycle clears it. """ addedToCycleAt: NullableDateComparator """ Conditions on when the issue joined its cycle. before includes the cycle’s first 24 hours; during covers the remaining time before closure, and after covers times at or after closure. """ addedToCyclePeriod: CyclePeriodComparator """ Age (created -> now) comparator, defined if the issue is still open. """ ageTime: NullableDurationComparator """ Conditions that the issue must all match. These are combined with the other fields in this filter. """ and: [IssueFilter!] """ Conditions on when the issue was archived. Also set includeArchived on the query; a filter alone does not include records excluded by the query’s archive setting. """ archivedAt: NullableDateComparator """ Conditions on the assigned user. For example, null: true finds unassigned issues, while id: { eq: "user-uuid" } selects one assignee. """ assignee: NullableUserFilter """ Conditions on the issue’s external links. For example, some with a URL or sourceType condition finds issues with at least one matching attachment. """ attachments: AttachmentCollectionFilter """ Conditions on when the issue was automatically archived. Include archived issues in the query to find them; restoring an issue clears this value. """ autoArchivedAt: NullableDateComparator """ Conditions on when the issue was automatically closed after inactivity. The value is cleared when its status changes. """ autoClosedAt: NullableDateComparator """ Conditions on when the issue entered a canceled or duplicate status. The value is cleared when the issue leaves those status types. """ canceledAt: NullableDateComparator """ Conditions on direct sub-issues. Use some for a matching child, every for all children, or length to count them. This does not search all descendants recursively. """ children: IssueCollectionFilter """ Conditions on comments linked directly to the issue, including replies. Inline comments on the issue description are linked through documentContent and are not included by this filter. """ comments: CommentCollectionFilter """ Conditions on the recorded completion time. Use null: false to require a completion time, or a date range to find issues completed during that period. """ completedAt: NullableDateComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the issues creator must satisfy. """ creator: NullableUserFilter """ Conditions on the number of distinct customers with active requests linked to the issue. Requests without a customer record each count separately. Supply one comparison; to apply a range, put separate customerCount conditions in and. """ customerCount: NumberComparator """ Conditions on the number of distinct customers with active, important requests linked to the issue. Important requests without a customer record each count separately. Supply one comparison; to apply a range, put separate customerImportantCount conditions in and. """ customerImportantCount: NumberComparator """ Conditions on the assigned cycle. Use null: true for issues without a cycle or whose team has cycles disabled. Use null: false to require an assigned cycle on a team with cycles enabled. Other cycle comparisons do not require cycles to be enabled. """ cycle: NullableCycleFilter """ Cycle time (started -> completed) comparator. """ cycleTime: NullableDurationComparator """ Filters that the issue's delegated agent must satisfy. """ delegate: NullableUserFilter """ Conditions on the issue’s stored description text. Use null to find issues without a stored description, or text comparisons to match its contents. """ description: NullableStringComparator """ Conditions on the due date, without a time of day. Use null: true for issues without a due date. """ dueDate: NullableTimelessDateComparator """ Conditions on the stored numeric estimate in the team’s scale. Use null to find unestimated issues; zero is a separate, explicit estimate. """ estimate: EstimateComparator """ Comparator for filtering issues bucketed as having active agent sessions, no closed agent pull requests, and no merged agent pull requests. """ hasActiveAgentSessions: RelationExistsComparator """ Whether another issue blocks this issue, with both issues still open. A link with a closed issue counts under hasRelatedRelations instead. """ hasBlockedByRelations: RelationExistsComparator """ Whether this issue blocks another issue, with both issues still open. A link with a closed issue counts under hasRelatedRelations instead. """ hasBlockingRelations: RelationExistsComparator """ Comparator for filtering issues bucketed as having all agent sessions dismissed or closed, and no merged agent pull requests. """ hasDismissedAgentSessions: RelationExistsComparator """ Whether other issues have been marked as duplicates of this issue. This checks incoming duplicate links, not whether this issue is itself a duplicate. """ hasDuplicateRelations: RelationExistsComparator """ Comparator for filtering issues bucketed as having an errored agent session, no active sessions, and no merged agent pull requests. """ hasErroredAgentSessions: RelationExistsComparator """ Comparator for filtering issues which have agent-session-linked pull requests that were merged. """ hasMergedAgentPullRequests: RelationExistsComparator """ Whether the issue has a related link in either direction. Blocking links also count as related when either issue is closed; open blocking relationships are covered by hasBlockingRelations and hasBlockedByRelations. """ hasRelatedRelations: RelationExistsComparator """ Comparator for filtering issues which have been shared with users outside of the team. """ hasSharedUsers: RelationExistsComparator """ Comparator for filtering issues which have suggested assignees. """ hasSuggestedAssignees: RelationExistsComparator """ Comparator for filtering issues which have suggested labels. """ hasSuggestedLabels: RelationExistsComparator """ Comparator for filtering issues which have suggested projects. """ hasSuggestedProjects: RelationExistsComparator """ Comparator for filtering issues which have suggested related issues. """ hasSuggestedRelatedIssues: RelationExistsComparator """ Comparator for filtering issues which have suggested similar issues. """ hasSuggestedSimilarIssues: RelationExistsComparator """ Comparator for filtering issues which have suggested teams. """ hasSuggestedTeams: RelationExistsComparator """ Matches the issue UUID or human-readable identifier, such as ENG-123. Use number with a team filter when matching only the numeric portion. """ id: IssueIDComparator """ Conditions on assigned labels. Use some for at least one matching label, every to constrain all labels, or length: { eq: 0 } for unlabeled issues. Separate some conditions in and can require different labels on the same issue. """ labels: IssueLabelCollectionFilter """ Filters that the last applied template must satisfy. """ lastAppliedTemplate: NullableTemplateFilter """ Lead time (created -> completed) comparator. """ leadTime: NullableDurationComparator """ Conditions on customer requests linked to the issue. Use some to require a matching request or length to count linked requests. """ needs: CustomerNeedCollectionFilter """ Matches the issue number within its team. Numbers are not unique across teams, so combine this with team when looking for a specific issue. """ number: NumberComparator """ Alternative conditions; the issue must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [IssueFilter!] """ Conditions on the immediate parent issue. Use null: true to find top-level issues, or an ID condition to find direct sub-issues of one parent. """ parent: NullableIssueFilter """ Conditions on the numeric priority: 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. Lower nonzero values mean higher priority. """ priority: NullableNumberComparator """ Conditions on the assigned project. Use null: true for issues without a project; otherwise the project must match the supplied conditions. """ project: NullableProjectFilter """ Filters that the issues project milestone must satisfy. """ projectMilestone: NullableProjectMilestoneFilter """ Conditions on emoji reactions added directly to the issue. Reactions on its comments are filtered through comments.reactions. """ reactions: ReactionCollectionFilter """ [ALPHA] Filters that the recurring issue template must satisfy. """ recurringIssueTemplate: NullableTemplateFilter """ Conditions on releases linked to the issue. An issue can belong to several releases; use some to require a matching release or length to count them. """ releases: ReleaseCollectionFilter """ Comparator for the issues content. """ searchableContent: ContentComparator """ Filters that users the issue has been shared with must satisfy. """ sharedWith: UserCollectionFilter """ Conditions on the SLA deadline. A deadline before now does not by itself mean the SLA was missed; use slaStatus to distinguish unfinished breaches from completed outcomes. """ slaBreachesAt: NullableDateComparator """ Conditions on the current SLA risk or outcome. Use null: true for issues without an SLA status, including canceled issues and issues without an SLA. """ slaStatus: SlaStatusComparator """ Filters that the issues snoozer must satisfy. """ snoozedBy: NullableUserFilter """ Conditions on when the issue’s triage snooze ends. Use null: true for issues without a recorded snooze time. """ snoozedUntilAt: NullableDateComparator """ Filters that the source must satisfy. """ sourceMetadata: SourceMetadataComparator """ Conditions on when work started. Use null: true for issues with no recorded start time; moving back to triage, backlog, or an unstarted status clears it. """ startedAt: NullableDateComparator """ Conditions on the issue’s current status. Filter by type, such as started or completed, to match the same workflow category across teams with different status names and IDs. """ state: WorkflowStateFilter """ Filters that issue subscribers must satisfy. """ subscribers: UserCollectionFilter """ Filters that the issue's suggestions must satisfy. """ suggestions: IssueSuggestionCollectionFilter """ Filters that the issues team must satisfy. """ team: TeamFilter """ Conditions on the issue title. This does not search descriptions or comments. """ title: StringComparator """ Triage time (entered triaged -> triaged) comparator. """ triageTime: NullableDurationComparator """ Conditions on when the issue last left triage. The value is unset before triage is completed and after re-entering triage. """ triagedAt: NullableDateComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Suggested issue-view filters generated from a natural-language prompt. A suggestion can be absent when the prompt does not produce a filter. """ type IssueFilterSuggestionPayload { """ The suggested filter configuration as JSON. Null if no filter was generated; inspect the suggestion before using it to change a saved view. """ filter: JSONObject """ The identifier of the prompt execution that generated the suggestion. Null if no execution identifier is returned. """ logId: String } """ A recorded change to an issue. Nearby changes can be grouped into one entry, and each from/to pair describes the previous and new value of a changed property. These entries are not full issue snapshots: null can mean the property did not change or that one side of a change was unset. Related records may also be unavailable after deletion. """ type IssueHistory implements Node { """ The user who made the change. Null for some automated or integration changes, or if the user was deleted. """ actor: User """ UUID of the user who made the change. Null for some automated or integration changes. """ actorId: String """ Users recorded as actors for this entry. Can be null or empty for automated or integration changes, or when the recorded users are no longer available. """ actors: [User!] @deprecated(reason: "Use `actor` and `descriptionUpdatedBy` instead.") """ The UUIDs of labels added by this entry. This is the change in labels, not the issue’s complete label set. """ addedLabelIds: [String!] """ The label records added by this change. Deleted or inaccessible labels may be absent; addedLabelIds preserves the recorded identifiers. """ addedLabels: [IssueLabel!] """ UUIDs of releases the issue was added to. """ addedToReleaseIds: [String!] """ The releases that the issue was added to. """ addedToReleases: [Release!] """ Whether the issue was archived (true) or unarchived (false) in this change. Null if the archive status was not changed. """ archived: Boolean """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The attachment associated with this history entry, if it still exists and you can access it. Null when no attachment is recorded or the recorded attachment was removed. """ attachment: Attachment """ 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. """ attachmentId: String """ Whether the issue was auto-archived. """ autoArchived: Boolean """ Whether the issue was auto-closed. """ autoClosed: Boolean """ The bot that performed the action. """ botActor: ActorBot """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ [Deprecated] Legacy UUID of a customer request linked to the issue. Not populated for new changes. """ customerNeedId: String """ Users whose description edits contributed to this grouped history entry. Null when no description editors are recorded; deleted or inaccessible users may be absent from the result. """ descriptionUpdatedBy: [User!] """ The assignee before this change. Null when none was set, the property did not change, or the recorded resource is no longer available to you. """ fromAssignee: User """ 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. """ fromAssigneeId: String """ The cycle before this change. Null when none was set, the property did not change, or the recorded resource is no longer available to you. """ fromCycle: Cycle """ 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. """ fromCycleId: String """ The agent delegate before this change. Null when none was set, the property did not change, or the recorded resource is no longer available to you. """ fromDelegate: User """ The due date before this change, as YYYY-MM-DD without a time or time zone. Null if there was no due date or this entry does not record a due-date change. """ fromDueDate: TimelessDate """ The estimate before this change, using the team’s numeric estimation scale. Null if no estimate was set or this entry does not record an estimate change. """ fromEstimate: Float """ The parent issue before this change. Null when none was set, the property did not change, or the recorded resource is no longer available to you. """ fromParent: Issue """ 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. """ fromParentId: String """ The priority before this change: 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. Null if this entry does not record a priority change. """ fromPriority: Float """ The project before this change. Null when none was set, the property did not change, or the recorded resource is no longer available to you. """ fromProject: Project """ 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. """ fromProjectId: String """ The project milestone before this change. Null when none was set, the property did not change, or the recorded resource is no longer available to you. """ fromProjectMilestone: ProjectMilestone """ Whether the issue had previously breached its SLA. """ fromSlaBreached: Boolean """ The SLA breach time that was previously set on the issue. """ fromSlaBreachesAt: DateTime """ The time at which the issue's SLA was previously started. """ fromSlaStartedAt: DateTime """ Previous SLA day-counting mode: all for calendar days or onlyBusinessDays for working days. """ fromSlaType: String """ The issue status before this change. Null if this entry does not record that change or the recorded resource is no longer available to you. """ fromState: WorkflowState """ 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. """ fromStateId: String """ The team before this change. Null if this entry does not record that change or the recorded resource is no longer available to you. """ fromTeam: Team """ 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. """ fromTeamId: String """ What the title was changed from. """ fromTitle: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The issue that was changed. """ issue: Issue! """ The import that produced this history entry, when available. Null for changes without an import record or when that record is no longer accessible. """ issueImport: IssueImport """ Changed issue relationships. """ relationChanges: [IssueRelationHistoryPayload!] """ UUIDs of releases the issue was removed from. """ removedFromReleaseIds: [String!] """ The releases that the issue was removed from. """ removedFromReleases: [Release!] """ The UUIDs of labels removed by this entry. The corresponding label records may no longer be available if they were deleted. """ removedLabelIds: [String!] """ The label records removed by this change, where they are still available. Use removedLabelIds if you need the recorded identifiers even after a label is deleted. """ removedLabels: [IssueLabel!] """ The assignee after this change. Null when the assignment was cleared, the property did not change, or the recorded resource is no longer available to you. """ toAssignee: User """ 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. """ toAssigneeId: String """ The new project created from the issue. """ toConvertedProject: Project """ 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. """ toConvertedProjectId: String """ The cycle after this change. Null when the assignment was cleared, the property did not change, or the recorded resource is no longer available to you. """ toCycle: Cycle """ 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. """ toCycleId: String """ The agent delegate after this change. Null when the assignment was cleared, the property did not change, or the recorded resource is no longer available to you. """ toDelegate: User """ The due date after this change, as YYYY-MM-DD without a time or time zone. Null if the date was cleared or this entry does not record a due-date change. """ toDueDate: TimelessDate """ The estimate after this change, using the team’s numeric estimation scale. Null if the estimate was cleared or this entry does not record an estimate change. """ toEstimate: Float """ The parent issue after this change. Null when the assignment was cleared, the property did not change, or the recorded resource is no longer available to you. """ toParent: Issue """ 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. """ toParentId: String """ The priority after this change: 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. Null if this entry does not record a priority change. """ toPriority: Float """ The project after this change. Null when the assignment was cleared, the property did not change, or the recorded resource is no longer available to you. """ toProject: Project """ 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. """ toProjectId: String """ The project milestone after this change. Null when the assignment was cleared, the property did not change, or the recorded resource is no longer available to you. """ toProjectMilestone: ProjectMilestone """ Whether the issue has now breached its SLA. """ toSlaBreached: Boolean """ The SLA breach time that is now set on the issue. """ toSlaBreachesAt: DateTime """ The time at which the issue's SLA is now started. """ toSlaStartedAt: DateTime """ New SLA day-counting mode: all for calendar days or onlyBusinessDays for working days. """ toSlaType: String """ The issue status after this change. Null if this entry does not record that change or the recorded resource is no longer available to you. """ toState: WorkflowState """ 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. """ toStateId: String """ The team after this change. Null if this entry does not record that change or the recorded resource is no longer available to you. """ toTeam: Team """ 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. """ toTeamId: String """ What the title was changed to. """ toTitle: String """ True if the issue was moved to trash, false if restored, or null if trash status did not change. """ trashed: Boolean """ Whether triage responsibility assigned the issue automatically. """ triageResponsibilityAutoAssigned: Boolean """ The users that were notified of the issue. """ triageResponsibilityNotifiedUsers: [User!] """ The team that triggered the triage responsibility action. """ triageResponsibilityTeam: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ Whether the description changed in this history entry. The entry records that an edit occurred; it does not contain the old or new Markdown body. """ updatedDescription: Boolean } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type IssueHistoryConnection { """ The page's results paired with their cursors. """ edges: [IssueHistoryEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [IssueHistory!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A result and its pagination cursor. """ type IssueHistoryEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: IssueHistory! } """ Compares issue UUIDs or full identifiers such as `ENG-123` in the current workspace. Use the complete team prefix and number, not the number alone. Unresolved identifiers match nothing in `eq` or `in` and are ignored in `neq` or `nin`. All supplied conditions must match. """ input IssueIDComparator { """ Matches the given value. """ eq: ID """ Matches any value in the list. An empty list matches nothing. """ in: [ID!] """ Excludes the given value. """ neq: ID """ Excludes every value in the list. An empty list adds no restriction. """ nin: [ID!] } """ A job that brings issues and related data from another service into Linear. Import creation fetches the source data; mappings then choose how to create the Linear records. Processing continues asynchronously, so use status, progress, and error to follow the job rather than treating a mutation’s success flag as completion. """ type IssueImport implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Identifier of the user who started the import job. Can be used to query the user directly. Null if the user has been deleted. """ creatorId: String """ File URL for the uploaded CSV for the import, if there is one. """ csvFileUrl: String """ The display name of the import service. """ displayName: String! """ User readable error message, if one has occurred during the import. """ error: String """ Structured import error with a code and optional messages and details. Null if no error is recorded. """ errorMetadata: JSONObject """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The source-to-Linear mappings and import options, such as which users, statuses, or epics to use. The shape depends on the source service. Mapping data may be cleared after processing, so do not rely on it as a permanent record of imported entities. """ mapping: JSONObject """ Progress of the current import step, from 0 to 100. This is not an overall percentage across every stage and can reset as the job advances. Null when progress is not available. """ progress: Float """ Source service: asana, clubhouse (Shortcut), github, jira, linear (legacy), or linearV2. """ service: String! """ Source-specific details such as the Jira site and project, or Asana and Shortcut team names. """ serviceMetadata: JSONObject """ The current stage of the import. inProgress covers fetching and configuration; inProcess means Linear records are being created; complete means processing finished. notStarted, error, expired, and deleting describe the other lifecycle states. Read error or errorMetadata when the status is error. """ status: String! """ Name of the team to create when importing into a new team. Null when importing into an existing team. """ teamName: String """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ The result of checking whether an import from an external service can proceed. """ type IssueImportCheckPayload { """ Whether the operation was successful. """ success: Boolean! } """ The import job scheduled for deletion, including removal of the data it created. """ type IssueImportDeletePayload { """ The import job with status deleting. Deletion continues asynchronously. """ issueImport: IssueImport """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ The result of validating a custom JQL query for a Jira import. """ type IssueImportJqlCheckPayload { """ An approximate number of issues matching the JQL query. Null when the query is invalid or the count is unavailable. """ count: Float """ An error message returned by Jira when validating the JQL query. """ error: String """ Returns true if the JQL query has been validated successfully, false otherwise """ success: Boolean! } """ The result of an issue import mutation, containing the import job and a success indicator. """ type IssueImportPayload { """ The import job that was created or updated. """ issueImport: IssueImport """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the requested step was accepted. A true value does not mean the asynchronous import has finished. """ success: Boolean! } """ The result of checking whether an issue import can be synced with its source service after import completes. """ type IssueImportSyncCheckPayload { """ Returns true if the import can be synced, false otherwise """ canSync: Boolean! """ An error message explaining why the import cannot be synced. Null when canSync is true. """ error: String } """ The mapping choices to save on an import without starting processing. For external-service imports, mapping replaces the existing configuration, so include the choices you want to retain. """ input IssueImportUpdateInput { """ Replacement mapping configuration. Include existing mappings that should be kept. """ mapping: JSONObject! } """ A label for categorizing issues, such as Bug or Customer request. Labels can be available across the workspace or limited to a team, and can belong to groups that control whether one or several labels may be selected. Inherited labels are managed at their workspace or parent-team source. """ type IssueLabel implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ Child labels within this label group. Only populated when the label is a group (isGroup is true). """ children( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issue labels. """ filter: IssueLabelFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueLabelConnection! """ Hex color of the label, such as #EB5757. """ color: String! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the label. Null if no creator is recorded or the account was deleted. """ creator: User """ The label's description. """ description: String """ How labels in this group can be selected: singleSelect permits one child label per issue, while multiSelect permits several. Null for regular labels; a group without an explicit type behaves as singleSelect. """ groupType: LabelGroupType """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The original workspace or parent-team label that this label was inherited from. Null if the label is not inherited. """ inheritedFrom: IssueLabel """ Whether this is a group of child labels. Groups cannot be applied directly to issues, projects, or initiatives. """ isGroup: Boolean! """ Issues associated with the label. """ issues( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueConnection! """ Time the label was last applied to an issue, project, or initiative. Null if it has never been applied. """ lastAppliedAt: DateTime """ The label's name. """ name: String! """ The workspace that owns the label. """ organization: Organization! @deprecated(reason: "Workspace labels are identified by their team being null.") """ The group containing this label. Null if the label is not in a group. """ parent: IssueLabel """ The user who retired the label. Null if none is recorded or the account was deleted. """ retiredBy: User """ The team that can use this label. Null for a workspace label available to all teams. """ team: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ Certain properties of an issue label. """ type IssueLabelChildWebhookPayload { """ The color of the issue label. """ color: String! """ The ID of the issue label. """ id: String! """ The name of the issue label. """ name: String! """ The parent ID of the issue label. """ parentId: String } """ Conditions on a collection of labels. Use some to require a matching item, every to check the whole collection, or length to check its size. Direct label fields act as some only when no and, or, some, every, or length clause is supplied. """ input IssueLabelCollectionFilter { """ Collection conditions that must all match. Different some branches can be satisfied by different labels. """ and: [IssueLabelCollectionFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Conditions on the user who created the label. Use null: true for labels without a recorded creator. """ creator: NullableUserFilter """ Requires all assigned labels to match these conditions. A filter made only of exclusions, such as id.nin, also matches an empty label list; a positive condition normally requires labels. Use length to make any nonempty requirement explicit. """ every: IssueLabelFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Whether the label is a group rather than an assignable child or standalone label. Group records organize their child labels and define the selection mode. """ isGroup: BooleanComparator """ Conditions on the total number of related labels, independent of some or every. Use eq: 0 to find an empty collection. """ length: NumberComparator """ Conditions on the label or label-group name. """ name: StringComparator """ Tests whether the stored label-ID list is null. An empty list is not null; use length: { eq: 0 } to find issues without labels. """ null: Boolean """ Alternative collection conditions; at least one must match. Other collection clauses at this level still apply. An empty list adds no condition. """ or: [IssueLabelCollectionFilter!] """ Conditions on the label group that contains this label. For example, parent: { id: { eq: "group-uuid" } } selects the group’s child labels. """ parent: IssueLabelFilter """ Matches at least one assigned label against these conditions. A filter made only of exclusions, such as id.nin, also matches an empty label list. Add length: { gt: 0 } when a label must be present. """ some: IssueLabelFilter """ Conditions on the team that owns the label. Use null: true for workspace labels, or a team ID to find labels scoped to that team. """ team: NullableTeamFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type IssueLabelConnection { """ The page's results paired with their cursors. """ edges: [IssueLabelEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [IssueLabel!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The details for a new label or label group. Omit teamId to create a workspace label, or supply a team UUID to limit its scope. Set isGroup for a group and groupType for its selection behavior; regular labels can join a group through parentId. """ input IssueLabelCreateInput { """ Hex color, such as #EB5757. Defaults to the parent group's color, or #4EA7FC without a parent. Null is not accepted. """ color: String """ Description of the label’s purpose, up to 255 characters. """ description: String """ The selection mode of the label group. Defaults to singleSelect for groups and null for regular labels. """ groupType: LabelGroupType """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ Create a group to hold child labels. Groups cannot be applied directly. Defaults to false. """ isGroup: Boolean """ Label name, from 1 to 80 characters. Emoji are not allowed. """ name: String! """ UUID of an existing label group. Groups cannot be nested inside other groups. """ parentId: String """ Retirement time. Set to create a retired label; omit or pass null for an active label. """ retiredAt: DateTime """ UUID of the team whose issues can use the label. Omit for a workspace label. """ teamId: String } """ A result and its pagination cursor. """ type IssueLabelEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: IssueLabel! } """ Conditions used to select labels. Supplied fields are combined with AND; use `or` to accept alternatives and `and` to group conditions. """ input IssueLabelFilter { """ Conditions that the label must all match. These are combined with the other fields in this filter. """ and: [IssueLabelFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Conditions on the user who created the label. Use null: true for labels without a recorded creator. """ creator: NullableUserFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Whether the label is a group rather than an assignable child or standalone label. Group records organize their child labels and define the selection mode. """ isGroup: BooleanComparator """ Conditions on the label or label-group name. """ name: StringComparator """ Alternative conditions; the label must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [IssueLabelFilter!] """ Conditions on the label group that contains this label. For example, parent: { id: { eq: "group-uuid" } } selects the group’s child labels. """ parent: IssueLabelFilter """ Conditions on the team that owns the label. Use null: true for workspace labels, or a team ID to find labels scoped to that team. """ team: NullableTeamFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The result of a label mutation, containing the created or updated label and a success indicator. """ type IssueLabelPayload { """ The label that was created or updated. """ issueLabel: IssueLabel! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ The changes to a label or label group. Omitted fields keep their values. Update an inherited label at its source; changing a group’s selection mode affects which combinations of child labels issues can use. """ input IssueLabelUpdateInput { """ Hex color, such as #EB5757. Changing a group's color also updates children that shared its previous color. Null is not accepted. """ color: String """ Description of the label’s purpose, up to 255 characters. Null clears the description. """ description: String """ The selection mode of the label group. Omit to keep the current value. Null resets groups to singleSelect. Regular labels always use null. """ groupType: LabelGroupType """ Whether the label is a group of child labels. Changing this requires an unused label with no parent or children. Groups cannot be applied directly. """ isGroup: Boolean """ Label name, from 1 to 80 characters. Emoji and null are not accepted. """ name: String """ UUID of an existing label group. Null removes the label from its group. Groups cannot be nested. """ parentId: String """ Retirement time. Set to null to restore the label. Changing a group's retirement state also changes its children; a child cannot be restored while its group is retired. """ retiredAt: DateTime } """ Payload for an issue label webhook. """ type IssueLabelWebhookPayload { """ The time at which the entity was archived. """ archivedAt: String """ The color of the issue label. """ color: String! """ The time at which the entity was created. """ createdAt: String! """ The creator ID of the issue label. """ creatorId: String """ The label's description. """ description: String """ The ID of the entity. """ id: String! """ The original label inherited from. """ inheritedFromId: String """ Whether the label is a group. """ isGroup: Boolean! """ The name of the issue label. """ name: String! """ The parent ID of the issue label. """ parentId: String """ The team ID of the issue label. """ teamId: String """ The time at which the entity was updated. """ updatedAt: String! } """ An issue mention notification type. """ scalar IssueMentionNotificationType """ Payload for an issue mention notification. """ type IssueMentionNotificationWebhookPayload { """ The actor who caused the notification. """ actor: UserChildWebhookPayload """ The ID of the actor who caused the notification. """ actorId: String """ The time at which the entity was archived. """ archivedAt: String """ The time at which the entity was created. """ createdAt: String! """ The ID of the external user who caused the notification. """ externalUserActorId: String """ The ID of the entity. """ id: String! """ The issue this notification belongs to. """ issue: IssueWithDescriptionChildWebhookPayload! """ The ID of the issue this notification belongs to. """ issueId: String! """ An issue mention notification type. """ type: IssueMentionNotificationType! """ The time at which the entity was updated. """ updatedAt: String! """ The ID of the user who received the notification. """ userId: String! } """ An issue new comment notification type. """ scalar IssueNewCommentNotificationType """ Payload for an issue new comment notification. """ type IssueNewCommentNotificationWebhookPayload { """ The actor who caused the notification. """ actor: UserChildWebhookPayload """ The ID of the actor who caused the notification. """ actorId: String """ The time at which the entity was archived. """ archivedAt: String """ The comment this notification belongs to. """ comment: CommentChildWebhookPayload! """ The ID of the comment this notification belongs to. """ commentId: String! """ The time at which the entity was created. """ createdAt: String! """ The ID of the external user who caused the notification. """ externalUserActorId: String """ The ID of the entity. """ id: String! """ The issue this notification belongs to. """ issue: IssueWithDescriptionChildWebhookPayload! """ The ID of the issue this notification belongs to. """ issueId: String! """ The parent comment for the comment this notification belongs to. """ parentComment: CommentChildWebhookPayload """ The ID of the parent comment for the comment this notification belongs to. """ parentCommentId: String """ An issue new comment notification type. """ type: IssueNewCommentNotificationType! """ The time at which the entity was updated. """ updatedAt: String! """ The ID of the user who received the notification. """ userId: String! } """ A notification related to an issue, such as assignment, comment, mention, status change, or priority change. """ type IssueNotification implements Entity & Node & Notification { """ 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. """ actor: User """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The bot that caused the notification. """ botActor: ActorBot """ The category of the notification. """ category: NotificationCategory! """ The comment related to the notification. """ comment: Comment """ Related comment ID. Null if the notification is not related to a comment. """ commentId: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent. """ emailedAt: DateTime """ 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. """ externalUserActor: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The issue related to the notification. """ issue: Issue! """ Related issue ID. """ issueId: String! """ The parent comment related to the notification, if a notification is a reply comment notification. """ parentComment: Comment """ Related parent comment ID. Null if the notification is not related to a comment. """ parentCommentId: String """ Name of the reaction emoji related to the notification. """ reactionEmoji: String """ The time at which the user marked the notification as read. Null if the notification is unread. """ readAt: DateTime """ 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. """ snoozedUntilAt: DateTime """ The notification preferences that caused this notification to be sent. """ subscriptions: [NotificationSubscription!] """ The team related to the issue notification. """ team: Team! """ Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated. """ type: String! """ The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed. """ unsnoozedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The recipient user of this notification. """ user: User! } """ The result of an issue mutation. Read issue for the resulting values when the operation returns an issue; reminder creation can return success without an issue. """ type IssuePayload { """ The issue returned by the mutation, with its resulting values. Null for operations that only return a success flag, such as issueReminder. """ issue: Issue """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ A mapping of an issue priority value to its human-readable label. """ type IssuePriorityValue { """ Display name for the priority value. """ label: String! """ Priority value: 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. """ priority: Int! } """ A reference to an issue discovered during release sync, linking the issue identifier to the commit SHA where the reference was found. """ input IssueReferenceInput { """ The commit SHA where this issue reference was found. """ commitSha: String! """ The issue identifier (e.g. ENG-123). """ identifier: String! } """ A relationship between two issues, with issue as the source and relatedIssue as the target. For blocks, the source blocks the target; for duplicate, the source is a duplicate of the target. Related links have no meaningful direction, so read both an issue’s relations and inverseRelations to find all its links. """ type IssueRelation implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The source issue. It blocks or duplicates relatedIssue when the relation has that type. """ issue: Issue! """ The target issue. It is blocked by the source for blocks, or is the original issue for duplicate. """ relatedIssue: Issue! """ Relation type: blocks, duplicate, related, or the deprecated similar. """ type: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type IssueRelationConnection { """ The page's results paired with their cursors. """ edges: [IssueRelationEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [IssueRelation!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The relationship to establish between two distinct issues. Both ends accept issue UUIDs or human-readable identifiers. Creating a relation replaces a conflicting relation between the pair; an identical relation is reused. A duplicate relation also merges the source issue into the target. """ input IssueRelationCreateInput { """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ UUID or identifier of the source issue, such as ENG-123. For duplicate, this is the duplicate issue. """ issueId: String! """ UUID or identifier of the target issue. Must differ from issueId. For duplicate, this is the original issue. """ relatedIssueId: String! """ How issueId relates to relatedIssueId: blocks, duplicate, related, or the deprecated similar. """ type: IssueRelationType! } """ A result and its pagination cursor. """ type IssueRelationEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: IssueRelation! } """ A relation change and the identifier of the other issue. """ type IssueRelationHistoryPayload { """ The human-readable identifier of the related issue (e.g., ENG-123). """ identifier: String! """ Relation change code: ax/rx adds/removes an issue blocked by this issue; ab/rb adds/removes a blocker; ar/rr adds/removes a related issue; ad/rd marks/unmarks this issue as a duplicate; am/rm adds/removes a duplicate of this issue. br/bo means a blocker was resolved/reopened; xr/xo means this issue was resolved/reopened while blocking the other issue. """ type: String! } """ The issue relation created, updated, or reused by a mutation. """ type IssueRelationPayload { """ The issue relation that was created or updated. """ issueRelation: IssueRelation! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ The type of the issue relation. """ enum IssueRelationType { blocks duplicate related similar } """ Changes to an existing relation’s type or either end. Omit fields you want to keep. The resulting source and target must be distinct, and changing a duplicate relation can undo or trigger duplicate-merge behavior. """ input IssueRelationUpdateInput { """ The identifier of the issue that is related to another issue. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String """ The identifier of the related issue. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ relatedIssueId: String """ Relation type: blocks, duplicate, related, or the deprecated similar. Omit to keep the current type. """ type: String } """ A page of issue search results. Read nodes for the matched issues and pageInfo to continue paging. totalCount describes the retrieved candidate set and can be larger than the results remaining after an issue filter is applied. """ type IssueSearchPayload { """ Serialized archived issues on this page and related archived records needed by Linear’s client. For normal API reads, select the issue fields you need from nodes instead. """ archivePayload: ArchiveResponse! """ The page's results paired with their cursors. """ edges: [IssueSearchResultEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [IssueSearchResult!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! """ Number of candidates retrieved before filtering and pagination. Search caps candidates, so this is not an exact count of all matching issues. """ totalCount: Float! } """ An issue returned by search, with the same fields as Issue plus search metadata. The meaning of metadata.score depends on the query’s ordering. """ type IssueSearchResult implements Node { """ The time the issue was added to its current cycle. Changes when the cycle changes, and is null when the issue has no cycle. """ addedToCycleAt: DateTime """ The time the issue was added to its current project. Changes when the project changes, and is null when the issue has no project. """ addedToProjectAt: DateTime """ The time the issue was created in or moved to its current team. Use this to distinguish a team move from the issue’s original creation time. """ addedToTeamAt: DateTime """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The external user who requested creation of the Asks issue on behalf of the creator. """ asksExternalUserRequester: ExternalUser """ The internal user who requested creation of the Asks issue on behalf of the creator. """ asksRequester: User """ The user to whom the issue is assigned. Null if the issue is unassigned. """ assignee: User """ Attachments associated with the issue. """ attachments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned attachments. """ filter: AttachmentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): AttachmentConnection! """ The time the issue was automatically archived under the team’s inactivity settings. Null if it was not auto-archived or has since been restored. """ autoArchivedAt: DateTime """ The time the issue was automatically closed after inactivity. Null if it has not been auto-closed or its status has changed since then. """ autoClosedAt: DateTime """ The order of the item in its column on the board. """ boardOrder: Float! @deprecated(reason: "Will be removed in near future, please use `sortOrder` instead") """ The bot that created the issue, if applicable. """ botActor: ActorBot """ A suggested Git branch name based on the issue’s identifier and title and your branch naming preferences. This generates a name; it does not create a branch in a repository. """ branchName: String! """ Time the issue entered a canceled or duplicate status. Cleared when it leaves those status types. """ canceledAt: DateTime """ The issue’s direct sub-issues that you can access. Use each child’s children field to read deeper levels of the hierarchy; this connection does not flatten the full tree. """ children( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueConnection! """ Comments associated with the issue, including replies and inline comments on its description. Use each comment’s parent and children fields to reconstruct discussion threads. """ comments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned comments. """ filter: CommentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CommentConnection! """ Time the issue entered a completed status. Null when it is not completed. """ completedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ 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. """ creator: User """ Number of linked attachments from supported customer support ticket systems. """ customerTicketCount: Int! """ The cycle that the issue is associated with. Null if the issue is not part of any cycle. """ cycle: Cycle """ The agent delegated to work on the issue. Null if no agent is delegated. """ delegate: User """ The issue’s description as Markdown, or null if no description is stored. Use this field to read the content and IssueUpdateInput.description to replace it. """ description: String """ [ALPHA] The document content representing this issue description. """ documentContent: DocumentContent """ Documents associated with the issue. """ documents( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned documents. """ filter: DocumentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): DocumentConnection! """ Due date in YYYY-MM-DD format, without a time or time zone. Null if no due date is set. """ dueDate: TimelessDate """ The numeric estimate in the team’s configured scale. For T-shirt estimates, the stored values 1, 2, 3, 5, and 8 correspond to XS through XL, with 13 and 21 for extended sizes. Zero is an explicit estimate; null means the issue has not been estimated. """ estimate: Float """ 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. """ externalUserCreator: ExternalUser """ The caller’s favorite for this issue. Null if the caller has not favorited it. """ favorite: Favorite """ Attachments previously associated with the issue before being moved to another issue. """ formerAttachments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned attachments. """ filter: AttachmentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): AttachmentConnection! """ Customer needs previously associated with the issue before being moved to another issue. """ formerNeeds( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned needs. """ filter: CustomerNeedFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CustomerNeedConnection! """ Changes recorded for this issue, including updates to its properties and relations. Each entry contains only the changes it records, with previous and new values where available. """ history( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueHistoryConnection! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The issue’s current human-readable identifier, such as ENG-123. It changes when the issue moves to another team; use id when you need a stable identifier. """ identifier: String! """ Whether this issue inherits shared access from its parent issue. """ inheritsSharedAccess: Boolean! """ The integration service recorded as the source of this issue. Null when no integration source is recorded; this does not indicate whether the issue is currently syncing with an external service. """ integrationSourceType: IntegrationService """ Relations whose target is this issue. For a blocks relation, the source issue blocks this issue; combine these with relations to read all links involving the issue. """ inverseRelations( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueRelationConnection! """ The UUIDs of labels assigned to the issue. Use labels to read their names, colors, and groups, or use these IDs when comparing or updating label assignments. """ labelIds: [String!]! """ Labels associated with this issue. """ labels( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issue labels. """ filter: IssueLabelFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueLabelConnection! """ The most recently applied issue template. This records where the issue’s defaults came from; subsequent edits to the template do not replace the issue’s current values. Null if no template is recorded or it was deleted. """ lastAppliedTemplate: Template """ score reflects relevance by default, or can contain timestamp milliseconds when orderBy selects createdAt or updatedAt. Compare scores only within the same query and ordering. context is an empty object retained for compatibility. """ metadata: JSONObject! """ Customer needs associated with the issue. """ needs( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned needs. """ filter: CustomerNeedFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CustomerNeedConnection! """ The issue’s number within its current team. Combine it with the team key to form an identifier such as ENG-123, or read the identifier field directly. Numbers are not necessarily consecutive. """ number: Float! """ The parent issue. Null if this is a top-level issue or the parent is inaccessible. """ parent: Issue """ Identifiers the issue used before it moved between teams. Use identifier for its current identifier and id for a UUID that remains stable across team moves. """ previousIdentifiers: [String!]! """ The priority of the issue. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. """ priority: Float! """ Display name for priority: No priority, Urgent, High, Medium, or Low. """ priorityLabel: String! """ The issue’s position within its priority group, with lower values first. This order is separate from sortOrder, which is used for other manually sorted lists. """ prioritySortOrder: Float! """ The project that the issue is associated with. Null if the issue is not part of any project. """ project: Project """ Milestone within the issue’s project. Null if no milestone is assigned. """ projectMilestone: ProjectMilestone """ Emoji reaction summary for the issue, grouped by emoji type. Contains the count and reacting user information for each emoji. """ reactionData: JSONObject! """ Reactions associated with the issue. """ reactions: [Reaction!]! """ The recurring template that created the issue. Null if none is recorded or the template was deleted. """ recurringIssueTemplate: Template """ Relations whose source is this issue. For a blocks relation, this issue blocks relatedIssue; also read inverseRelations to find relations pointing to this issue. """ relations( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueRelationConnection! """ Releases associated with the issue. """ releases( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned releases. """ filter: ReleaseFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ReleaseConnection! """ Shared access metadata for this issue. """ sharedAccess: IssueSharedAccess! """ Deadline after which the current SLA is breached. Null if no SLA is set. """ slaBreachesAt: DateTime """ Time the current SLA enters high risk. Null if no SLA is set. """ slaHighRiskAt: DateTime """ Time the current SLA enters medium risk. Null if no SLA is set. """ slaMediumRiskAt: DateTime """ Time the current SLA started. Null if no SLA is set. """ slaStartedAt: DateTime """ How SLA days are counted: all for calendar days, or onlyBusinessDays for the team’s working days. """ slaType: String """ The user who last snoozed the issue in triage. Null if no snoozing user is recorded, the snooze was cleared, or the user was deleted. """ snoozedBy: User """ Time until which the issue is hidden from triage. Null if it is not snoozed. """ snoozedUntilAt: DateTime """ The issue’s position in manually sorted lists, with lower values first. Use a value between two neighboring issues to place it between them; Linear may adjust positions to avoid collisions. """ sortOrder: Float! """ The comment from which this issue was created. Null if none is recorded or the comment was deleted. """ sourceComment: Comment """ Time the issue entered a started status. Cleared when moved back to triage, backlog, or an unstarted status. """ startedAt: DateTime """ Time the issue most recently entered triage. Null if it has never entered triage. """ startedTriageAt: DateTime """ The issue’s current status in its team’s workflow. The status name is customizable; its type identifies the workflow category, such as started or completed. """ state: WorkflowState! """ The periods the issue spent in each status, ordered from oldest to newest. Re-entering a status creates a new interval; an interval with no endedAt is still open. Use last to fetch the most recent intervals. """ stateHistory( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int ): IssueStateSpanConnection! """ The issue’s position among its parent’s direct sub-issues, with lower values first. Null for top-level issues. This order is independent of the issue’s position in team lists. """ subIssueSortOrder: Float """ Users who are subscribed to the issue. """ subscribers( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned subscribers. """ filter: UserFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Include disabled and suspended accounts. Defaults to false. """ includeDisabled: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): UserConnection! """ The external services the issue is synced with. """ syncedWith: [ExternalEntityInfo!] """ The team that owns the issue. Its settings determine the available statuses, estimation scale, and cycle schedule. """ team: Team! """ The issue title. """ title: String! """ Whether the issue is in the trash: true for a trashed issue, null otherwise. Trashed issues are also archived and are scheduled for permanent deletion after the grace period. """ trashed: Boolean """ Time the issue last left triage. Null before triage is completed or after re-entering triage. """ triagedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The URL for opening this issue in Linear. Access to the page still depends on the viewer’s workspace and issue permissions. """ url: String! } """ A result and its pagination cursor. """ type IssueSearchResultEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: IssueSearchResult! } """ Metadata about an issue's shared access state, including which users the issue is shared with and any field restrictions for shared-only viewers. """ type IssueSharedAccess { """ Issue update fields the viewer cannot modify due to shared-only access. """ disallowedIssueFields: [IssueSharedAccessDisallowedField!]! """ Whether this issue has been shared with users outside the team. """ isShared: Boolean! """ The number of users this issue is shared with. """ sharedWithCount: Int! """ Users this issue is shared with. """ sharedWithUsers: [User!]! """ Whether the viewer can access this issue only through issue sharing. """ viewerHasOnlySharedAccess: Boolean! } """ Issue update fields that are disallowed for users with only shared access. """ enum IssueSharedAccessDisallowedField { cycleId projectId projectMilestoneId teamId } """ Policy controlling whether and by whom issues in a team can be shared with non-team-members. """ enum IssueSharingPolicy { adminsOnly allMembers disabled } """ Payload for issue SLA webhook events. """ type IssueSlaWebhookPayload { """ The type of action that triggered the webhook. """ action: String! """ The time the payload was created. """ createdAt: DateTime! """ The issue that the SLA event is about. """ issueData: IssueWebhookPayload! """ ID of the organization for which the webhook belongs to. """ organizationId: String! """ The type of resource. """ type: String! """ URL for the issue. """ url: String """ The ID of the webhook that sent this event. """ webhookId: String! """ Unix timestamp in milliseconds when the webhook was sent. """ webhookTimestamp: Float! } """ Issue sorting options. """ input IssueSortInput { """ Sort by assignee name """ assignee: AssigneeSort """ Sort by issue completion date """ completedAt: CompletedAtSort """ Sort by issue creation date """ createdAt: CreatedAtSort """ Sort by customer name """ customer: CustomerSort """ Sort by number of customers associated with the issue """ customerCount: CustomerCountSort """ Sort by number of important customers associated with the issue """ customerImportantCount: CustomerImportantCountSort """ Sort by customer revenue """ customerRevenue: CustomerRevenueSort """ Sort by Cycle start date """ cycle: CycleSort """ Sort by delegate name """ delegate: DelegateSort """ Sort by issue due date """ dueDate: DueDateSort """ Sort by estimate """ estimate: EstimateSort """ Sort by label """ label: LabelSort """ Sort by label group """ labelGroup: LabelGroupSort """ [ALPHA] Sort by number of links associated with the issue """ linkCount: LinkCountSort """ Sort by manual order """ manual: ManualSort """ Sort by Project Milestone target date """ milestone: MilestoneSort """ Sort by priority """ priority: PrioritySort """ Sort by Project name """ project: ProjectSort """ Sort by most recent release date """ release: ReleaseSort """ Sort by the root issue """ rootIssue: RootIssueSort """ Sort by SLA status """ slaStatus: SlaStatusSort """ Sort by Team name """ team: TeamSort """ Sort by issue title """ title: TitleSort """ Sort by issue update date """ updatedAt: UpdatedAtSort """ Sort by workflow state type """ workflowState: WorkflowStateSort } """ One continuous period during which an issue stayed in a particular status. Returning to the same status produces a separate span. Use startedAt and endedAt to calculate time spent in the status; the current span has no end time. """ type IssueStateSpan { """ The time the issue left the status, which is the exclusive end of this interval. Null for the currently open span; use the current time when calculating its elapsed duration. """ endedAt: DateTime """ The unique identifier of the state span. """ id: ID! """ The time the issue entered the status for this interval. This is the inclusive start of the span. """ startedAt: DateTime! """ The status for this interval. Null if the status is no longer available. """ state: WorkflowState """ The workflow state identifier for this span. """ stateId: ID! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type IssueStateSpanConnection { """ The page's results paired with their cursors. """ edges: [IssueStateSpanEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [IssueStateSpan!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A result and its pagination cursor. """ type IssueStateSpanEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: IssueStateSpan! } """ An issue status changed notification type. """ scalar IssueStatusChangedNotificationType """ Payload for a terminal issue status change notification. """ type IssueStatusChangedNotificationWebhookPayload { """ The actor who caused the notification. """ actor: UserChildWebhookPayload """ The ID of the actor who caused the notification. """ actorId: String """ The time at which the entity was archived. """ archivedAt: String """ The time at which the entity was created. """ createdAt: String! """ The ID of the external user who caused the notification. """ externalUserActorId: String """ The ID of the entity. """ id: String! """ The issue this notification belongs to. """ issue: IssueWithDescriptionChildWebhookPayload! """ The ID of the issue this notification belongs to. """ issueId: String! """ A terminal issue status change notification type. """ type: IssueStatusChangedNotificationType! """ The time at which the entity was updated. """ updatedAt: String! """ The ID of the user who received the notification. """ userId: String! } """ Filters issue creation and update events using the issue's values in the event. All supplied conditions must match. IDs must be UUIDs. Exclusions with `neq` or `nin` do not match an unset relationship, such as an unassigned issue. """ input IssueSubscriptionFilter { """ Filter by assignee ID. """ assigneeId: IDComparator """ Filter by parent issue ID. """ parentId: IDComparator """ Filter by project ID. """ projectId: IDComparator """ Filters by issue status UUID. """ stateId: IDComparator """ Filter by team ID. """ teamId: IDComparator } """ IssueSuggestion collection filtering options. """ input IssueSuggestionCollectionFilter { """ Compound filters, all of which need to be matched by the suggestion. """ and: [IssueSuggestionCollectionFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that needs to be matched by all suggestions. """ every: IssueSuggestionFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for the collection length. """ length: NumberComparator """ Compound filters, one of which need to be matched by the suggestion. """ or: [IssueSuggestionCollectionFilter!] """ Filters that needs to be matched by some suggestions. """ some: IssueSuggestionFilter """ Comparator for the suggestion state. """ state: StringComparator """ Filters that the suggested label must satisfy. """ suggestedLabel: IssueLabelFilter """ Filters that the suggested project must satisfy. """ suggestedProject: NullableProjectFilter """ Filters that the suggested team must satisfy. """ suggestedTeam: NullableTeamFilter """ Filters that the suggested user must satisfy. """ suggestedUser: NullableUserFilter """ Comparator for the suggestion type. """ type: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ IssueSuggestion filtering options. """ input IssueSuggestionFilter { """ Compound filters, all of which need to be matched by the suggestion. """ and: [IssueSuggestionFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Compound filters, one of which need to be matched by the suggestion. """ or: [IssueSuggestionFilter!] """ Comparator for the suggestion state. """ state: StringComparator """ Filters that the suggested label must satisfy. """ suggestedLabel: IssueLabelFilter """ Filters that the suggested project must satisfy. """ suggestedProject: NullableProjectFilter """ Filters that the suggested team must satisfy. """ suggestedTeam: NullableTeamFilter """ Filters that the suggested user must satisfy. """ suggestedUser: NullableUserFilter """ Comparator for the suggestion type. """ type: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Return type for AI-generated issue title suggestions based on customer request content. """ type IssueTitleSuggestionFromCustomerRequestPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The AI-suggested issue title based on the customer request content. """ title: String! } """ The association between one issue and one release. An issue can belong to several releases, with a separate link for each pair. The link’s UUID is distinct from both the issue and release UUIDs. """ type IssueToRelease implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The issue that is linked to the release. """ issue: Issue! """ The release that the issue is linked to. """ release: Release! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type IssueToReleaseConnection { """ The page's results paired with their cursors. """ edges: [IssueToReleaseEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [IssueToRelease!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The issue and release to connect. Supply an issue UUID or human-readable identifier and the release UUID. Each pair can have only one active association. """ input IssueToReleaseCreateInput { """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The identifier of the issue. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String! """ UUID of the release. """ releaseId: String! } """ A result and its pagination cursor. """ type IssueToReleaseEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: IssueToRelease! } """ The created link between an issue and a release. """ type IssueToReleasePayload { """ The link that was created. """ issueToRelease: IssueToRelease! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ An issue unassignment notification type. """ scalar IssueUnassignedFromYouNotificationType """ Payload for an issue unassignment notification. """ type IssueUnassignedFromYouNotificationWebhookPayload { """ The actor who caused the notification. """ actor: UserChildWebhookPayload """ The ID of the actor who caused the notification. """ actorId: String """ The time at which the entity was archived. """ archivedAt: String """ The time at which the entity was created. """ createdAt: String! """ The ID of the external user who caused the notification. """ externalUserActorId: String """ The ID of the entity. """ id: String! """ The issue this notification belongs to. """ issue: IssueWithDescriptionChildWebhookPayload! """ The ID of the issue this notification belongs to. """ issueId: String! """ An issue unassignment notification type. """ type: IssueUnassignedFromYouNotificationType! """ The time at which the entity was updated. """ updatedAt: String! """ The ID of the user who received the notification. """ userId: String! } """ The changes to make to an existing issue. Omit a field to keep its current value; each nullable field describes how to clear it. Lists such as labelIds and subscriberIds replace existing assignments, while addedLabelIds and removedLabelIds change only the specified labels. """ input IssueUpdateInput { """ Label UUIDs to add without replacing the full list. Cannot be combined with labelIds. """ addedLabelIds: [String!] """ Release UUIDs to add without replacing the full list. Cannot be combined with releaseIds. """ addedReleaseIds: [String!] """ UUID of the new assignee. Null unassigns the issue. """ assigneeId: String """ Record that this status change was caused by closing the parent issue. Requires stateId. """ autoClosedByParentClosing: Boolean """ UUID of a cycle in the issue’s team. Null removes the cycle, subject to the team’s automatic cycle assignment settings. """ cycleId: String """ The UUID of the agent to delegate work to. Changing the delegate can start an agent session; pass null to remove the delegate, or omit this field to keep the current one. """ delegateId: String """ The replacement issue description in Markdown. Send an empty string to clear it, or omit this field to keep the current description. Null also leaves it unchanged. This replaces the full description rather than appending to it. """ description: String """ Due date in YYYY-MM-DD format, without a time or time zone. Null clears it. """ dueDate: TimelessDate """ The numeric estimate, from 0 to 64, mapped to the nearest value in the team’s configured scale. Zero is accepted only when the team allows it. Pass null to clear the estimate, or omit it to keep the current value. """ estimate: Int """ Whether people with shared access to the parent also receive access to this issue. Setting true requires a parent issue. Omit this field to keep the current setting. """ inheritsSharedAccess: Boolean """ Replacement list of label UUIDs. An empty list removes all labels. Cannot be combined with addedLabelIds or removedLabelIds. """ labelIds: [String!] """ UUID of the template to record as last applied. Does not apply template values. Pass null to clear the recorded template, or omit to keep it. """ lastAppliedTemplateId: String """ The UUID or identifier of the new parent issue, such as ENG-123. Pass null to make this a top-level issue, or omit it to keep the current parent. An issue cannot be its own ancestor. """ parentId: String """ The priority of the issue. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. """ priority: Int """ Position among issues with the same priority. Lower values appear first. """ prioritySortOrder: Float """ UUID or identifier of a project that includes the issue’s team. Null removes the project and milestone. """ projectId: String """ UUID of a milestone in the issue’s project. Null removes the milestone. """ projectMilestoneId: String """ Replacement list of release UUIDs. An empty list removes all release links. Cannot be combined with addedReleaseIds or removedReleaseIds. """ releaseIds: [String!] """ Label UUIDs to remove without replacing the full list. Cannot be combined with labelIds. """ removedLabelIds: [String!] """ Release UUIDs to remove without replacing the full list. Cannot be combined with releaseIds. """ removedReleaseIds: [String!] """ How to count time for the issue’s SLA: all for calendar days, or onlyBusinessDays for the team’s working days. Omit it to keep the current setting. Changing it recalculates the risk thresholds for an existing SLA. """ slaType: SLADayCountType """ The UUID of the user recorded as snoozing the issue. For API requests, Linear sets this from the acting user when snoozedUntilAt changes; you cannot change it independently. """ snoozedById: String """ The time until which to hide the issue from triage. Pass null to clear the snooze. Linear records the acting user as snoozedBy when a snooze is set. """ snoozedUntilAt: DateTime """ Position in manually sorted lists. Lower values appear first. """ sortOrder: Float """ UUID of a status in the issue’s team. A status change updates lifecycle times and may change cycle membership. Moving to the reserved duplicate status requires an existing duplicate relation; use issueRelationCreate to mark an issue as a duplicate. """ stateId: String """ Position among the parent’s sub-issues. Lower values appear first. """ subIssueSortOrder: Float """ The complete replacement list of subscriber UUIDs. An empty list removes the current subscribers; omitting the field keeps them. Assignee, delegate, or mention changes can add subscribers as part of the same update. """ subscriberIds: [String!] """ The UUID of the destination team. Moving an issue gives it a new team identifier and maps team-specific values, such as status and labels, to the destination team. Its UUID and previous identifiers are preserved. """ teamId: String """ The replacement issue title. Omit to keep the current title; an empty string or null is not accepted. """ title: String """ The trash marker for an already archived issue. Set true to mark it as trashed, or null to remove that marker while keeping it archived. Use issueDelete to trash an active issue and issueUnarchive to restore it to normal issue lists. """ trashed: Boolean } """ Payload for an issue webhook. """ type IssueWebhookPayload { """ The time at which the issue was added to a cycle. """ addedToCycleAt: String """ The time at which the issue was added to a project. """ addedToProjectAt: String """ The time at which the issue was added to a team. """ addedToTeamAt: String """ The time at which the entity was archived. """ archivedAt: String """ The user that is assigned to the issue. """ assignee: UserChildWebhookPayload """ The ID of the user that is assigned to the issue. """ assigneeId: String """ The time at which the issue was auto-archived. """ autoArchivedAt: String """ The time at which the issue was auto-closed. """ autoClosedAt: String """ The bot actor data for this issue. """ botActor: String """ The time at which the issue was canceled. """ canceledAt: String """ The time at which the issue was completed. """ completedAt: String """ The time at which the entity was created. """ createdAt: String! """ The user that created the issue. """ creator: UserChildWebhookPayload """ The ID of the user that created the issue. """ creatorId: String """ The cycle that the issue belongs to. """ cycle: CycleChildWebhookPayload """ The ID of the cycle that the issue belongs to. """ cycleId: String """ The agent user that the issue is delegated to. """ delegate: UserChildWebhookPayload """ The ID of the agent user that the issue is delegated to. """ delegateId: String """ The description of the issue. """ description: String """ The description data of the issue. """ descriptionData: String """ The due date of the issue. """ dueDate: String """ The estimate of the complexity of the issue.. """ estimate: Float """ The external user that created the issue. """ externalUserCreator: ExternalUserChildWebhookPayload """ The ID of the external user that created the issue. """ externalUserCreatorId: String """ The ID of the entity. """ id: String! """ The identifier of the issue. """ identifier: String! """ Integration type that created this issue, if applicable. """ integrationSourceType: String """ Id of the labels associated with this issue. """ labelIds: [String!]! """ The labels associated with this issue. """ labels: [IssueLabelChildWebhookPayload!]! """ The ID of the last template that was applied to the issue. """ lastAppliedTemplateId: String """ The project milestone that the issue belongs to. """ milestone: ProjectMilestoneChildWebhookPayload @deprecated(reason: "Use `projectMilestone` instead.") """ The issue's unique number. """ number: Float! """ The ID of the parent issue. """ parentId: String """ Previous identifiers of the issue if it has been moved between teams. """ previousIdentifiers: [String!]! """ The priority of the issue. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. """ priority: Float! """ The label of the issue's priority. """ priorityLabel: String! """ The order of the item in relation to other items in the organization, when ordered by priority. """ prioritySortOrder: Float! """ The project that the issue belongs to. """ project: ProjectChildWebhookPayload """ The ID of the project that the issue belongs to. """ projectId: String """ The project milestone that the issue belongs to. """ projectMilestone: ProjectMilestoneChildWebhookPayload """ The ID of the project milestone that the issue belongs to. """ projectMilestoneId: String """ The reaction data for this issue. """ reactionData: JSONObject! """ The ID of the recurring issue template that created the issue. """ recurringIssueTemplateId: String """ The releases associated with this issue. """ releases: [ReleaseChildWebhookPayload!]! """ The time at which the issue would breach its SLA. """ slaBreachesAt: String """ The time at which the issue would enter SLA high risk. """ slaHighRiskAt: String """ The time at which the issue would enter SLA medium risk. """ slaMediumRiskAt: String """ The time at which the issue's SLA started. """ slaStartedAt: String """ The type of SLA the issue is under. """ slaType: String """ The time until an issue will be snoozed in Triage view. """ snoozedUntilAt: String """ The order of the item in relation to other items in the organization. """ sortOrder: Float! """ The ID of the source comment that the issue was created from. """ sourceCommentId: String """ The time at which the issue was moved into started state. """ startedAt: String """ The time at which the issue entered triage. """ startedTriageAt: String """ The issue's current workflow state. """ state: WorkflowStateChildWebhookPayload! """ The ID of the issue's current workflow state. """ stateId: String! """ The order of the item in the sub-issue list. Only set if the issue has a parent. """ subIssueSortOrder: Float """ The IDs of the users that are subscribed to the issue. """ subscriberIds: [String!]! """ The entity this issue is synced with. """ syncedWith: JSONObject """ The team that the issue belongs to. """ team: TeamChildWebhookPayload """ The ID of the team that the issue belongs to. """ teamId: String! """ The issue's title. """ title: String! """ A flag that indicates whether the issue is in the trash bin. """ trashed: Boolean """ The time at which the issue was triaged. """ triagedAt: String """ The time at which the entity was updated. """ updatedAt: String! """ The URL of the issue. """ url: String! } """ Certain properties of an issue, including its description. """ type IssueWithDescriptionChildWebhookPayload { """ The description of the issue. """ description: String """ The ID of the issue. """ id: String! """ The identifier of the issue. """ identifier: String! """ The ID of the team that the issue belongs to. """ team: TeamChildWebhookPayload! """ The ID of the team that the issue belongs to. """ teamId: String! """ The title of the issue. """ title: String! """ The URL of the issue. """ url: String! } """ JSON data whose shape is defined by the field using it. Inputs accept a JSON-encoded string or a value that the API encodes for you. Responses preserve the field's stored representation: some fields return an encoded string to parse, while others return a JSON object or array directly. Check the field's description for its format. """ scalar JSON """ JSON embedded directly in the response, with no extra decoding needed. Inputs accept an object, array, or JSON-encoded string. The field using this scalar defines the expected structure and allowed keys. """ scalar JSONObject """ A Linear record of a project on a connected Jira site that has been imported, synced with a team, or both. id is the Linear UUID; externalId and key identify the project in Jira. team describes the active sync destination, while linearTeam can also identify the destination of the latest import. Projects never imported or synced are not listed. """ type JiraProject implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The last reported error reading the project’s issue types and fields from Jira. Null when no error is recorded. """ configurationError: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who linked the project or first imported it. For a link made by a background job, the user who connected the Jira site. Null if the user has been deleted. """ creator: User """ The Jira project ID, such as 10016. Unique only within one Jira site. """ externalId: String! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Progress of the project’s latest import. """ importStatus: JiraProjectImportStatus! """ The number of issues the project's latest import created. Null until that import completes. """ importedIssueCount: Int """ The Jira integration of the site that hosts the project. """ integration: Integration! """ Whether issues created in the team go to this Jira project. A team has at most one default project, and only a two-way sync can be it. """ isDefault: Boolean! """ The Jira project key, such as ENG. Jira admins can change it, and Linear then updates it. """ key: String! """ The project's newest import that the user can see, with its status, progress, and error. Null when the project has none. """ latestImport: IssueImport """ The synced team, or the destination of the latest import if not syncing. Null if the team has not been created yet or the caller cannot access it. """ linearTeam: Team """ The Jira project name. """ name: String! """ The direction in which the project syncs with its team. Null when the project does not sync. """ syncDirection: JiraSyncDirection """ The time at which sync last turned on for the project. Null if the project never synced. """ syncEnabledAt: DateTime """ Current sync state. afterImport means syncing will start after the running import completes. """ syncStatus: JiraProjectSyncStatus! """ The Linear team the project syncs with. Null when the project does not sync with a team. """ team: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ The Jira projects of one connected Jira site to migrate to Linear. """ input JiraProjectBatchMigrateInput { """ The identifier of the Jira integration of the site that hosts every project. """ integrationId: String! """ The projects to migrate: 1 to 50, each at most once. """ projects: [JiraProjectBatchMigrateProjectInput!]! } """ Results of starting a batch of Jira project migrations. Each project is checked independently, so successful projects can start even when success is false for the batch. Follow each project's jiraProject and issueImport to track the background work; retry only the failed projects. """ type JiraProjectBatchMigratePayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ One result per project, in input order. """ projects: [JiraProjectMigrationResult!]! """ Whether every project is migrating. False when a project failed its checks; the projects that passed still started. """ success: Boolean! } """ One Jira project to import, sync with a Linear team, or both. Give exactly one of externalId and key, and at least one of import and sync. An import can target an existing team or create one from teamName; sync without an import requires an existing team. If both are requested, synchronization starts after the import completes. """ input JiraProjectBatchMigrateProjectInput { """ The Jira project ID, such as 10016. """ externalId: String """ The import of the project's existing issues. Omit to only sync. Several imports into one team run one at a time. """ import: JiraProjectMigrateImportInput """ The Jira project key, such as ENG. Case-insensitive. """ key: String """ How the project syncs. With an import, sync starts once the import completes. Omit to only import. Requires a team identifier when there is no import. """ sync: JiraProjectMigrateSyncInput """ The identifier or key of the team to import into and sync with. An import of a project that already syncs must go into the team it syncs with. """ teamId: String """ Name for a new team to create during import. Requires import and team-creation permission. Ignored when teamId selects an existing team. Leading and trailing whitespace is removed, and a number is added if another team already uses the name. """ teamName: String } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type JiraProjectConnection { """ The page's results paired with their cursors. """ edges: [JiraProjectEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [JiraProject!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A result and its pagination cursor. """ type JiraProjectEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: JiraProject! } """ Filters Jira project records by their Linear integration, Jira project key, synced team, or common entity fields. Combine integrationId and key when the same project key may exist on more than one connected Jira site. """ input JiraProjectFilter { """ Compound filters, all of which need to be matched by the Jira project. An empty list adds no constraint. """ and: [JiraProjectFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Compares the Linear UUID of the Jira integration that hosts this project, not the Jira site or project ID. """ integrationId: IDComparator """ Comparator for the Jira project key, such as ENG. """ key: StringComparator """ Compound filters, one of which needs to be matched by the Jira project. An empty list adds no constraint. """ or: [JiraProjectFilter!] """ Filters that the team the project syncs with must satisfy. Use `{ null: true }` to find the projects that do not sync. """ team: NullableTeamFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Progress of the Jira project’s latest import into Linear. """ enum JiraProjectImportStatus { """ The import is being deleted, with the issues it created. """ deleting """ The import expired before it completed. """ expired """ The import failed before it completed. """ failed """ The import completed. """ imported """ The import is reading issues from Jira or creating them in Linear. """ importing """ The project has no import. """ none """ The import has not started. It waits for the imports into its team that were requested before it, or for the workspace's other Jira imports. """ queued } """ Options for importing a Jira project's existing issues through its workspace integration. Choose whether to include stale or closed issues and how to map Jira users. This copies existing issues; ongoing synchronization is configured separately with sync. """ input JiraProjectMigrateImportInput { """ Whether to import closed and done issues. They are imported archived. """ includeClosedIssues: Boolean! """ Whether to import issues not updated in the last 6 months. They are imported archived. """ includeStaleIssues: Boolean! """ A JQL filter that limits which of the project's issues are imported. Linear adds it to the project's query, so it cannot reach other projects. """ jql: String """ Which Jira users to map to Linear users. """ users: ImportUsersOption! } """ How a Jira project syncs with its team. """ input JiraProjectMigrateSyncInput { """ Use bidirectional to create issues from either Linear or Jira, or jiraToLinear to create issues from Jira only. Both modes sync changes to already linked issues back to Jira. The legacyJiraToLinear mode is not accepted for a new migration. """ syncDirection: JiraSyncDirection! } """ Why one project of a Jira project migration failed its checks. """ type JiraProjectMigrationError { """ The stable code of the failure. """ code: JiraProjectMigrationErrorCode! """ A message that explains the failure to the user. """ message: String! } """ Why one project of a Jira project migration failed its checks. """ enum JiraProjectMigrationErrorCode { """ The project appears more than once in the migration. """ duplicateProject """ A Jira import of the workspace is being deleted, or, for a project that only syncs, one of its own imports. Retry once it finishes. """ importDeletionRunning """ The JQL filter does not parse. """ invalidJql """ The project has no import and no sync, no team, a new team without an import, or not exactly one of an ID and a key. """ invalidOptions """ Linear cannot sign in to Jira with the site's connection. """ jiraAuthFailed """ Jira rate limited the checks. Retry later. """ jiraRateLimited """ Jira did not answer the checks, or answered with something they cannot read. Retry later. """ jiraUnavailable """ The legacy one-way sync was asked for. Only links that already use it keep it. """ legacySyncDirection """ Two-way sync was asked for, and the site's connection lacks Create Issues on the project. """ missingCreateIssuesPermission """ Inviting users was asked for without the permission to invite users. """ missingInvitePermission """ The user's own Jira account cannot access the project, or cannot sign in to Jira. """ missingJiraAccess """ A new team was asked for without the team creation permission. """ missingTeamCreationPermission """ The site's connection lacks the global ADMINISTER permission, which Linear needs to create the project's webhook. """ missingWebhookPermission """ The import would read no issues. """ noMatchingIssues """ Sync was asked for a project that already syncs. A project that only syncs, and already syncs with the same team in the same direction, counts as started instead. """ projectAlreadySyncing """ The project has a queued import, or a running one that changed in the last 24 hours. An import by the same user with the same choices counts as started instead. """ projectBeingImported """ The project was already migrating as asked when the checks began, but its import completed or its link changed before the migration could start. Send the project again. """ projectChanged """ The ID or key is not in the site's project list. """ projectNotFound """ The site's connection cannot read the project. """ projectNotReadable """ An import was asked into a team other than the one the project syncs with. """ projectSyncsWithAnotherTeam """ The team inherits its parent's workflow statuses, which an import would need to create. """ teamInheritsWorkflowStatuses """ The user cannot access the team. """ teamNotAccessible """ The team does not exist or is archived. """ teamNotFound """ The project's new team would exceed the workspace's team limit. The projects that pass their other checks take the room left under the limit in input order. """ teamQuotaExceeded } """ The result for one project in a Jira migration request, identified by its zero-based index. success means the requested migration is running or was already running with the same settings, not that the import finished. error explains a failed check, and the returned records let you track progress. """ type JiraProjectMigrationResult { """ Why the project failed its checks and did not start. Null when the project is migrating. """ error: JiraProjectMigrationError """ The Jira project ID. Null when the project was not found on the site. """ externalId: String """ The position of the project in the input, from 0. """ index: Int! """ The number of issues the import reads, counted by the checks before it started. Null when the checks did not count them: for a project that only syncs, one that failed before the count, or one that was already migrating when the checks began. """ issueCount: Int """ The import that the migration started, or the queued or running import of a project that was already migrating. Null for a project that only syncs, or one that failed its checks. """ issueImport: IssueImport """ The Jira project that the migration wrote, or the existing one of a project that was already migrating. For a project that failed its checks, its existing Jira project, if any. """ jiraProject: JiraProject """ The Jira project key, read from Jira when the checks counted the project's issues. Null when the project was not found on the site. """ key: String """ The Jira project name. Null when the project was not found on the site. """ name: String """ Whether the project is migrating: the migration started it, or an earlier call already migrates it as asked. """ success: Boolean! } """ The current synchronization state between a Jira project and its Linear team. """ enum JiraProjectSyncStatus { """ The project starts syncing once its running import completes. """ afterImport """ The project syncs both ways with its team. """ bidirectional """ The project syncs from Jira to its team, in the one-way or legacy one-way mode. """ jiraToLinear """ The project does not sync with a team. """ notSyncing } """ The direction in which a Jira project syncs with its Linear team. """ enum JiraSyncDirection { """ Changes sync both ways, and issues created in the Linear team can create issues in Jira. """ bidirectional """ Issues are created from Jira only. Changes to synced issues still sync back to Jira. """ jiraToLinear """ Issues are created from Jira only, and no changes sync back to Jira. Only links that already use it keep it. """ legacyJiraToLinear } """ Issue label-group sorting options. """ input LabelGroupSort { """ The label-group id to sort by """ labelGroupId: String! """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ The selection mode of a label group. """ enum LabelGroupType { multiSelect singleSelect } """ A notification subscription scoped to a specific issue label. The subscriber receives notifications for events related to issues with this label. """ type LabelNotificationSubscription implements Entity & Node & NotificationSubscription { """ Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists. """ active: Boolean! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ 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. """ contextViewType: ContextViewType """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The custom view that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ customView: CustomView """ The customer that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ customer: Customer """ The cycle that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ cycle: Cycle """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Whether initiative update notifications also include updates from sub-initiatives. Applies only when initiative updates are enabled and the workspace supports sub-initiatives. """ includeSubInitiativeUpdates: Boolean! """ The initiative that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ initiative: Initiative """ The label subscribed to. """ label: IssueLabel! """ The notification event types that this subscription will deliver to the subscriber. """ notificationSubscriptionTypes: [String!]! """ The project that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ project: Project """ The user who will receive notifications from this subscription. """ subscriber: User! """ The team that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ team: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user that this notification subscription is scoped to, for user-specific view subscriptions. Null if the subscription targets a different entity type. """ user: User """ 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. """ userContextViewType: UserContextViewType } """ Issue label sorting options. """ input LabelSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ [ALPHA] Issue link count sorting options. """ input LinkCountSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Result of signing out one or more sessions. """ type LogoutResponse { """ Whether the operation was successful. """ success: Boolean! } """ Issue manual sorting options. """ input ManualSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Issue project milestone options. """ input MilestoneSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } type Mutation { """ Publishes an activity to your agent’s session and updates its lifecycle. Thoughts and actions report ongoing work; a response completes the turn unless it has the continue signal, an elicitation waits for user input, and an error records a failed turn. The session must be unarchived and owned by the authenticated app user. Use the agent app’s OAuth or workload identity token; personal API keys cannot publish agent activities. """ agentActivityCreate( """ The agent activity object to create. """ input: AgentActivityCreateInput! ): AgentActivityPayload! """ Starts an active session for your authenticated agent app on an existing issue comment thread. Supply the UUID of an unarchived root comment; replies and threads that already have a session are rejected. The caller must have access to the issue. Use the returned session ID when publishing activities. """ agentSessionCreateOnComment( """ The agent session object to create. """ input: AgentSessionCreateOnComment! ): AgentSessionPayload! """ Starts an active session for your authenticated agent app and creates its comment thread on the issue. The issue must be accessible and writable. Supply its UUID or identifier, then use the returned session ID to publish progress and results with agentActivityCreate. """ agentSessionCreateOnIssue( """ The agent session object to create. """ input: AgentSessionCreateOnIssue! ): AgentSessionPayload! """ Updates your agent’s session title, external links, or plan. Only the app user that owns the session can change these fields. Omitted fields remain unchanged, while each supplied plan or externalUrls list replaces that value. Updates other than a title-only change acknowledge a pending or stale session by making it active; publishing an activity still determines the next turn status. """ agentSessionUpdate( """ The identifier of the agent session to update. """ id: String! """ A partial agent session object to update the agent session with. """ input: AgentSessionUpdateInput! ): AgentSessionPayload! """ Updates external links on a session owned by the authenticated agent app. A pending or stale session becomes active. """ agentSessionUpdateExternalUrl( """ The identifier of the agent session to update. """ id: String! """ The agent session object to update. """ input: AgentSessionUpdateExternalUrlInput! ): AgentSessionPayload! """ Creates reusable Markdown instructions for the Linear Agent, owned by the authenticated user. Omit teamId for a personal skill, or provide a team UUID to share it with that team. Creating a team skill requires permission to manage the team’s agent skills. The returned skill contains the saved instructions and display details. """ agentSkillCreate( """ The agent skill object to create. """ input: AgentSkillCreateInput! ): AgentSkillPayload! """ Deletes an agent skill and its inherited copies. Inherited skills must be deleted from the team that owns the source skill. """ agentSkillDelete( """ The identifier of the agent skill to delete. """ id: String! ): DeletePayload! """ Updates a skill the caller can manage. Omitted fields remain unchanged, and a supplied body replaces the full instruction text. For a team skill, the caller needs agent skill management permission; moving it also requires that permission in the destination team. Inherited copies cannot be edited directly—update their source skill instead. """ agentSkillUpdate( """ The identifier of the agent skill to update. """ id: String! """ Data to update the agent skill with. """ input: AgentSkillUpdateInput! ): AgentSkillPayload! """ Registers an export key for Airbyte. Requires integration-creation and export permissions and a plan with data export. The key can read private-team data. """ airbyteIntegrationConnect( """ Airbyte integration settings. """ input: AirbyteConfigurationInput! ): IntegrationPayload! """ Creates an attachment, or updates the existing attachment with the same URL on the same issue. This is useful for links and metadata managed by your integration. Use attachmentLinkURL or a service-specific link mutation when you want Linear to fetch integration metadata and apply its supported link behavior. """ attachmentCreate( """ The attachment object to create. """ input: AttachmentCreateInput! ): AttachmentPayload! """ Deletes the attachment record from its issue. This removes the link in Linear; it does not delete the external resource. """ attachmentDelete( """ The identifier of the attachment to delete. """ id: String! ): DeletePayload! """ Link a Discord message to an issue. Requires a connected Discord integration. """ attachmentLinkDiscord( """ The Discord channel ID for the message to link. """ channelId: String! """ Display name credited with creating the attachment. Available only to OAuth applications using actor=app. """ createAsUser: String """ Avatar URL for createAsUser. Requires createAsUser and an OAuth application using actor=app. """ displayIconUrl: String """ Optional attachment ID that may be provided through the API. """ id: String """ The issue for which to link the Discord message. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String! """ The Discord message ID for the message to link. """ messageId: String! """ The title to use for the attachment. """ title: String """ The Discord message URL for the message to link. """ url: String! ): AttachmentPayload! """ Link a Front conversation to an issue. Requires a connected Front integration. """ attachmentLinkFront( """ The Front conversation ID to link. """ conversationId: String! """ Display name credited with creating the attachment. Available only to OAuth applications using actor=app. """ createAsUser: String """ Avatar URL for createAsUser. Requires createAsUser and an OAuth application using actor=app. """ displayIconUrl: String """ Optional attachment ID that may be provided through the API. """ id: String """ The issue for which to link the Front conversation. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String! """ The title to use for the attachment. """ title: String ): FrontAttachmentPayload! """ Link a GitHub issue to a Linear issue. Uses the matching GitHub integration and sync mapping when available; may fall back to a URL attachment. """ attachmentLinkGitHubIssue( """ Display name credited with creating the attachment. Available only to OAuth applications using actor=app. """ createAsUser: String """ Avatar URL for createAsUser. Requires createAsUser and an OAuth application using actor=app. """ displayIconUrl: String """ Optional attachment ID that may be provided through the API. """ id: String """ The Linear issue for which to link the GitHub issue. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String! """ The title to use for the attachment. """ title: String """ The URL of the GitHub issue to link. """ url: String! ): AttachmentPayload! """ Link a GitHub pull request to an issue. Uses the matching GitHub integration when available; may fall back to a URL attachment. """ attachmentLinkGitHubPR( """ Display name credited with creating the attachment. Available only to OAuth applications using actor=app. """ createAsUser: String """ Avatar URL for createAsUser. Requires createAsUser and an OAuth application using actor=app. """ displayIconUrl: String """ Optional attachment ID that may be provided through the API. """ id: String """ The issue for which to link the GitHub pull request. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String! """ The kind of link between the issue and the pull request. """ linkKind: GitLinkKind """ The title to use for the attachment. """ title: String """ The URL of the GitHub pull request to link. """ url: String! ): AttachmentPayload! """ Links a GitLab merge request to an issue. Supply the merge-request URL, number, and full project path including any groups. Linear uses a matching integration when available and otherwise creates a basic URL attachment. """ attachmentLinkGitLabMR( """ Display name credited with creating the attachment. Available only to OAuth applications using actor=app. """ createAsUser: String """ Avatar URL for createAsUser. Requires createAsUser and an OAuth application using actor=app. """ displayIconUrl: String """ Optional attachment ID that may be provided through the API. """ id: String """ The issue for which to link the GitLab merge request. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String! """ The GitLab merge request number to link. """ number: Float! """ The path name to the project including any (sub)groups. E.g. linear/main/client. """ projectPathWithNamespace: String! """ The title to use for the attachment. """ title: String """ The URL of the GitLab merge request to link. """ url: String! ): AttachmentPayload! """ Link an Intercom conversation to an issue. Requires a connected Intercom integration. """ attachmentLinkIntercom( """ The Intercom conversation ID to link. """ conversationId: String! """ Display name credited with creating the attachment. Available only to OAuth applications using actor=app. """ createAsUser: String """ Avatar URL for createAsUser. Requires createAsUser and an OAuth application using actor=app. """ displayIconUrl: String """ Optional attachment ID that may be provided through the API. """ id: String """ The issue for which to link the Intercom conversation. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String! """ An optional Intercom conversation part ID to link to """ partId: String """ The title to use for the attachment. """ title: String ): AttachmentPayload! """ Links a Jira issue to a Linear issue. The URL selects a connected Jira site; if it identifies no connected site, Linear uses the workspace’s sole Jira integration. With multiple Jira integrations, provide a URL for the intended site. """ attachmentLinkJiraIssue( """ Display name credited with creating the attachment. Available only to OAuth applications using actor=app. """ createAsUser: String """ Avatar URL for createAsUser. Requires createAsUser and an OAuth application using actor=app. """ displayIconUrl: String """ Optional attachment ID that may be provided through the API. """ id: String """ The issue for which to link the Jira issue. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String! """ The Jira issue key or ID to link. """ jiraIssueId: String! """ The title to use for the attachment. """ title: String """ URL used to select the connected Jira site and as a fallback if the Jira issue cannot be fetched. """ url: String ): AttachmentPayload! """ Link a Salesforce case to an issue. Requires a connected Salesforce integration and a valid case URL. """ attachmentLinkSalesforce( """ Display name credited with creating the attachment. Available only to OAuth applications using actor=app. """ createAsUser: String """ Avatar URL for createAsUser. Requires createAsUser and an OAuth application using actor=app. """ displayIconUrl: String """ Optional attachment ID that may be provided through the API. """ id: String """ The issue for which to link the Salesforce case. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String! """ The title to use for the attachment. """ title: String """ The URL of the Salesforce case to link. """ url: String! ): AttachmentPayload! """ Link an existing Slack message to an issue. This creates a rich attachment using the workspace's Slack integration. """ attachmentLinkSlack( """ Display name credited with creating the attachment. Available only to OAuth applications using actor=app. """ createAsUser: String """ Avatar URL for createAsUser. Requires createAsUser and an OAuth application using actor=app. """ displayIconUrl: String """ Optional attachment ID that may be provided through the API. """ id: String """ The issue to which to link the Slack message. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String! """ Sync the Slack thread with issue comments and import existing replies. Defaults to false; the thread cannot already be synced elsewhere. """ syncToCommentThread: Boolean """ The title to use for the attachment. """ title: String """ The Slack message URL for the message to link. """ url: String! ): AttachmentPayload! """ Links a URL to an issue and, when recognized, uses the workspace’s matching integration to fetch richer details. Supported integrations can add behaviors such as status updates. If no matching integration can enrich the link, Linear creates a basic URL attachment. """ attachmentLinkURL( """ Display name credited with creating the attachment. Available only to OAuth applications using actor=app. """ createAsUser: String """ Avatar URL for createAsUser. Requires createAsUser and an OAuth application using actor=app. """ displayIconUrl: String """ The id for the attachment. """ id: String """ The issue for which to link the url. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String! """ The title to use for the attachment. """ title: String """ The url to link. """ url: String! ): AttachmentPayload! """ Link a Zendesk ticket to an issue. Requires a connected Zendesk integration. """ attachmentLinkZendesk( """ Display name credited with creating the attachment. Available only to OAuth applications using actor=app. """ createAsUser: String """ Avatar URL for createAsUser. Requires createAsUser and an OAuth application using actor=app. """ displayIconUrl: String """ Optional attachment ID that may be provided through the API. """ id: String """ The issue for which to link the Zendesk ticket. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String! """ The Zendesk ticket ID to link. """ ticketId: String! """ The title to use for the attachment. """ title: String """ The URL of the Zendesk ticket to link. """ url: String ): AttachmentPayload! """ Sync an existing Slack attachment with an issue comment thread and import existing replies. Requires a connected Slack integration whose bot can post in the channel; the Slack thread cannot already be synced elsewhere. """ attachmentSyncToSlack( """ The ID of the Slack attachment to begin syncing. """ id: String! ): AttachmentPayload! """ Updates an existing attachment’s title, subtitle, metadata, or icon. title is required even when changing another field, and metadata replaces the full stored object. This mutation does not move the attachment or change its URL. """ attachmentUpdate( """ The identifier of the attachment to update. """ id: String! """ A partial attachment object to update the attachment with. """ input: AttachmentUpdateInput! ): AttachmentPayload! """ Creates a comment on one resource, or a reply when parentId is supplied. You must be allowed to comment on that resource. For issue comments, the author is subscribed to the issue unless doNotSubscribeToIssue is true. """ commentCreate( """ The comment object to create. """ input: CommentCreateInput! ): CommentPayload! """ Deletes a comment and, for a root comment, its replies. You must be allowed to delete the comment and comment on its resource. Deleting a reply selected as the resolution reopens the parent thread. """ commentDelete( """ The identifier of the comment to delete. """ id: String! ): DeletePayload! """ Marks a root comment’s thread as resolved by you. You may select one of its replies as resolvingCommentId, or resolve the thread without a specific reply. Pass the root comment ID, even when the discussion ended in a reply. """ commentResolve( """ The identifier of the comment to resolve. """ id: String! """ The identifier of the child comment that resolves the thread. If not provided, the thread is resolved without a specific resolving comment. """ resolvingCommentId: String ): CommentPayload! """ Reopens a resolved thread and clears its resolution time, resolving user, and selected resolving reply. Pass the root comment ID. An already unresolved thread is returned unchanged. """ commentUnresolve( """ The identifier of the comment to unresolve. """ id: String! ): CommentPayload! """ Replaces a comment’s Markdown body and records an edit time. Content edits are restricted to an authorized author or acting user; comments originating in synced Slack messages or Intercom cannot be edited here. Omit body to keep the existing message. """ commentUpdate( """ The identifier of the comment to update. """ id: String! """ A partial comment object to update the comment with. """ input: CommentUpdateInput! """ [INTERNAL] Flag to prevent setting editedAt when updating bodyData (used for background uploads). """ skipEditedAt: Boolean ): CommentPayload! """ Submits a message to Linear support on behalf of the authenticated user. Delivery happens after the request succeeds. """ contactCreate( """ The contact entry to create. """ input: ContactCreateInput! ): ContactPayload! """ Queues a workspace CSV export and emails the requesting user a download link when it is ready. Success confirms scheduling, not completion. Private and restricted teams are excluded unless explicitly selected by their UUIDs. Requires workspace export permission, which permits selecting eligible teams even when the requester is not a member. """ createCsvExportReport( """ UUIDs of private teams to include in the export. Omit or use an empty list to exclude private teams. Restricted teams are selected separately. """ includePrivateTeamIds: [String!] """ UUIDs of restricted teams to include in the export. An empty list excludes restricted teams. Omission falls back to the deprecated includeProtectedTeamIds list, or excludes them if neither list is provided. """ includeRestrictedTeamIds: [String!] ): CreateCsvExportReportPayload! """ Create a notification to remind a user about an initiative update. """ createInitiativeUpdateReminder( """ The identifier of the initiative to remind about. """ initiativeId: String! """ The user identifier to whom the notification will be sent. By default, it is set to the initiative owner. """ userId: String ): InitiativeUpdateReminderPayload! """ Create a notification to remind a user about a project update. """ createProjectUpdateReminder( """ The identifier of the project to remind about. """ projectId: String! """ The user identifier to whom the notification will be sent. By default, it is set to the project lead. """ userId: String ): ProjectUpdateReminderPayload! """ Creates a saved view owned by you. Choose an issue, project, initiative, or update filter and set shared if others in its scope should use it. Display settings can be saved separately with viewPreferencesCreate. """ customViewCreate( """ The properties of the custom view to create. """ input: CustomViewCreateInput! ): CustomViewPayload! """ Deletes a saved view without deleting the items it displayed. Only workspace members can delete views shared with the whole workspace; deleting a view used in a pinned tab also requires permission to edit that tab. Use customViewHasSubscribers to check whether other people receive notifications from the view. """ customViewDelete( """ The identifier of the custom view to delete. """ id: String! ): DeletePayload! """ Updates a saved view’s metadata, scope, or filter configuration. Omitted fields are unchanged. Only workspace members can change views shared with the whole workspace; editing a view used in a pinned tab also requires permission to edit that tab. """ customViewUpdate( """ The identifier of the custom view to update. """ id: String! """ The properties of the custom view to update. """ input: CustomViewUpdateInput! ): CustomViewPayload! """ Creates a customer when the Customers feature is available and enabled in the workspace. Business domains and external IDs must not belong to another customer, including archived customers. If no status is supplied, the first customer status by position is used. """ customerCreate( """ The customer to create. """ input: CustomerCreateInput! ): CustomerPayload! """ Permanently deletes a customer, including an archived customer. Use customerMerge when you want to preserve its requests by transferring them to another customer. """ customerDelete( """ The identifier of the customer to delete. """ id: String! ): DeletePayload! """ Merges two customers by transferring all needs from the source customer to the target customer. The source customer is archived after the merge. Domains, external IDs, and metadata are combined on the target customer. """ customerMerge( """ The ID of the source customer to merge. All needs from this customer will be transferred to the target, and this customer will be archived. """ sourceCustomerId: String! """ The ID of the target customer to merge into. This customer will receive all needs from the source customer and retain its own. """ targetCustomerId: String! ): CustomerPayload! """ Archives a customer need so it can be removed from active request lists without permanently deleting it. Use customerNeedUnarchive to restore the saved need. """ customerNeedArchive( """ The identifier of the customer need to archive. """ id: String! ): CustomerNeedArchivePayload! """ Records a customer request against an issue. Provide input.issueId and optionally identify the customer, add Markdown feedback, or link a source attachment. Multiple needs can be recorded for the same customer and issue. """ customerNeedCreate( """ The customer need to create. """ input: CustomerNeedCreateInput! ): CustomerNeedPayload! """ Creates a customer need from an existing issue attachment. If that attachment already has an archived need, the need is restored and follows the attachment’s current issue. An existing active need is not duplicated. """ customerNeedCreateFromAttachment( """ The customer need to create. """ input: CustomerNeedCreateFromAttachmentInput! ): CustomerNeedPayload! """ Permanently deletes a customer need. By default, its associated issue or project attachment is also deleted. Set keepAttachment to true to retain that source attachment; the linked issue or project is kept. """ customerNeedDelete( """ The identifier of the customer need to delete. """ id: String! """ Whether to keep the attachment associated with the customer need. """ keepAttachment: Boolean ): DeletePayload! """ Restores an archived customer need. The need must currently be archived; its saved feedback and associations are kept. """ customerNeedUnarchive( """ The identifier of the customer need to unarchive. """ id: String! ): CustomerNeedArchivePayload! """ Updates a customer request, including its feedback, customer, priority, or issue association. Only manually added source attachments can be replaced or removed. Use clearAttachment to remove such a source; moving the request to another issue also moves its source attachment. """ customerNeedUpdate( """ Whether to remove the manually added source attachment. Sources managed by an integration cannot be removed this way. A different, nonempty attachmentUrl takes precedence. """ clearAttachment: Boolean """ The identifier of the customer need to update. """ id: String! """ The properties of the customer need to update. """ input: CustomerNeedUpdateInput! ): CustomerNeedUpdatePayload! """ Creates a workspace customer status. Requires permission to manage customer settings and rejects a name or display name already used by another active status. """ customerStatusCreate( """ The CustomerStatus object to create. """ input: CustomerStatusCreateInput! ): CustomerStatusPayload! """ Deletes a customer status. Cannot delete the last remaining status in a workspace, and the status must not be in use by any customers. """ customerStatusDelete( """ The identifier of the customer status to delete. """ id: String! ): DeletePayload! """ Updates a workspace customer status. Requires permission to manage customer settings. Customers using the status retain their association with it. """ customerStatusUpdate( """ The identifier of the customer status to update. """ id: String! """ A partial CustomerStatus object to update the CustomerStatus with. """ input: CustomerStatusUpdateInput! ): CustomerStatusPayload! """ Creates a workspace customer tier. Requires permission to manage customer settings and rejects a name or display name already used by another active tier. """ customerTierCreate( """ The CustomerTier object to create. """ input: CustomerTierCreateInput! ): CustomerTierPayload! """ Deletes a customer tier. The tier must not be in use by any customers. """ customerTierDelete( """ The identifier of the customer tier to delete. """ id: String! ): DeletePayload! """ Updates a workspace customer tier. Requires permission to manage customer settings. Customers using the tier retain their association with it. """ customerTierUpdate( """ The identifier of the customer tier to update. """ id: String! """ A partial CustomerTier object to update the CustomerTier with. """ input: CustomerTierUpdateInput! ): CustomerTierPayload! """ Disconnects a customer from its configured data source integration so the integration no longer updates it. External IDs belonging to that source are cleared. Requires permission to manage workspace customer settings. """ customerUnsync( """ The identifier of the customer to unsync. """ id: String! ): CustomerPayload! """ Updates the supplied customer fields, leaving omitted fields unchanged. For a customer managed by an integration, only fields that are editable in Linear are applied; managed fields are ignored. The request fails if none of the supplied fields are editable. """ customerUpdate( """ The identifier of the customer to update. """ id: String! """ The properties of the customer to update. """ input: CustomerUpdateInput! ): CustomerPayload! """ Finds a customer using the supplied UUID, external ID, Slack channel, or domains, and updates it; otherwise creates one. A name is required when no customer matches. Unlike customerUpdate, this operation can override integration-managed fields, and a tierName can create a new customer tier. """ customerUpsert( """ The customer to create. """ input: CustomerUpsertInput! ): CustomerPayload! """ Archives a cycle and removes its current issues from it. The issues themselves are not archived. An inherited cycle must be managed through its parent team. """ cycleArchive( """ The identifier of the cycle to archive. """ id: String! ): CycleArchivePayload! """ Unsupported. This mutation always returns an error; cycles are generated from the team’s cycle settings. """ cycleCreate( """ The cycle object to create. """ input: CycleCreateInput! ): CyclePayload! @deprecated(reason: "Cycle creation is not supported.") """ Shifts an upcoming cycle and every later cycle in the team by the same number of days. Local times are preserved in the team’s time zone, and the team’s cycle start day is updated. Use this when moving the schedule as a whole; it requires permission to manage the team. """ cycleShiftAll( """ The shift parameters specifying which cycle to start from and how many days to shift. """ input: CycleShiftAllInput! ): CyclePayload! """ Starts the upcoming cycle as of midnight today. Completes the previous cycle if it has not yet ended. Only the next upcoming (not yet started) cycle for the team can be started. """ cycleStartUpcomingCycleToday( """ The identifier of the cycle to start as of midnight today. Must be the upcoming cycle. """ id: String! ): CyclePayload! """ Updates a cycle’s name, description, or schedule and returns the resulting cycle. Date changes can shorten adjacent cycles to prevent overlap. You cannot change an active cycle’s start or a completed cycle’s dates, or edit inherited cycles directly. """ cycleUpdate( """ The identifier of the cycle to update. """ id: String! """ A partial cycle object to update the cycle with. """ input: CycleUpdateInput! ): CyclePayload! """ Creates a document in a project, issue, or release, with optional initial Markdown content. The returned document includes its assigned UUID and metadata; select content to read the resulting body. """ documentCreate( """ The document to create. """ input: DocumentCreateInput! ): DocumentPayload! """ Moves a document to the trash and archives it, including the sub-documents covered by its archive cascade. It is not permanently removed by this mutation. You must be allowed to manage the document; use documentUnarchive to restore it. """ documentDelete( """ The identifier of the document to delete. """ id: String! """ [Internal] Only trash the document if it is still a sub-document of this document. Otherwise the mutation fails and the document is left unchanged. """ ifParentDocumentId: String ): DocumentArchivePayload! """ Restores a trashed document and its eligible sub-documents. You must be allowed to manage the restored documents. If the containing resource is archived, restore that resource first. """ documentUnarchive( """ The identifier of the document to restore. """ id: String! ): DocumentArchivePayload! """ Updates a document’s metadata or replaces its Markdown body. You must have edit access to the document. Supplying a different container moves the document there, which can affect access; omitted fields are left unchanged. """ documentUpdate( """ The identifier of the document to update. Also the identifier from the URL is accepted. """ id: String! """ A partial document object to update the document with. """ input: DocumentUpdateInput! ): DocumentPayload! """ [Internal] Changes what people outside a document's teams can do with a document in a public team or in a project with a public team: edit, comment, or view. It can't be above the document's general access. Only the owner of the document, an owner of one of its teams, or a workspace admin can change it. Comment and view need an owner who can access the document. """ documentUpdateWorkspaceAccess( """ Whether to also change the sub-documents whose levels equal the document's levels before the change. Sub-documents with other levels, without an owner who can access them, or that the user cannot loosen keep their level. """ applyToSubDocuments: Boolean = false """ The identifier of the document. """ id: String! """ The workspace access level of this document when the change was confirmed. When given, the change fails if the document has another level now. """ previousWorkspaceAccess: String """ The new workspace access level: edit, comment, or view. """ workspaceAccess: String! ): DocumentPayload! """ Creates an address that accepts email for one team or issue template. For team and template types, an existing active address for that destination is returned instead of creating another. Use the returned emailAddress as the forwarding destination in your mail provider. Asks creation requires the appropriate plan and integration management permission; team and template addresses require permission to manage their destination. Form templates cannot be used for template intake. """ emailIntakeAddressCreate( """ The email intake address object to create. """ input: EmailIntakeAddressCreateInput! ): EmailIntakeAddressPayload! """ Deletes an email intake address object. """ emailIntakeAddressDelete( """ The identifier of the email intake address to delete. """ id: String! ): DeletePayload! """ Requests a check of the intake address’s custom sending domain after you update its DNS records. The check runs asynchronously: success means a check was requested, not that the domain passed verification. Query sesDomainIdentity.canSendFromCustomDomain and dnsRecords for the result. Returns success=false when no custom domain is configured or the domain is already fully verified. """ emailIntakeAddressRefreshSesDomainStatus( """ The identifier of the email intake address to refresh the domain status for. """ id: String! ): EmailIntakeAddressRefreshSesDomainStatusPayload! """ Generates a new email address for an existing team or template intake configuration. The old address no longer routes incoming mail, so update any forwarding rules or places where you published it. The intake record and its settings are retained. Asks and Asks web addresses do not support rotation through this mutation. """ emailIntakeAddressRotate( """ The identifier of the email intake address. """ id: String! ): EmailIntakeAddressPayload! """ Updates an existing email intake address. """ emailIntakeAddressUpdate( """ The identifier of the email intake address. """ id: String! """ The properties of the email intake address to update. """ input: EmailIntakeAddressUpdateInput! ): EmailIntakeAddressPayload! """ Completes email sign-in using the emailed token and the same clientAuthCode sent with emailUserAccountAuthChallenge. Successful authentication consumes the client binding and sets a session cookie. Use the returned memberships and available or locked workspaces to continue into a workspace; the deprecated token field is not populated. An expired token or a code from a different client cannot complete this flow. """ emailTokenUserAccountAuth( """ The data used for token authentication. """ input: TokenUserAccountAuthInput! ): AuthResolverResponse! """ Unsubscribes a user from the selected email category using the user ID and token from a Linear email. No sign-in is required because the token authorizes the change. An invalid token returns success=false; other email categories and notification channels are unchanged. """ emailUnsubscribe( """ Unsubscription details. """ input: EmailUnsubscribeInput! ): EmailUnsubscribePayload! """ Starts email sign-in and sends a one-time token to the supplied address. Generate and retain a clientAuthCode UUID, then pass it with the emailed token to emailTokenUserAccountAuth within ten minutes. Requesting another challenge replaces the stored client binding for that email. When login challenge verification is enabled, challengeResponse is also required. Success confirms the challenge was accepted; email delivery may finish in the background. """ emailUserAccountAuthChallenge( """ The data used for email authentication. """ input: EmailUserAccountAuthChallengeInput! ): EmailUserAccountAuthChallengeResponse! """ Creates a custom emoji from an image already uploaded to Linear. Its name must be unique in the workspace. The current user is recorded as the creator, and the source is user. """ emojiCreate( """ The emoji object to create. """ input: EmojiCreateInput! ): EmojiPayload! """ Deletes an emoji. """ emojiDelete( """ The identifier of the emoji to delete. """ id: String! ): DeletePayload! """ Adds an external resource to an initiative, project, or release the caller can access and write to. Provide exactly one parent, a destination URL, and the label to show in Linear. Omit sortOrder to place the link last among the parent’s resources. This stores a reference to the URL; it does not upload or copy the destination content. """ entityExternalLinkCreate( """ The entity link object to create. """ input: EntityExternalLinkCreateInput! ): EntityExternalLinkPayload! """ Removes a resource link from Linear and clears any team pins that refer to it. The external URL’s content is unchanged. The caller must have access to the link’s parent scope; archived links can also be deleted. """ entityExternalLinkDelete( """ The identifier of the entity link to delete. """ id: String! ): DeletePayload! """ Changes an unarchived resource link’s URL, display label, or position within its parent’s resources. Omitted fields remain unchanged, and the parent cannot be changed. The link must be writable and within the caller’s permitted scope. """ entityExternalLinkUpdate( """ The identifier of the entity link to update. """ id: String! """ The entity link object to update. """ input: EntityExternalLinkUpdateInput! ): EntityExternalLinkPayload! """ Creates a sidebar favorite for the authenticated user. If it already exists, updates its position and supplied folder instead. """ favoriteCreate( """ The favorite object to create. """ input: FavoriteCreateInput! ): FavoritePayload! """ Removes a favorite from your sidebar. Deleting a custom folder also removes the favorites inside it; the bookmarked entities are unaffected. The mutation succeeds if the favorite no longer exists. """ favoriteDelete( """ The identifier of the favorite reference to delete. """ id: String! ): DeletePayload! """ Changes the position, parent folder, or name of one of your favorites. Omitted fields stay unchanged. The target entity cannot be changed, and predefined live folders cannot be renamed. """ favoriteUpdate( """ The identifier of the favorite to update. """ id: String! """ A partial favorite object to update the favorite with. """ input: FavoriteUpdateInput! ): FavoritePayload! """ Prepares a file upload and returns a signed destination. Upload the raw bytes with HTTP PUT to uploadFile.uploadUrl, using its headers and the supplied Content-Type; start the request within one minute and send exactly size bytes. Once the PUT succeeds, reference uploadFile.assetUrl in an issue description, comment, or attachment. This mutation does not create that reference for you. Workspace file-type restrictions and plan upload limits apply. """ fileUpload( """ MIME type of the uploaded file. """ contentType: String! """ Filename of the uploaded file. """ filename: String! """ Whether anyone with the asset URL can view the uploaded image without authenticating. Omit or set false for a private upload. Only non-SVG images can be public; other file types are rejected when this is true. """ makePublic: Boolean """ Optional metadata encoded as a JSON string, such as {"issueId":"..."} or {"commentId":"..."}. These references record upload context; they do not insert the file into that issue or comment. You still need to use assetUrl when creating or updating the content. """ metaData: JSON """ Exact file size in bytes. The upload request must match this size. """ size: Int! ): UploadPayload! """ Permanently delete an uploaded file by asset URL. This should be used as a last resort and will break comments and documents that reference the asset. """ fileUploadDangerouslyDelete( """ The asset URL of the uploaded file to delete. """ assetUrl: String! ): FileUploadDeletePayload! """ Creates a rule that maps a Git event to an issue status for a team. Requires permission to manage that team. Rules cannot be created for retired teams. """ gitAutomationStateCreate( """ The automation state to create. """ input: GitAutomationStateCreateInput! ): GitAutomationStatePayload! """ Permanently deletes a Git automation rule. Requires permission to manage its team. Removing a branch-specific rule allows the team’s default for that event to apply again. """ gitAutomationStateDelete( """ The identifier of the automation state to delete. """ id: String! ): DeletePayload! """ Updates the status, branch scope, or event of an existing rule. Requires permission to manage its team, and the team must not be retired. Omitted fields keep their values. """ gitAutomationStateUpdate( """ The identifier of the state to update. """ id: String! """ The state to update. """ input: GitAutomationStateUpdateInput! ): GitAutomationStatePayload! """ Creates a team’s target-branch pattern for Git automation. Add automation rules that reference the returned definition to choose the status changes. Requires team-management permission and an active, non-retired team. """ gitAutomationTargetBranchCreate( """ The Git target branch automation to create. """ input: GitAutomationTargetBranchCreateInput! ): GitAutomationTargetBranchPayload! """ Deletes a target-branch definition and its associated automation rules. Future matching events use any remaining applicable rules, including team defaults. Requires team-management permission. """ gitAutomationTargetBranchDelete( """ The identifier of the target branch definition to delete. """ id: String! ): DeletePayload! """ Changes the pattern or matching mode used by every automation rule linked to this definition. Omitted fields stay unchanged. Requires team-management permission; definitions in retired teams cannot be updated. """ gitAutomationTargetBranchUpdate( """ The identifier of the Git target branch automation to update. """ id: String! """ The updates. """ input: GitAutomationTargetBranchUpdateInput! ): GitAutomationTargetBranchPayload! """ Exchanges a Google OAuth code, sets the authentication cookie, and returns workspace access details. May create an account unless disallowSignup is true. """ googleUserAccountAuth( """ The data used for Google authentication. """ input: GoogleUserAccountAuthInput! ): AuthResolverResponse! """ Copies an image from an external URL into Linear’s private upload storage. The URL must let Linear download the image directly; an HTML page containing the image is not accepted. On success, the returned URL refers to the copied image and can be used in Linear content. Unlike fileUpload, this mutation performs the download and upload for you. """ imageUploadFromUrl( """ URL of the file to be uploaded to Linear. """ url: String! ): ImageUploadFromUrlPayload! """ Prepares a file in Linear’s import storage. Upload the raw bytes with HTTP PUT to the returned uploadUrl, using all returned headers and the matching Content-Type. The upload must start within one minute and contain exactly the declared number of bytes. Success prepares the destination; it does not upload the bytes or start an import. """ importFileUpload( """ MIME type of the uploaded file. """ contentType: String! """ Filename of the uploaded file. """ filename: String! """ Optional metadata encoded as a JSON string, such as {"issueId":"..."} or {"commentId":"..."}. These references record upload context; they do not insert the file into that issue or comment. You still need to use assetUrl when creating or updating the content. """ metaData: JSON """ Exact file size in bytes. The upload request must match this size. """ size: Int! ): UploadPayload! """ Changes read or snooze state for the authenticated user’s group of related inbox notifications. Supply a notification UUID from the group and at least one state change. The response includes the requested notification and all notifications changed. """ inboxNotificationUpdate( """ The identifier of the inbox notification to update. """ id: String! """ The inbox state changes to apply. """ input: InboxNotificationUpdateInput! ): InboxNotificationUpdatePayload! """ Adds an initiative label while keeping the other labels. Label groups themselves cannot be applied, and the group’s selection rules still apply. """ initiativeAddLabel( """ The identifier of the initiative to add the label to. """ id: String! """ The identifier of the label to add. """ labelId: String! ): InitiativePayload! """ Archives an initiative. """ initiativeArchive( """ The identifier of the initiative to archive. """ id: String! ): InitiativeArchivePayload! """ Creates an initiative in a workspace where initiatives are enabled. You can assign an owner and lead team at creation. Add projects separately with initiativeToProjectCreate, and build a hierarchy with initiativeRelationCreate. """ initiativeCreate( """ The properties of the initiative to create. """ input: InitiativeCreateInput! ): InitiativePayload! """ Moves an initiative to the trash instead of immediately deleting it permanently. You can restore it with initiativeUnarchive while it remains available. """ initiativeDelete( """ The identifier of the initiative to delete. """ id: String! ): DeletePayload! """ Creates a workspace label or label group for initiatives. Requires workspace label-management permission. Use parentId to place a label in a group. """ initiativeLabelCreate( """ The initiative label to create. """ input: InitiativeLabelCreateInput! ): InitiativeLabelPayload! """ Deletes an initiative label and its children, removing their assignments from initiatives. """ initiativeLabelDelete( """ The identifier of the label to delete. """ id: String! ): DeletePayload! """ Restores a previously retired initiative label, making it available for use on new initiatives. """ initiativeLabelRestore( """ The identifier of the label to restore. """ id: String! ): InitiativeLabelPayload! """ Retires an initiative label. Retired labels remain on existing initiatives but cannot be applied to new ones. """ initiativeLabelRetire( """ The identifier of the label to retire. """ id: String! ): InitiativeLabelPayload! """ Changes the supplied label fields. Omitted fields stay unchanged. Requires workspace label-management permission. """ initiativeLabelUpdate( """ The identifier of the label to update. """ id: String! """ A partial label object to update. """ input: InitiativeLabelUpdateInput! ): InitiativeLabelPayload! """ Adds a child initiative to a parent. Both must be accessible and unarchived, and the workspace must support sub-initiatives. When the new parent overlaps the child’s existing hierarchy, the overlapping parent links are removed as part of the move. Cycles and excessive nesting are rejected. """ initiativeRelationCreate( """ The initiative relation to create. """ input: InitiativeRelationCreateInput! ): InitiativeRelationPayload! """ Removes a parent-child link without deleting either initiative. Deleting a link that no longer exists succeeds without making changes; an existing link still requires access to both initiatives. """ initiativeRelationDelete( """ The identifier of the initiative relation to delete. """ id: String! ): DeletePayload! """ Changes a child initiative’s ordering within its parent. The relation’s endpoints remain unchanged. Both initiatives must be visible to you. """ initiativeRelationUpdate( """ The identifier of the initiative relation to update. """ id: String! """ The properties of the initiative relation to update. """ input: InitiativeRelationUpdateInput! ): InitiativeRelationPayload! """ Removes a label from the initiative while keeping its other labels. The label itself is not deleted. """ initiativeRemoveLabel( """ The identifier of the initiative to remove the label from. """ id: String! """ The identifier of the label to remove. """ labelId: String! ): InitiativePayload! """ Links an accessible, active project to an accessible, active initiative. Neither may be read-only. The link is rejected if the project is already in that initiative or one of its ancestors or descendants. App users need initiative:write scope. """ initiativeToProjectCreate( """ The properties of the initiativeToProject to create. """ input: InitiativeToProjectCreateInput! ): InitiativeToProjectPayload! """ Removes an active project-to-initiative link without deleting either entity. Requires access to the association; app users need initiative:write scope. """ initiativeToProjectDelete( """ The identifier of the initiativeToProject to delete. """ id: String! ): DeletePayload! """ Changes the project’s sort order within the initiative. The initiative and project endpoints cannot be changed through this mutation. """ initiativeToProjectUpdate( """ The identifier of the initiativeToProject to update. """ id: String! """ The properties of the initiativeToProject to update. """ input: InitiativeToProjectUpdateInput! ): InitiativeToProjectPayload! """ Restores an archived or trashed initiative. This makes the existing initiative available again with its saved properties and associations. """ initiativeUnarchive( """ The identifier of the initiative to unarchive. """ id: String! ): InitiativeArchivePayload! """ Updates the supplied fields of an initiative you can access. Omitted fields keep their current values. Changing the lead team can change who can see the initiative, and the owner must be able to access the new team. """ initiativeUpdate( """ The identifier of the initiative to update. """ id: String! """ The properties of the initiative to update. """ input: InitiativeUpdateInput! ): InitiativePayload! """ Archives an update and recalculates the initiative’s health from the remaining updates. You must be the author or have permission to manage workspace entities. Use initiativeUpdateUnarchive to restore it. """ initiativeUpdateArchive( """ The identifier of the initiative update to archive. """ id: String! ): InitiativeUpdateArchivePayload! """ Publishes an update, records the current user as author, captures the initiative’s projects, and refreshes its health. Provide the written message in input.body. """ initiativeUpdateCreate( """ The initiative update object to create. """ input: InitiativeUpdateCreateInput! ): InitiativeUpdatePayload! """ Restores an archived update and recalculates the initiative’s health. You must be the author or have permission to manage workspace entities. """ initiativeUpdateUnarchive( """ The identifier of the initiative update to unarchive. """ id: String! ): InitiativeUpdateArchivePayload! """ Edits an update’s message or health. You must be the author or have permission to manage workspace entities. Editing the latest update while it is less than one hour old also refreshes its project snapshots. """ initiativeUpdateUpdate( """ The identifier of the initiative update to update. """ id: String! """ The properties of the initiative update to update. """ input: InitiativeUpdateUpdateInput! ): InitiativeUpdatePayload! """ Disconnects an integration that supports archiving while retaining its record for a later reconnect. You can archive your own personal connection; workspace connections generally require integration-creation permission. GitHub installation removal and Jira webhook cleanup run in the background, so a successful response can precede the completed disconnection. Services that do not support archiving must use integrationDelete instead. """ integrationArchive( """ The identifier of the integration to archive. """ id: String! ): DeletePayload! """ Connects the public or private Slack channel selected during OAuth to an existing Asks integration. The channel must be in that integration's Slack workspace and must not already be connected. Individual channel connections require full Asks access and permission to manage Asks settings. Check addBot after success and invite the bot manually when true. Direct messages work with Asks without this setup. """ integrationAsksConnectChannel( """ The Slack OAuth code. """ code: String! """ The Slack OAuth redirect URI. """ redirectUri: String! ): AsksChannelConnectPayload! """ Disconnects an integration that supports deletion and removes its connection record. You can remove your own personal connection; workspace connections require integration-creation permission, and team, project, or view connections follow the permissions for that resource. Some services finish external cleanup in the background, so success does not guarantee that cleanup has finished. Services that retain a record for reconnecting must use integrationArchive instead. """ integrationDelete( """ The identifier of the integration to delete. """ id: String! """ Whether to skip deleting the installation on the external service side. """ skipInstallationDeletion: Boolean ): DeletePayload! """ Connects a Discord server using the OAuth code and redirect URI from its authorization flow, and links the authorizing Discord user to your Linear account. A Linear workspace can have one Discord connection, and the Discord server cannot already belong to another Linear workspace's connection. """ integrationDiscord( """ The Discord OAuth code. """ code: String! """ The Discord OAuth redirect URI. """ redirectUri: String! ): IntegrationPayload! """ Connects Figma using an OAuth authorization code and its redirect URI, storing the credentials needed for the workspace integration. The workspace cannot already have an active Figma connection. """ integrationFigma( """ The Figma OAuth code. """ code: String! """ The Figma OAuth redirect URI. """ redirectUri: String! ): IntegrationPayload! """ Connects Front using an OAuth grant. Requires the workspace's support integration plan feature and no existing Front connection. New connections initially reopen linked Front conversations when a Linear issue is completed or canceled; comments do not trigger reopening by default. """ integrationFront( """ The Front OAuth code. """ code: String! """ The Front OAuth redirect URI. """ redirectUri: String! ): IntegrationPayload! """ Starts a GitHub Enterprise Server connection for a GitHub organization or personal account. Open setupUrl to register the app, configure it with webhookSecret, then use installUrl to install it. Call verifyGitHubEnterpriseServerInstallation to check that the app has connected. Success here means the setup record was saved, not that installation is complete. An archived connection for the same organization is reused. """ integrationGitHubEnterpriseServerConnect( """ The base URL of the GitHub Enterprise Server installation. """ githubUrl: String! """ GitHub organization login name. Use an empty string to create the app for a personal account. """ organizationName: String! ): GitHubEnterpriseServerPayload! """ Links your GitHub account using an OAuth code from Linear's GitHub App authorization flow. codeAccess selects the app with repository code access and defaults to false. This is a personal account connection; connecting a workspace's GitHub App installation uses integrationGithubConnect. """ integrationGitHubPersonal( """ The GitHub OAuth code. """ code: String! """ Whether to connect with code access. """ codeAccess: Boolean """ The enterprise URL for GitHub Enterprise Cloud connections. Omit for github.com. """ enterpriseUrl: String ): IntegrationPayload! """ Creates the workspace's GitHub commit integration and returns its webhook secret. Use the secret when configuring the webhook in GitHub; creating this record alone does not configure GitHub to send events. """ integrationGithubCommitCreate: GitHubCommitIntegrationPayload! """ Connects a GitHub App installation to the workspace using its installation ID and OAuth grant. If replacing a connection would make repositories used by GitHub Issues sync inaccessible, the call stops and returns gitHub.lostRepositoryNames. Review that list, then repeat with confirmReplace set to true to accept the change. GitHub Enterprise Cloud connections require the corresponding workspace plan feature. """ integrationGithubConnect( """ The GitHub grant code that's exchanged for OAuth tokens. """ code: String! """ Whether to connect the GitHub App with repository code access. Defaults to false. """ codeAccess: Boolean = false """ Confirm replacing an existing installation after a prior call reported lostRepositoryNames. Defaults to false. """ confirmReplace: Boolean = false """ GitHub Enterprise Cloud hostname, such as acme.ghe.com, without a URL scheme or path. Omit for github.com. """ githubHost: String """ GitHub App installation ID as a positive integer string. """ installationId: String! ): IntegrationPayload! """ Connects the GitHub Import App installation authorized by the supplied OAuth code. This creates the connection used to discover repositories for import; it does not import issues by itself. """ integrationGithubImportConnect( """ The GitHub grant code that's exchanged for OAuth tokens. """ code: String! """ GitHub App installation ID as a positive integer string. """ installationId: String! ): IntegrationPayload! """ Queues a refresh of repositories and labels available to a GitHub import integration. Success confirms scheduling. """ integrationGithubImportRefresh( """ The id of the integration to update. """ id: String! ): IntegrationPayload! """ Removes repository code access from a GitHub connection. Check action in the response: Done means the change is complete, while InstallBasicApp means you need to finish installing the basic GitHub App before setup is complete. """ integrationGithubRemoveCodeAccess( """ The ID of the integration to remove code access from. """ integrationId: String! ): IntegrationGithubRemoveCodeAccessPayload! """ Connects a GitLab instance after checking its access token. Configure the GitLab webhook with the returned webhookSecret after a successful response. Only one GitLab connection is allowed per workspace. Token or connectivity failures return success=false and diagnostic error fields instead of creating a connection. """ integrationGitlabConnect( """ GitLab access token for the instance being connected. Linear validates it before saving the connection and uses its reported scopes and expiry when available. """ accessToken: String! """ ISO timestamp when the access token expires. Used as a fallback when `validationProjectPath` is set and `personal_access_tokens/self` is unreachable. """ expiresAt: String """ Base URL of the GitLab instance, including its URL scheme. Linear uses this host for token validation and subsequent API requests. """ gitlabUrl: String! """ Whether the access token is limited to a read-only scope. Used as a fallback when `validationProjectPath` is set and `personal_access_tokens/self` is unreachable. """ readonly: Boolean """ Optional path or numeric ID of a project to use for the setup health check. Set this when the GitLab tenant blocks non-project API endpoints. """ validationProjectPath: String ): GitLabIntegrationCreatePayload! """ Rotates the GitLab token, revoking the previous token and saving its replacement. """ integrationGitlabRotate( """ UUID of the GitLab integration. """ integrationId: String! ): IntegrationPayload! """ Tests the stored access token against a self-hosted GitLab instance, using the validation project when one is configured. A successful check clears the connection's authentication and transient failure state. On failure, inspect success and the error fields for provider or proxy diagnostics. This mutation does not support the GitLab.com OAuth connection. """ integrationGitlabTestConnection( """ The ID of the GitLab integration to test. """ integrationId: String! ): GitLabTestConnectionPayload! """ Enables or disables automatic self-rotation of the GitLab token. """ integrationGitlabUpdateRotationSettings( """ Whether Linear should automatically rotate the GitLab token. """ enabled: Boolean! """ UUID of the GitLab integration. """ integrationId: String! ): IntegrationPayload! """ Replaces a GitLab integration's access token after validating the replacement against its existing host and validation project. The connection and webhook stay in place. Supply readonly and expiresAt when the instance cannot report that token information. """ integrationGitlabUpdateToken( """ Replacement GitLab access token. Validated before it replaces the current token. """ accessToken: String! """ The time at which the replacement token expires. Used when GitLab cannot return its expiry. """ expiresAt: DateTime """ UUID of the GitLab integration. """ integrationId: String! """ Whether the replacement token has read-only access. Required when GitLab cannot return its scopes. """ readonly: Boolean ): IntegrationPayload! """ Connects Gong using an OAuth authorization code and its redirect URI. Requires the workspace's Gong integration plan feature and integration-creation permission. The workspace cannot already have an active Gong connection. """ integrationGong( """ The Gong OAuth code. """ code: String! """ The Gong OAuth redirect URI. """ redirectUri: String! ): IntegrationPayload! """ Connects Google Sheets using an OAuth grant that includes both access and refresh tokens. The workspace can have one active Google Sheets connection. This call saves the connection; use refreshGoogleSheetsData to request an export refresh. """ integrationGoogleSheets( """ The Google OAuth code. """ code: String! ): IntegrationPayload! """ Connects an Intercom workspace using an OAuth code and the redirect URI used during authorization. The workspace needs access to the support integration plan feature. Reconnecting the same Intercom workspace refreshes credentials and keeps its settings; disconnect first to switch to a different Intercom workspace. An Intercom workspace cannot be connected to another Linear workspace at the same time. """ integrationIntercom( """ The Intercom OAuth code. """ code: String! """ The Intercom domain URL to use for the integration. Defaults to app.intercom.com if not provided. """ domainUrl: String """ The Intercom OAuth redirect URI. """ redirectUri: String! ): IntegrationPayload! """ Uninstalls the Intercom connection and removes its Linear record. It also completes local cleanup when access was already revoked in Intercom. Calling this after the Linear connection has been removed returns an error. """ integrationIntercomDelete: IntegrationPayload! """ [DEPRECATED] Updates settings on the Intercom integration. """ integrationIntercomSettingsUpdate( """ A partial Intercom integration settings object to update the integration settings with. """ input: IntercomSettingsInput! ): IntegrationPayload! @deprecated(reason: "Manage Intercom integration settings in Linear workspace settings.") """ Links your Jira account to an existing workspace Jira integration. Supply either the OAuth authorization code for Jira Cloud or a personal access token for Jira Server. When the workspace has more than one possible Jira connection, supply workspaceIntegrationId to choose which one to link. """ integrationJiraPersonal( """ The Jira personal access token, when connecting using a PAT. """ accessToken: String """ The Jira OAuth code, when connecting using OAuth. """ code: String """ The workspace Jira integration to connect to. Required when the connection would otherwise be ambiguous. """ workspaceIntegrationId: String ): IntegrationPayload! """ Enables Loom integration for the workspace. """ integrationLoom: IntegrationPayload! @deprecated(reason: "Not available.") """ Links your Microsoft account to Linear. Its tenant must already be connected through a workspace Microsoft Teams integration. Reconnecting the same account refreshes credentials when the existing personal connection has an authentication error; otherwise, disconnect the existing personal connection before linking another account. """ integrationMicrosoftPersonalConnect( """ The Microsoft OAuth code. """ code: String! """ The Microsoft OAuth redirect URI. """ redirectUri: String! ): IntegrationPayload! """ Connects the Microsoft tenant identified by the OAuth grant to this Linear workspace. An archived connection to the same tenant is restored. Multiple tenants require the corresponding plan feature, and a tenant cannot be actively connected to another Linear workspace. Personal Microsoft accounts are linked separately with integrationMicrosoftPersonalConnect. """ integrationMicrosoftTeams( """ The Microsoft OAuth code. """ code: String! """ The Microsoft OAuth redirect URI. """ redirectUri: String! ): IntegrationPayload! """ Records interest in an integration that is not currently available. No authentication is required, and this does not create an integration or start an installation. Success means the request was accepted for analytics; it does not promise that the integration will be built. """ integrationRequest( """ Integration request details. """ input: IntegrationRequestInput! ): IntegrationRequestPayload! """ Connects Salesforce using an OAuth grant and verifies that the authorizing user can access the Linear managed package, including its required license. Requires the workspace's enterprise integration plan feature. Reconnecting an active connection to the same subdomain refreshes credentials while keeping settings and templates; restoring an archived connection runs setup again. Disconnect first to switch to a different Salesforce subdomain. """ integrationSalesforce( """ The Salesforce OAuth code. """ code: String! """ The PKCE code verifier matching the code_challenge sent on authorization. """ codeVerifier: String! """ The Salesforce OAuth redirect URI. """ redirectUri: String! """ Salesforce installation subdomain. Use the subdomain alone, containing letters, numbers, and dashes, rather than a complete URL. """ subdomain: String! ): IntegrationPayload! """ Connects a Sentry installation by exchanging its grant code and confirming installation with Sentry. The workspace can have one active Sentry connection. The new connection initially enables completing linked Linear issues when Sentry issues are resolved and reopening them when Sentry issues are unresolved. """ integrationSentryConnect( """ The Sentry grant code that's exchanged for OAuth tokens. """ code: String! """ The Sentry installationId to connect with. """ installationId: String! """ The slug of the Sentry organization being connected. """ organizationSlug: String! ): IntegrationPayload! """ Connects a Slack workspace to the main Linear Slack app using an OAuth grant. Reconnecting an archived connection restores it with fresh credentials. Connecting multiple Slack workspaces requires the corresponding plan feature; the same Slack workspace cannot have two active connections or belong to another Linear workspace's connection. """ integrationSlack( """ The Slack OAuth code. """ code: String! """ The Slack OAuth redirect URI. """ redirectUri: String! """ The Slack OAuth scopes the client requested. Used to warn when Slack grants fewer scopes than requested. """ requestedScopes: [String!] """ [DEPRECATED] Whether or not v2 of Slack OAuth should be used. No longer used. """ shouldUseV2Auth: Boolean ): IntegrationPayload! """ Connects a Slack workspace to the Linear Asks app for issue intake. Requires a workspace plan with Asks access. An archived connection to the same Slack workspace is restored with fresh credentials. Multiple Slack workspaces require the corresponding plan feature, and each Slack workspace can be connected to Asks in only one Linear workspace. """ integrationSlackAsks( """ The Slack OAuth code. """ code: String! """ The Slack OAuth redirect URI. """ redirectUri: String! """ The Slack OAuth scopes the client requested. Used to warn when Slack grants fewer scopes than requested. """ requestedScopes: [String!] ): IntegrationPayload! """ Connects the Slack channel selected during OAuth to a custom view and creates default notification settings if needed. You must be able to edit the view, and the view cannot already have this type of Slack connection. Check the response for remaining bot or workspace setup. """ integrationSlackCustomViewNotifications( """ The Slack OAuth code. """ code: String! """ UUID of the Linear custom view whose notifications should be sent to the selected Slack channel. """ customViewId: String! """ The Slack OAuth redirect URI. """ redirectUri: String! ): SlackChannelConnectPayload! """ Links a customer to a public or private Slack channel in a connected Asks workspace. Both the customer and channel must be unlinked. """ integrationSlackCustomerChannelLink( """ The Slack OAuth code. """ code: String! """ The customer to link the Slack channel with """ customerId: String! """ The Slack OAuth redirect URI. """ redirectUri: String! ): SuccessPayload! """ Queues an import of custom emoji from Slack using the OAuth grant. Success confirms scheduling. """ integrationSlackImportEmojis( """ The Slack OAuth code. """ code: String! """ The Slack OAuth redirect URI. """ redirectUri: String! ): IntegrationPayload! """ Fetches the current Slack workspace name and updates the name stored on an active Slack or Asks integration. This refreshes Linear's display name; it does not rename the workspace in Slack. A valid integration token is required. """ integrationSlackOrAsksUpdateSlackTeamName( """ The integration ID. """ integrationId: String! ): IntegrationSlackWorkspaceNamePayload! """ Connects the Slack channel selected during OAuth to receive project updates from across the workspace. Requires integration-management permission. Check addBot and the nudge fields in the response for any remaining Slack setup. """ integrationSlackOrgProjectUpdatesPost( """ The Slack OAuth code. """ code: String! """ The Slack OAuth redirect URI. """ redirectUri: String! ): SlackChannelConnectPayload! """ Links your Slack account for personal notifications and opens a direct message with the Linear app. The Slack workspace must already have a Slack or Asks connection. You can have one active personal Slack connection, and the same Slack account cannot be linked to another user in this Linear workspace. An archived connection owned by you can be restored. """ integrationSlackPersonal( """ The Slack OAuth code. """ code: String! """ The Slack OAuth redirect URI. """ redirectUri: String! ): IntegrationPayload! """ Connects the Slack channel selected during OAuth to a Linear team and creates its default notification settings if needed. Requires permission to manage the team, and each team can have one such connection. Direct messages are not supported. Check addBot and the nudge fields in the response for any remaining Slack setup. """ integrationSlackPost( """ The Slack OAuth code. """ code: String! """ The Slack OAuth redirect URI. """ redirectUri: String! """ [DEPRECATED] Whether or not v2 of Slack OAuth should be used. No longer used. """ shouldUseV2Auth: Boolean """ UUID of the Linear team whose notifications should be sent to the selected Slack channel. This is not a Slack workspace or channel ID. """ teamId: String! ): SlackChannelConnectPayload! """ Connects the Slack channel selected during OAuth to a project you can access. Choose notifications for project notifications or updates for project updates; each service can have one connection per project. The call also links the channel to the project and creates default notification settings if needed. Check the response for remaining bot or workspace setup. """ integrationSlackProjectPost( """ The Slack OAuth code. """ code: String! """ UUID of the Linear project whose notifications or updates should be sent to the selected Slack channel. """ projectId: String! """ The Slack OAuth redirect URI. """ redirectUri: String! """ The service to enable once connected, either 'notifications' or 'updates'. """ service: String! ): SlackChannelConnectPayload! """ Makes an issue template available through Slack Asks, Slack, Intercom, Zendesk, or Salesforce. Slack Asks requires permission to manage Asks, a connected intake destination, and a team template; linking the template enables triage for that team. Other supported integrations require integration-management permission and accept up to ten templates. Private-team templates are supported only by Slack Asks. """ integrationTemplateCreate( """ The template, integration, and optional external resource to link. """ input: IntegrationTemplateCreateInput! ): IntegrationTemplatePayload! """ Removes a template's link to an integration or intake destination. The template itself and the integration remain available. Requires permission to manage the Asks integration for Slack Asks, or integration-management permission for other services. """ integrationTemplateDelete( """ The identifier of the template-integration link to delete. """ id: String! ): DeletePayload! """ Connects Zendesk using an OAuth grant and creates or selects the user that authors internal notes. Requires the workspace's support integration plan feature. Reconnecting the same subdomain refreshes credentials and keeps existing settings; an archived connection is restored. Disconnect the current integration before switching to a different Zendesk subdomain. """ integrationZendesk( """ Bearer token that authenticates API requests instead of a Zendesk OAuth token. Requires `customApiUrl`; no OAuth exchange is performed. """ accessToken: String """ The Zendesk user ID to use as the author of internal notes instead of creating a bot user. Omit to keep the configured user on reconnect, or pass null to create a new bot user. """ botUserId: String """ Role for the Zendesk bot user Linear creates: end-user or agent. Omit to retain the role on reconnect; new connections default to end-user. Ignored when botUserId selects an existing user. """ botUserRole: String """ The Zendesk OAuth authorization code. """ code: String """ Custom base URL for Zendesk API requests, such as a proxy in front of Zendesk. OAuth requests always use the standard subdomain URL. """ customApiUrl: String """ The Zendesk OAuth redirect URI. Required when connecting with `code`. """ redirectUri: String """ The Zendesk OAuth scopes. Required when connecting with `code`. """ scope: String """ Zendesk subdomain, such as acme for acme.zendesk.com. Use letters, numbers, and dashes without a scheme or domain suffix. """ subdomain: String! ): IntegrationPayload! """ Creates notification preferences for a destination you can access, with edit permission required for custom views. Supply exactly one team, project, initiative, or view. Settings must not already exist for that destination and, for team settings, context view; use integrationsSettingsUpdate when they do. An app writing initiative preferences also needs initiative:write scope. """ integrationsSettingsCreate( """ The settings to create. """ input: IntegrationsSettingsCreateInput! ): IntegrationsSettingsPayload! """ Updates the event preferences on an existing integration settings record. Only supplied booleans change, and the destination stays the same. Custom-view settings require permission to edit the view; apps changing initiative settings need initiative:write scope. For older settings that combined update and comment notifications, the first edit preserves the previous comment preference independently. """ integrationsSettingsUpdate( """ The identifier of the settings to update. """ id: String! """ A settings object to update the settings with. """ input: IntegrationsSettingsUpdateInput! ): IntegrationsSettingsPayload! """ Add a label without replacing the issue’s existing labels. The label must be available to the issue’s team. """ issueAddLabel( """ The identifier of the issue to add the label to. """ id: String! """ The identifier of the label to add. """ labelId: String! ): IssuePayload! """ Archives an issue and its sub-issues, keeping their data available for later restoration. Archived issues are excluded from normal issue lists. Pass trash only when you want the deletion grace period to apply instead. """ issueArchive( """ The identifier of the issue to archive. """ id: String! """ Whether to trash the issue and its sub-issues. """ trash: Boolean ): IssueArchivePayload! """ Creates one to 50 issues in a single batch. If any creation fails, none of the issues in the batch are saved. Put parent inputs before their sub-issues and supply parent UUIDs to connect issues created in the same batch. """ issueBatchCreate( """ A list of issue objects to create. """ input: IssueBatchCreateInput! ): IssueBatchPayload! """ Applies the same update input to one to 50 issues. The batch runs as one transaction, so a failed update rolls back the other updates. Use the returned issues to read the resulting values. """ issueBatchUpdate( """ One to 50 distinct issue UUIDs to update. """ ids: [UUID!]! """ A partial issue object to update the issues with. """ input: IssueUpdateInput! ): IssueBatchPayload! """ Creates an issue in the chosen team and returns it with its assigned identifier. You can supply a template to populate defaults and create any sub-issues it defines. Team settings and automation may set values such as the initial status, assignee, and cycle. """ issueCreate( """ The issue object to create. """ input: IssueCreateInput! ): IssuePayload! """ Moves an issue to the trash and trashes its unarchived sub-issues that you can access. Trashed issues can be restored during the 30-day grace period; permanentlyDelete skips that period and requires workspace entity-management permission. """ issueDelete( """ The identifier of the issue to delete. """ id: String! """ Delete immediately, skipping the 30-day grace period. Requires workspace permission to manage entities and access to the issue’s team. """ permanentlyDelete: Boolean ): IssueArchivePayload! """ Stop syncing an issue with the Jira or GitHub integration identified by its sync attachment. """ issueExternalSyncDisable( """ The ID of the sync attachment to disable. """ attachmentId: String! ): IssuePayload! """ Starts fetching Asana tasks into an asynchronous import job. Choose an existing destination team or a new team name. Configure the fetched data and call issueImportProcess to create Linear records. """ issueImportCreateAsana( """ Names of Asana projects in the team. When set, only tasks from these projects are imported. When empty, all projects are imported. """ asanaProjectNames: [String!] """ Name of the source Asana team. """ asanaTeamName: String! """ Asana token to fetch information from the Asana API. """ asanaToken: String! """ ID of issue import. If not provided it will be generated. """ id: String """ Include completed Asana tasks when fetching source data. """ includeClosedIssues: Boolean """ Start creating Linear records after fetching source data, using default mappings. Defaults to false, allowing mappings to be reviewed first. """ instantProcess: Boolean """ UUID of an existing destination team. Provide either teamId or teamName. """ teamId: String """ Name of a new destination team. Provide either teamId or teamName. """ teamName: String ): IssueImportPayload! """ Creates an asynchronous import from a Jira CSV already uploaded to the workspace’s import storage. Choose an existing destination team or a new team name. The response accepts the job; it does not mean the imported records are ready. """ issueImportCreateCSVJira( """ Asset URL of a Jira CSV uploaded to this workspace’s import storage. """ csvUrl: String! """ Jira user account email. """ jiraEmail: String """ Jira installation or cloud hostname. """ jiraHostname: String """ Jira personal access token to access Jira REST API. """ jiraToken: String """ UUID of an existing destination team. To create a team, omit this and provide teamName. """ teamId: String """ Name of a new destination team. Cannot be combined with teamId. """ teamName: String ): IssueImportPayload! """ Starts fetching stories from Shortcut, whose legacy API name is clubhouse, into an asynchronous import job. Choose an existing destination team or a new team name. Configure the fetched data and call issueImportProcess to create Linear records. """ issueImportCreateClubhouse( """ Name of the source Shortcut group. """ clubhouseGroupName: String! """ Shortcut (formerly Clubhouse) token to fetch information from the Clubhouse API. """ clubhouseToken: String! """ ID of issue import. If not provided it will be generated. """ id: String """ Include completed Shortcut stories when fetching source data. """ includeClosedIssues: Boolean """ Start creating Linear records after fetching source data, using default mappings. Defaults to false, allowing mappings to be reviewed first. """ instantProcess: Boolean """ UUID of an existing destination team. Provide either teamId or teamName. """ teamId: String """ Name of a new destination team. Provide either teamId or teamName. """ teamName: String ): IssueImportPayload! """ Starts fetching GitHub issues into an asynchronous import job. Choose an existing destination team or provide a name for a new one, and repositories the workspace can import from. After fetching and configuration, use issueImportProcess to create the Linear records. Requires workspace import permission. """ issueImportCreateGithub( """ GitHub label names to use when filtering the imported issues. Omit or send an empty list to import without a label filter. """ githubLabels: [String!] """ Numeric GitHub repository IDs to import. The workspace must have import access to these repositories. """ githubRepoIds: [Int!] """ Include closed GitHub issues when fetching source data. """ includeClosedIssues: Boolean """ Start creating Linear records after fetching source data, using default mappings. Defaults to false, allowing mappings to be reviewed first. """ instantProcess: Boolean """ UUID of an existing destination team. Provide either teamId or teamName. """ teamId: String """ Name of a new destination team. Provide either teamId or teamName. """ teamName: String ): IssueImportPayload! """ Starts fetching Jira issues into an asynchronous import job. Choose an existing destination team or a new team name and the source Jira project. After fetching and configuration, use issueImportProcess to create the Linear records. Requires workspace import permission. """ issueImportCreateJira( """ ID of issue import. If not provided it will be generated. """ id: String """ Include closed Jira issues when fetching source data. """ includeClosedIssues: Boolean """ Start creating Linear records after fetching source data, using default mappings. Defaults to false, allowing mappings to be reviewed first. """ instantProcess: Boolean """ Jira user account email. """ jiraEmail: String! """ Jira installation or cloud hostname. """ jiraHostname: String! """ Jira project key from which we will import data. """ jiraProject: String! """ Jira personal access token to access Jira REST API. """ jiraToken: String! """ Additional JQL conditions within jiraProject. The project restriction is always applied. """ jql: String """ UUID of an existing destination team. Provide either teamId or teamName. """ teamId: String """ Name of a new destination team. Provide either teamId or teamName. """ teamName: String ): IssueImportPayload! """ Schedules deletion of an import and the data it created, then returns the job with status deleting. This is available within 14 days for eligible imports awaiting configuration, completed imports, or failed imports. You must be the creator or an admin with the destination team’s deletion permission, and another import from the same service must not be processing. """ issueImportDelete( """ ID of the issue import to delete. """ issueImportId: String! ): IssueImportDeletePayload! """ Saves the supplied mappings and schedules creation of Linear records from the fetched source data. The import must be inProgress; otherwise the mappings are saved but success is false. A successful response means processing was accepted, not that it has finished. Linear-to-Linear migrations can only be managed from the Linear app. """ issueImportProcess( """ ID of the issue import which we're going to process. """ issueImportId: String! """ The mapping configuration to use for processing the import. """ mapping: JSONObject! ): IssueImportPayload! """ Saves mapping choices without starting the import. For external-service imports, supply the full replacement mapping. Requires workspace import permission; Linear-to-Linear migrations can only be managed from the Linear app. """ issueImportUpdate( """ The identifier of the issue import. """ id: String! """ The properties of the issue import to update. """ input: IssueImportUpdateInput! ): IssueImportPayload! """ Create a workspace or team label. Requires permission to manage labels in its scope. """ issueLabelCreate( """ The issue label to create. """ input: IssueLabelCreateInput! """ Whether to replace all team-specific labels with the same name with this newly created workspace label (default: false). """ replaceTeamLabels: Boolean ): IssueLabelPayload! """ Deletes a label and its inherited copies. Assignments to that label are removed from issues in the background, so they may remain visible briefly after the mutation succeeds. Retire a label instead if you want to preserve its existing assignments. """ issueLabelDelete( """ The identifier of the label to delete. """ id: String! ): DeletePayload! """ Makes a retired label available for new assignments again. Existing issue assignments are preserved. Restoring a group also restores its child labels. """ issueLabelRestore( """ The identifier of the label to restore. """ id: String! ): IssueLabelPayload! """ Retires a label so it cannot be newly assigned, while keeping it on issues that already use it. Retiring a group also retires its children. Use issueLabelRestore to make the label available again. """ issueLabelRetire( """ The identifier of the label to retire. """ id: String! ): IssueLabelPayload! """ Update a label. Requires permission to manage labels in its scope; inherited labels must be edited at their source. """ issueLabelUpdate( """ The identifier of the label to update. """ id: String! """ A partial label object to update. """ input: IssueLabelUpdateInput! """ Whether to replace all team-specific labels with the same name with this updated workspace label (default: false). """ replaceTeamLabels: Boolean ): IssueLabelPayload! """ Creates a relationship between two issues, replacing any conflicting relation between the pair and reusing an identical one. A duplicate relation closes the source as a duplicate of the target and can move linked customer requests to the target. You must have access to both issues and any permissions required for the merge. """ issueRelationCreate( """ The issue relation to create. """ input: IssueRelationCreateInput! """ Used by client undo operations. Should not be set directly. """ overrideCreatedAt: DateTime ): IssueRelationPayload! """ Removes a relation by its UUID. Removing a duplicate relation also runs the unmerge behavior, including moving customer requests back to the original issue when applicable. """ issueRelationDelete( """ The identifier of the issue relation to delete. """ id: String! ): DeletePayload! """ Changes a relation’s type or the issues it connects. Omitted fields are unchanged, and an issue cannot relate to itself. Changing to or from duplicate also applies the corresponding merge or unmerge behavior. """ issueRelationUpdate( """ The identifier of the issue relation to update. """ id: String! """ The properties of the issue relation to update. """ input: IssueRelationUpdateInput! ): IssueRelationPayload! """ Creates a reminder notification for you at reminderAt. The time must be in the future, and existing reminders for this issue are replaced. The payload returns success without an issue object. """ issueReminder( """ The identifier of the issue to add a reminder for. """ id: String! """ Future time at which to deliver the reminder notification. """ reminderAt: DateTime! ): IssuePayload! """ Remove one label while keeping the issue’s other labels. """ issueRemoveLabel( """ The identifier of the issue to remove the label from. """ id: String! """ The identifier of the label to remove. """ labelId: String! ): IssuePayload! """ Shares an issue with a user who would not otherwise be able to access it. The viewer must have native access to the issue's full sub-issue tree and permission to share issues in the issue's team. Issues that inherit sharing from a parent issue cannot be shared directly. """ issueShare( """ The identifier of the issue to share. """ id: String! """ The identifier of the user to share the issue with. """ userId: String! ): IssuePayload! """ Subscribes a user to issue updates. Omit both userId and userEmail to subscribe yourself, or provide one of them to choose another workspace user. Subscribing an existing subscriber leaves the subscription in place. """ issueSubscribe( """ The identifier of the issue to subscribe to. """ id: String! """ Email of an active workspace user to subscribe. Cannot be combined with userId. """ userEmail: String """ UUID of the user to subscribe. Cannot be combined with userEmail. """ userId: String ): IssuePayload! """ Associates an issue with a release and returns the link. The issue must be editable and both resources accessible; release management must be available in the workspace. If the association already exists, the mutation returns an error rather than reusing it. """ issueToReleaseCreate( """ The properties of the issueToRelease to create. """ input: IssueToReleaseCreateInput! ): IssueToReleasePayload! """ Removes an issue-to-release association by the link’s UUID, keeping the issue and release. The issue must be editable and the release accessible. Returns an error when the link does not exist. """ issueToReleaseDelete( """ The identifier of the issue-to-release association to delete. """ id: String! ): DeletePayload! """ Removes the association between the specified issue and release, keeping both resources. The issue must be editable and the release accessible. Returns an error when the association does not exist. """ issueToReleaseDeleteByIssueAndRelease( """ The identifier of the issue. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String! """ The identifier of the release. """ releaseId: String! ): DeletePayload! """ Restores an archived issue and its sub-issues to normal issue lists. Automatic-archive markers are cleared, and a project association is removed if the project no longer includes the issue’s team. """ issueUnarchive( """ The identifier of the issue to unarchive. """ id: String! ): IssueArchivePayload! """ Stops sharing an issue with a user. The viewer must have native access to the issue's full sub-issue tree and permission to share issues in the issue's team. Issues that inherit sharing from a parent issue cannot be unshared directly. """ issueUnshare( """ The identifier of the issue to stop sharing. """ id: String! """ The identifier of the user to remove from the issue share. """ userId: String! ): IssuePayload! """ Removes a user’s subscription to issue updates. Omit both userId and userEmail to unsubscribe yourself, or provide one of them to choose another workspace user. """ issueUnsubscribe( """ The identifier of the issue to unsubscribe from. """ id: String! """ Email of an active workspace user to unsubscribe. Cannot be combined with userId. """ userEmail: String """ UUID of the user to unsubscribe. Cannot be combined with userEmail. """ userId: String ): IssuePayload! """ Updates an issue by UUID or human-readable identifier and returns its resulting values. Omitted fields keep their values; list inputs replace their existing lists unless an add/remove field is used. Changes can also trigger team workflow behavior, such as automatic cycle assignment. """ issueUpdate( """ The identifier of the issue to update. """ id: String! """ A partial issue object to update the issue with. """ input: IssueUpdateInput! ): IssuePayload! """ Imports or syncs up to 50 projects from one connected Jira site. When both are requested, sync starts after import. Projects are checked independently; retry failed projects only. Repeating an unchanged, running migration returns its existing records. Imports into one team run sequentially. Requires the `admin` scope, access to destination teams, and import permission when importing. """ jiraProjectBatchMigrate( """ The Jira projects to migrate. """ input: JiraProjectBatchMigrateInput! ): JiraProjectBatchMigratePayload! """ Signs out the current session and clears authentication cookies. If the token has no session ID, signs out all sessions for the account. """ logout( """ Optional reason recorded with the sign-out event. It does not change which sessions are revoked. """ reason: String ): LogoutResponse! """ Signs out all sessions for the account, including the current session, and clears authentication cookies. """ logoutAllSessions( """ Optional reason recorded with the sign-out event. It does not change which sessions are revoked. """ reason: String ): LogoutResponse! """ Signs out every other session for the authenticated account while keeping the current session active. """ logoutOtherSessions( """ Optional reason recorded with the sign-out event. It does not change which sessions are revoked. """ reason: String ): LogoutResponse! """ Revokes one sign-in session belonging to the authenticated account. Use an ID returned by authenticationSessions; it may be the current session or another device's session. Requires session JWT authentication. """ logoutSession( """ ID of the session to logout. """ sessionId: String! ): LogoutResponse! """ Archives one of your notifications, removing it from the active inbox. Other notifications in the same group remain unchanged. Use notificationArchiveAll to archive the group. """ notificationArchive( """ The id of the notification to archive. """ id: String! ): NotificationArchivePayload! """ Archives the authenticated user’s active notifications for the selected entity or notification group. """ notificationArchiveAll( """ The entity or notification group whose notifications to change. Supply exactly one identifier. """ input: NotificationEntityInput! ): NotificationBatchActionPayload! """ Subscribes to or unsubscribes from a specific notification category for a given notification channel. For example, subscribe to 'issueAssignment' notifications via the 'email' channel. """ notificationCategoryChannelSubscriptionUpdate( """ The notification category to subscribe to or unsubscribe from """ category: NotificationCategory! """ The notification channel in which to subscribe to or unsubscribe from the category """ channel: NotificationChannel! """ True if the user wants to subscribe, false if the user wants to unsubscribe """ subscribe: Boolean! ): UserSettingsPayload! """ Marks the authenticated user’s active notifications for the selected entity or notification group as read. """ notificationMarkReadAll( """ The entity or notification group whose notifications to change. Supply exactly one identifier. """ input: NotificationEntityInput! """ The time when notification was marked as read. """ readAt: DateTime! ): NotificationBatchActionPayload! """ Marks the authenticated user’s active notifications for the selected entity or notification group as unread. """ notificationMarkUnreadAll( """ The entity or notification group whose notifications to change. Supply exactly one identifier. """ input: NotificationEntityInput! ): NotificationBatchActionPayload! """ Snoozes the authenticated user’s active notifications for the selected entity or notification group. """ notificationSnoozeAll( """ The entity or notification group whose notifications to change. Supply exactly one identifier. """ input: NotificationEntityInput! """ The time until a notification will be snoozed. After that it will appear in the inbox again. """ snoozedUntilAt: DateTime! ): NotificationBatchActionPayload! """ Subscribes the authenticated user to one target and its requested notification types. Rejects an existing subscription to the same target and view. """ notificationSubscriptionCreate( """ The subscription object to create. """ input: NotificationSubscriptionCreateInput! ): NotificationSubscriptionPayload! """ Deletes a notification subscription reference. """ notificationSubscriptionDelete( """ The identifier of the notification subscription reference to delete. """ id: String! ): DeletePayload! @deprecated(reason: "Update `notificationSubscription.active` to `false` instead.") """ Updates a subscription owned by the authenticated user. Use active: false to pause it without deleting its configuration, or replace notificationSubscriptionTypes to change the events you follow. Subscriptions to read-only projects cannot be changed. """ notificationSubscriptionUpdate( """ The identifier of the notification subscription to update. """ id: String! """ A partial notification subscription object to update the notification subscription with. """ input: NotificationSubscriptionUpdateInput! ): NotificationSubscriptionPayload! """ Restores one of your archived notifications. Its read and snooze states are preserved, so a snoozed notification may still be absent from the visible inbox. """ notificationUnarchive( """ The id of the notification to unarchive. """ id: String! ): NotificationArchivePayload! """ Unsnoozes the authenticated user’s active notifications for the selected entity or notification group. """ notificationUnsnoozeAll( """ The entity or notification group whose notifications to change. Supply exactly one identifier. """ input: NotificationEntityInput! """ The time when the notification was unsnoozed. """ unsnoozedAt: DateTime! ): NotificationBatchActionPayload! """ Updates one of the authenticated user’s notifications. Related notifications are unchanged. """ notificationUpdate( """ The identifier of the notification to update. """ id: String! """ A partial notification object to update the notification with. """ input: NotificationUpdateInput! ): NotificationPayload! """ [ALPHA] Archives an OAuth application created by the calling OAuth application. """ oauthApplicationArchive( """ The identifier of the OAuth application to archive. """ id: String! ): OAuthApplicationArchivePayload! """ [ALPHA] Creates an OAuth application private to the current workspace and managed by the calling OAuth application. The caller needs workspace API management permission. Save clientSecret and any webhookSecret from the first successful response. Retrying with the same idempotency key returns the existing unarchived application without updating it and with secrets omitted. Use the application’s id for later management operations and clientId for OAuth flows. """ oauthApplicationCreate( """ The OAuth application object to create. """ input: OAuthApplicationCreateInput! ): OAuthApplicationCreatePayload! """ [ALPHA] Replaces the client secret for an application created by the caller and returns the new secret. Store it before discarding the response; it cannot be retrieved later. Tokens issued through client_credentials are revoked, while tokens from the authorization-code flow remain valid. The caller must be able to manage the application’s credentials, including its private-team access, as well as have workspace API management permission. """ oauthApplicationRotateSecret( """ The identifier of the OAuth application for which to rotate the secret. """ id: String! ): OAuthApplicationRotateSecretPayload! """ [ALPHA] Rotates the webhook signing secret for an OAuth application created by the calling OAuth application. """ oauthApplicationRotateWebhookSecret( """ The identifier of the OAuth application for which to rotate the webhook secret. """ id: String! ): OAuthApplicationRotateWebhookSecretPayload! """ [ALPHA] Updates an unarchived application created by the calling OAuth application in this workspace. Omitted fields keep their current values. Enabling client_credentials or changing the webhook destination requires access to every private team available to the app, or workspace owner permission; an app with access to all private teams requires an owner. Workspace API management permission is required for every update. """ oauthApplicationUpdate( """ The identifier of the OAuth application to update. """ id: String! """ A partial OAuth application object to update. """ input: OAuthApplicationUpdateInput! ): OAuthApplicationPayload! """ Cancels a scheduled workspace deletion while the deletion process still permits cancellation. Requires workspace-settings permission. """ organizationCancelDelete: OrganizationCancelDeletePayload! """ Schedules deletion of the workspace and its data after validating the code from organizationDeleteChallenge. This does not finish the deletion during the request. Use organizationCancelDelete while cancellation is still available. """ organizationDelete( """ Information required to delete the workspace. """ input: DeleteOrganizationInput! ): OrganizationDeletePayload! """ Requests a deletion confirmation code for the workspace. The code is sent to the requesting user's email and must be used with the organizationDelete mutation to confirm deletion. """ organizationDeleteChallenge: OrganizationDeletePayload! """ Removes a domain configuration from the workspace and its authentication settings. Requires workspace-settings permission. Other domain configurations for the workspace are unchanged. """ organizationDomainDelete( """ The identifier of the domain to delete. """ id: String! ): DeletePayload! """ Invites an email address to the workspace and sends an invitation email. Your role and workspace invitation settings must allow the requested role and teams. Guest invitations require teams; an existing user or unexpired invitation for the address causes an error. """ organizationInviteCreate( """ The organization invite object to create. """ input: OrganizationInviteCreateInput! ): OrganizationInvitePayload! """ Deletes (archives) a workspace invite, preventing it from being accepted. """ organizationInviteDelete( """ The identifier of the organization invite to delete. """ id: String! ): DeletePayload! """ Replaces the teams an invitee will join on acceptance. Requires permission to manage invitations, and the selected teams must be valid for the invite’s role. This does not change the invitee’s email or role. """ organizationInviteUpdate( """ The identifier of the organization invite to update. """ id: String! """ The updates to make to the organization invite object. """ input: OrganizationInviteUpdateInput! ): OrganizationInvitePayload! """ [DEPRECATED] Starts a trial for the workspace. """ organizationStartTrial: OrganizationStartTrialPayload! @deprecated(reason: "Use organizationStartTrialForPlan") """ Starts a trial for the workspace on the specified plan type. The workspace must not already be on a paid plan or in an active trial. """ organizationStartTrialForPlan( """ Plan details for trial """ input: OrganizationStartTrialInput! ): OrganizationStartTrialPayload! """ Updates the workspace associated with your credentials. Omitted fields keep their current values. Most changes require workspace-settings permission; project and initiative reminder schedules require schedule-management permission. Some settings also depend on the workspace’s plan. """ organizationUpdate( """ A partial workspace object to update the workspace with. """ input: OrganizationUpdateInput! ): OrganizationPayload! """ Adds a project label while keeping the project’s other labels. The label must be available to the project; label-group and team-scoping rules still apply. """ projectAddLabel( """ The identifier of the project to add the label to. """ id: String! """ The identifier of the label to add. """ labelId: String! ): ProjectPayload! """ Archives a project. """ projectArchive( """ The identifier of the project to archive. Also the identifier from the URL is accepted. """ id: String! """ Whether to trash the project. """ trash: Boolean ): ProjectArchivePayload! @deprecated(reason: "Deprecated in favor of projectDelete.") """ Creates a project in the supplied teams. You can apply a project template to fill in defaults and create its milestones, initial issues, and initiative associations. The new project must have at least one accessible team. """ projectCreate( """ [Internal] The identifier of the project draft conversation to attach to this project. """ aiConversationId: String """ The project properties to set on the new project. """ input: ProjectCreateInput! """ [Internal] The identifier of the project draft that produced this project. """ projectDraftId: String """ The full name for the Slack channel to create (including prefix). When provided, a Slack channel will be created and connected to the project. """ slackChannelName: String ): ProjectPayload! """ Moves a project to the trash. This archives the project rather than immediately deleting it permanently. You can restore it with projectUnarchive while it remains available in the trash. """ projectDelete( """ The identifier of the project to delete. """ id: String! ): ProjectArchivePayload! """ Disables external sync on a project. """ projectExternalSyncDisable( """ The ID of the project to disable external sync for. """ projectId: String! """ The source of the external sync to disable. """ syncSource: ExternalSyncService! ): ProjectPayload! """ Creates a label or label group for projects. Workspace labels require workspace label-management permission; team labels require label-management permission in that team and a plan that supports team project labels. replaceTeamLabels can migrate matching labels into the new scope. """ projectLabelCreate( """ The project label to create. """ input: ProjectLabelCreateInput! """ Whether to replace all team-specific labels with the same name with this newly created workspace label (default: false). """ replaceTeamLabels: Boolean ): ProjectLabelPayload! """ Deletes a project label, its children, and inherited copies, removing their assignments from projects. """ projectLabelDelete( """ The identifier of the label to delete. """ id: String! ): DeletePayload! """ Restores a previously retired project label, making it available for use on new projects. """ projectLabelRestore( """ The identifier of the label to restore. """ id: String! ): ProjectLabelPayload! """ Retires a project label. Retired labels remain on existing projects but cannot be applied to new ones. """ projectLabelRetire( """ The identifier of the label to retire. """ id: String! ): ProjectLabelPayload! """ Updates the supplied project-label fields and propagates changes to inherited copies. Requires label-management permission for the label’s workspace or team. Update the source label rather than an inherited copy. """ projectLabelUpdate( """ The identifier of the label to update. """ id: String! """ A partial label object to update. """ input: ProjectLabelUpdateInput! """ Whether to replace all team-specific labels with the same name with this updated workspace label (default: false). """ replaceTeamLabels: Boolean ): ProjectLabelPayload! """ Creates a milestone in a project you can edit. Its name must be unique among the project’s active milestones. A milestone starts without issues; assign issues to it separately. """ projectMilestoneCreate( """ The project milestone to create. """ input: ProjectMilestoneCreateInput! ): ProjectMilestonePayload! """ Permanently deletes a milestone from a project you can edit. The issues are kept in the project, but their milestone association is removed. """ projectMilestoneDelete( """ The identifier of the project milestone to delete. """ id: String! ): DeletePayload! """ Updates a milestone in a project you can edit, including an archived milestone. Omitted fields keep their current values. Changing projectId moves the milestone and clears its links from issue drafts in the previous project. """ projectMilestoneUpdate( """ The identifier of the project milestone to update. Also the identifier from the URL is accepted. """ id: String! """ A partial object to update the project milestone with. """ input: ProjectMilestoneUpdateInput! ): ProjectMilestonePayload! """ Creates a dependency between two different projects using date or milestone anchors. """ projectRelationCreate( """ The project relation to create. """ input: ProjectRelationCreateInput! ): ProjectRelationPayload! """ Deletes the dependency without deleting either project or milestone. """ projectRelationDelete( """ The identifier of the project relation to delete. """ id: String! ): DeletePayload! """ Updates the supplied dependency fields and validates both project endpoints. """ projectRelationUpdate( """ The identifier of the project relation to update. """ id: String! """ The properties of the project relation to update. """ input: ProjectRelationUpdateInput! ): ProjectRelationPayload! """ Removes a project label while keeping the project’s other labels. The label itself is not deleted. """ projectRemoveLabel( """ The identifier of the project to remove the label from. """ id: String! """ The identifier of the label to remove. """ labelId: String! ): ProjectPayload! """ Archives a project status. The status must not have any active projects assigned to it and must not be the last status of its type. """ projectStatusArchive( """ The identifier of the project status to archive. """ id: String! ): ProjectStatusArchivePayload! """ Creates a new project status. """ projectStatusCreate( """ The ProjectStatus object to create. """ input: ProjectStatusCreateInput! ): ProjectStatusPayload! """ Unarchives a project status. """ projectStatusUnarchive( """ The identifier of the project status to unarchive. """ id: String! ): ProjectStatusArchivePayload! """ Updates a project status. """ projectStatusUpdate( """ The identifier of the project status to update. """ id: String! """ A partial ProjectStatus object to update the ProjectStatus with. """ input: ProjectStatusUpdateInput! ): ProjectStatusPayload! """ Restores an archived or trashed project. The operation checks the project quota of each associated team before restoring it. """ projectUnarchive( """ The identifier of the project to restore. Also the identifier from the URL is accepted. """ id: String! ): ProjectArchivePayload! """ Updates the supplied fields of a project you can edit. Omitted fields keep their current values. List inputs such as memberIds and labelIds replace the corresponding lists; see each input for clearing rules and team-access behavior. """ projectUpdate( """ The identifier of the project to update. Also the identifier from the URL is accepted. """ id: String! """ A partial project object to update the project with. """ input: ProjectUpdateInput! ): ProjectPayload! """ Archives an update and recalculates the project’s health from the remaining updates. You must be the author or have permission to manage workspace entities. Use projectUpdateUnarchive to restore it. """ projectUpdateArchive( """ The identifier of the project update to archive. """ id: String! ): ProjectUpdateArchivePayload! """ Publishes a status update for a project you can edit. The update records the current user as author, captures project progress, and refreshes the project’s health. Provide the message in input.body. """ projectUpdateCreate( """ Data for the project update to create. """ input: ProjectUpdateCreateInput! ): ProjectUpdatePayload! """ Archives a project update and recalculates project health. Use projectUpdateUnarchive to restore it. """ projectUpdateDelete( """ The identifier of the project update to delete. """ id: String! ): DeletePayload! @deprecated(reason: "Use `projectUpdateArchive` instead.") """ Restores an archived update and recalculates the project’s health. The update must currently be archived, and you must be its author or have permission to manage workspace entities. """ projectUpdateUnarchive( """ The identifier of the project update to unarchive. """ id: String! ): ProjectUpdateArchivePayload! """ Edits an update’s message or health. You must be its author or have permission to manage workspace entities. Editing the latest update while it is less than one hour old also refreshes its progress snapshot. """ projectUpdateUpdate( """ The identifier of the project update to update. """ id: String! """ The properties of the project update to update. """ input: ProjectUpdateUpdateInput! ): ProjectUpdatePayload! """ Registers a browser or device to receive push notifications for the authenticated user. If the same subscription data is already registered, returns that record; otherwise replaces the subscription associated with the current sign-in session. userId in the input is ignored. Successful registration does not guarantee notification delivery; use pushSubscriptionTest to request a test notification. """ pushSubscriptionCreate( """ The push subscription to create. """ input: PushSubscriptionCreateInput! ): PushSubscriptionPayload! """ Deletes a push subscription to stop sending notifications through it. Select success to confirm deletion. This operation does not populate entity, so selecting that field produces a GraphQL error. """ pushSubscriptionDelete( """ The identifier of the push subscription to delete. """ id: String! ): PushSubscriptionPayload! """ Adds an emoji reaction as you to one issue, comment, or update. If you already used that emoji on the same resource, the existing reaction is returned. You must be allowed to comment on the target. """ reactionCreate( """ The reaction object to create. """ input: ReactionCreateInput! ): ReactionPayload! """ Removes a reaction by its UUID and updates the target’s reaction summary. You must be its creator or have workspace permission to manage entities, and you must be allowed to comment on the target. """ reactionDelete( """ The identifier of the reaction to delete. """ id: String! ): DeletePayload! """ Queues a Google Sheets export refresh. Success confirms scheduling; the returned integration may still contain the previous export state. """ refreshGoogleSheetsData( """ The identifier of the Google Sheets integration to update. """ id: String! """ Export type: issue, project, or initiative. Defaults to issue. """ type: String ): IntegrationPayload! """ Archives a release. """ releaseArchive( """ The identifier of the release to archive. """ id: String! ): ReleaseArchivePayload! """ Completes the release identified by pipeline and version, or the latest started release when version is omitted. Completing a scheduled release may move its open issues to the next release, according to the pipeline’s rollover setting. """ releaseComplete( """ The input containing the pipeline ID and optional version. """ input: ReleaseCompleteInput! ): ReleasePayload! """ Marks a release as completed using an access key. If version is provided, completes that specific release; otherwise completes the most recent started release. The pipeline is inferred from the access key. """ releaseCompleteByAccessKey( """ The input containing the optional version. """ input: ReleaseCompleteInputBase! ): AccessKeyReleasePayload! """ Creates a new release in a pipeline. If no stage is specified, defaults to the first completed stage for continuous pipelines or the first started stage for scheduled pipelines. """ releaseCreate( """ The release to create. """ input: ReleaseCreateInput! ): ReleasePayload! """ Moves a release to trash for permanent deletion after the retention period. Use releaseUnarchive to restore it before deletion. """ releaseDelete( """ The identifier of the release to delete. """ id: String! ): ReleaseArchivePayload! """ Creates a note covering releases from one pipeline. Supply explicit release IDs or an inclusive range, plus an optional title and Markdown body. A scheduled pipeline’s note must cover exactly one release. """ releaseNoteCreate( """ The release note fields. """ input: ReleaseNoteCreateInput! ): ReleaseNotePayload! """ Permanently deletes a release note and its body. The covered releases remain. """ releaseNoteDelete( """ The identifier of the release note to delete. """ id: String! ): DeletePayload! """ Updates a release note’s title, body, or covered releases. Omitted fields remain unchanged, and a new release selection replaces the old one. The note stays in its original pipeline. """ releaseNoteUpdate( """ The identifier of the release note to update. """ id: String! """ The fields to update. """ input: ReleaseNoteUpdateInput! ): ReleaseNotePayload! """ Archives a pipeline and schedules archival of its releases. The release changes run in the background, so they may not be complete when this mutation returns. Requires workspace team-management permission or ownership of every associated team. """ releasePipelineArchive( """ The identifier of the release pipeline to archive. """ id: String! ): ReleasePipelineArchivePayload! """ Creates a release pipeline with default stages, subject to your workspace’s plan and quota. Requires workspace team-management permission or ownership of every team associated with the pipeline. """ releasePipelineCreate( """ The ReleasePipeline object to create. """ input: ReleasePipelineCreateInput! ): ReleasePipelinePayload! """ Moves a pipeline and its releases to the trash for permanent deletion after the retention period. Repeating the operation does not extend that period. Requires workspace team-management permission or ownership of every associated team. """ releasePipelineDelete( """ The identifier of the release pipeline to delete. """ id: String! ): ReleasePipelineArchivePayload! """ Restores a pipeline and schedules restoration of its archived releases. Individually trashed releases are left in the trash. The release changes run in the background, and the same pipeline administration permissions apply. """ releasePipelineUnarchive( """ The identifier of the release pipeline to unarchive. """ id: String! ): ReleasePipelineArchivePayload! """ Updates an existing release pipeline. Supports updating name, slug, type, production flag, path patterns, and team associations. Private teams that the current user cannot access are preserved in the team list. """ releasePipelineUpdate( """ The identifier of the release pipeline to update. """ id: String! """ A partial ReleasePipeline object to update the ReleasePipeline with. """ input: ReleasePipelineUpdateInput! ): ReleasePipelinePayload! """ Archives a release stage. Only started-type stages can be archived, and only if they have no active releases and at least one other stage of the same type remains. Cannot archive the last non-frozen started stage. """ releaseStageArchive( """ The identifier of the release stage to archive. """ id: String! ): ReleaseStageArchivePayload! """ Creates a new release stage in a pipeline. Non-started stages must use default names and colors and are unique by type; creating a canonical duplicate returns the existing stage. Started stages can optionally be frozen, but at least one non-frozen started stage must remain. """ releaseStageCreate( """ The ReleaseStage object to create. """ input: ReleaseStageCreateInput! ): ReleaseStagePayload! """ Unarchives a release stage. """ releaseStageUnarchive( """ The identifier of the release stage to unarchive. """ id: String! ): ReleaseStageArchivePayload! """ Updates an existing release stage. Only started-type stages can be edited. Supports updating name, color, position, and frozen status. """ releaseStageUpdate( """ The identifier of the release stage to update. """ id: String! """ A partial ReleaseStage object to update the ReleaseStage with. """ input: ReleaseStageUpdateInput! ): ReleaseStagePayload! """ Associates issues found in issue or pull request references with a release. Continuous pipelines create completed releases and reuse an existing version only when its commit SHA matches. Scheduled pipelines accumulate issues in an open release or use the supplied version. Existing issue associations are kept unless explicitly reverted in a scheduled pipeline. """ releaseSync( """ The release data to sync. """ input: ReleaseSyncInput! ): ReleasePayload! """ Syncs release data using an access key for CI/CD integration. The pipeline is automatically inferred from the access key's configured resources, so no pipeline ID is needed in the input. """ releaseSyncByAccessKey( """ The release data to sync. """ input: ReleaseSyncInputBase! ): AccessKeyReleasePayload! """ Restores an archived or trashed release before it is permanently deleted. The release keeps its pipeline and saved issue associations. """ releaseUnarchive( """ The identifier of the release to unarchive. """ id: String! ): ReleaseArchivePayload! """ Updates a release by ID. Omitted fields remain unchanged. A release cannot move to another pipeline. """ releaseUpdate( """ The identifier of the release to update. """ id: String! """ A partial Release object to update the Release with. """ input: ReleaseUpdateInput! ): ReleasePayload! """ Updates a release by pipeline identifier. Finds the release by version, otherwise the latest started release or else the planned release with the earliest target date, and optionally transitions it to a new stage by name. """ releaseUpdateByPipeline( """ The input containing the pipeline ID, optional version, and optional stage name. """ input: ReleaseUpdateByPipelineInput! ): ReleasePayload! """ Updates a release by pipeline using an access key. """ releaseUpdateByPipelineByAccessKey( """ The input containing the optional version and optional stage name. """ input: ReleaseUpdateByPipelineInputBase! ): AccessKeyReleasePayload! """ Re-sends a workspace invitation email for the specified invite ID. """ resendOrganizationInvite( """ The identifier of the organization invite to re-send. """ id: String! ): DeletePayload! """ Re-sends a workspace invitation email to the specified email address, if an outstanding invite exists for that address. """ resendOrganizationInviteByEmail( """ The email address tied to the organization invite to re-send. """ email: String! ): DeletePayload! """ No longer supported and returns an error. Use initiativeArchive. """ roadmapArchive( """ The identifier of the roadmap to archive. """ id: String! ): RoadmapArchivePayload! @deprecated(reason: "Roadmaps are deprecated, use initiatives instead.") """ No longer supported and returns an error. Use initiativeCreate. """ roadmapCreate( """ The properties of the roadmap to create. """ input: RoadmapCreateInput! ): RoadmapPayload! @deprecated(reason: "Roadmaps are deprecated, use initiatives instead.") """ No longer supported and returns an error. Use initiativeDelete. """ roadmapDelete( """ The identifier of the roadmap to delete. """ id: String! ): DeletePayload! @deprecated(reason: "Roadmaps are deprecated, use initiatives instead.") """ No longer supported and returns an error. Use initiativeToProjectCreate. """ roadmapToProjectCreate( """ The properties of the roadmapToProject to create. """ input: RoadmapToProjectCreateInput! ): RoadmapToProjectPayload! """ No longer supported and returns an error. Use initiativeToProjectDelete. """ roadmapToProjectDelete( """ The identifier of the roadmapToProject to delete. """ id: String! ): DeletePayload! """ No longer supported and returns an error. Use initiativeToProjectUpdate. """ roadmapToProjectUpdate( """ The identifier of the roadmapToProject to update. """ id: String! """ The properties of the roadmapToProject to update. """ input: RoadmapToProjectUpdateInput! ): RoadmapToProjectPayload! """ No longer supported and returns an error. Use initiativeUnarchive. """ roadmapUnarchive( """ The identifier of the roadmap to unarchive. """ id: String! ): RoadmapArchivePayload! @deprecated(reason: "Roadmaps are deprecated, use initiatives instead.") """ No longer supported and returns an error. Use initiativeUpdate. """ roadmapUpdate( """ The identifier of the roadmap to update. """ id: String! """ The properties of the roadmap to update. """ input: RoadmapUpdateInput! ): RoadmapPayload! @deprecated(reason: "Roadmaps are deprecated, use initiatives instead.") """ Completes SAML sign-in with the email and token issued by the SAML flow, then sets the authentication cookie. The response identifies workspace memberships and any workspaces that require a different sign-in method. Unlike email token sign-in, this operation does not require clientAuthCode. """ samlTokenUserAccountAuth( """ The data used for token authentication. """ input: TokenUserAccountAuthInput! ): AuthResolverResponse! """ Creates a team with workflow states, labels, and other initial resources. You become a member and, for private teams or plans that support team owners, an owner. copySettingsFromTeamId copies settings and related resources from an existing team; copied settings take precedence over input values except an explicit private value. """ teamCreate( """ The team id to copy settings from, if any. """ copySettingsFromTeamId: String """ The team object to create. """ input: TeamCreateInput! ): TeamPayload! """ Permanently deletes all cycles for a team and disables cycles. Issues are kept, but their cycle associations are removed. Requires permission to manage the team. """ teamCyclesDelete( """ The identifier of the team, which cycles will be deleted. """ id: String! ): TeamPayload! """ Archives a team and schedules permanent deletion after a 30-day grace period. You cannot delete the workspace’s final active team. Requires a workspace administrator or team owner; use teamUnarchive before deletion begins to restore it. """ teamDelete( """ The identifier of the team to delete. """ id: String! ): DeletePayload! """ Deletes a previously used team key. The active team key (the team's current key) cannot be deleted. """ teamKeyDelete( """ The identifier of the team key to delete. """ id: String! ): DeletePayload! """ Adds a user to an active team after checking permission and membership limits. Regular workspace members also join ancestor teams. The operation fails if the user is already a member or if the team is archived, retired, or managed through SCIM. """ teamMembershipCreate( """ The team membership object to create. """ input: TeamMembershipCreateInput! ): TeamMembershipPayload! """ Removes a user from a team after checking removal permissions and membership restrictions. Leaving cannot remove the user’s last active team, and SCIM-managed memberships must be managed through the identity provider. alsoLeaveParentTeams can extend the removal to parent teams. """ teamMembershipDelete( """ Whether to leave the parent teams. """ alsoLeaveParentTeams: Boolean """ The identifier of the team membership to delete. """ id: String! ): DeletePayload! """ Updates the team’s position in the member’s team list. """ teamMembershipUpdate( """ The identifier of the team membership to update. """ id: String! """ A partial team membership object to update the team membership with. """ input: TeamMembershipUpdateInput! ): TeamMembershipPayload! """ Restores an archived team and cancels its scheduled deletion while the grace period still permits cancellation. Requires workspace team-management permission, access to the team, and capacity for another active team on the workspace’s plan. """ teamUnarchive( """ The identifier of the team to unarchive. """ id: String! ): TeamArchivePayload! """ Updates the supplied team fields. Changes require the relevant team-management permissions. """ teamUpdate( """ The identifier of the team to update. """ id: String! """ A partial team object to update the team with. """ input: TeamUpdateInput! """ [INTERNAL] Mapping of existing team entities to those inherited from the parent team """ mapping: InheritanceEntityMapping ): TeamPayload! """ Create a template. Requires permission to manage templates in the workspace, team, or release pipeline that owns it. """ templateCreate( """ The template object to create. """ input: TemplateCreateInput! ): TemplatePayload! """ Deletes a template and its inherited copies. Requires permission to manage templates in its scope; inherited copies must be deleted at their source. Resources already created from the template remain. """ templateDelete( """ The identifier of the template to delete. """ id: String! ): DeletePayload! """ Changes a template’s metadata, saved defaults, or team scope. Update an inherited template at its source, and supply the full templateData when replacing its configuration. Changing a template does not rewrite resources already created from it. """ templateUpdate( """ The identifier of the template. """ id: String! """ The properties of the template to update. """ input: TemplateUpdateInput! ): TemplatePayload! """ Creates an API-managed on-call schedule in the workspace. Provide a name and the complete list of shifts, then reference the returned schedule ID from a triage responsibility to use it for a team. An OAuth-created schedule is owned by that application for later updates and deletion. Duplicate IDs or external IDs are rejected. """ timeScheduleCreate( """ The properties of the time schedule to create. """ input: TimeScheduleCreateInput! ): TimeSchedulePayload! """ Deletes an API-managed schedule and replaces linked triage responsibilities with available fallback users. The same ownership and team-management requirements as timeScheduleUpdate apply. Integration-synced schedules cannot be deleted here. """ timeScheduleDelete( """ The identifier of the time schedule to delete. """ id: String! ): DeletePayload! """ Requests a refresh of a schedule managed by an integration. The schedule must have an associated integration. Success means the refresh was queued; the returned timeSchedule may still contain its previous shifts. Query the schedule again to read the refreshed entries. """ timeScheduleRefreshIntegrationSchedule( """ The identifier of the time schedule to refresh. """ id: String! ): TimeSchedulePayload! """ Updates an unarchived, API-managed schedule. Omitted fields remain unchanged; entries replaces every existing shift. OAuth callers can update only schedules created by the same application. Other callers need management permission for every team using the schedule, or workspace team management permission if no team uses it. Integration-synced schedules cannot be edited here. """ timeScheduleUpdate( """ The identifier of the time schedule to update. """ id: String! """ The properties of the time schedule to update. """ input: TimeScheduleUpdateInput! ): TimeSchedulePayload! """ Finds an unarchived schedule by its workspace-unique externalId and updates it, or creates one if none exists. For a new schedule, include name and the same externalId inside input; the lookup argument is not copied into input automatically. A supplied entries list replaces the old shifts. Email references without userId are matched to workspace users when possible; unmatched references remain external. The same ownership rules as timeScheduleUpdate apply to an existing schedule. """ timeScheduleUpsertExternal( """ Schedule identifier in the external service, unique within the workspace. """ externalId: String! """ The properties of the time schedule to insert or update. """ input: TimeScheduleUpdateInput! ): TimeSchedulePayload! """ Submits an anonymous $pageview or $pageleave analytics event, with optional properties and session correlation. Unsupported event names return success=false. A successful response means tracking accepted the event, not that analytics delivery has completed. Limited to 30 requests per hour. """ trackAnonymousEvent( """ Event tracking details. """ input: EventTrackingInput! ): EventTrackingPayload! """ Creates the team’s triage responsibility using a manual user selection or an on-call schedule. The team must be writable, the workspace plan must support triage responsibility, and the caller needs team management permission. A team can have only one rule. Selecting an integration-managed schedule also queues a refresh of its shifts. """ triageResponsibilityCreate( """ The properties of the triage responsibility to create. """ input: TriageResponsibilityCreateInput! ): TriageResponsibilityPayload! """ Deletes a triage responsibility. """ triageResponsibilityDelete( """ The identifier of the triage responsibility to delete. """ id: String! ): DeletePayload! """ Updates the action or responsible users for a writable team’s existing rule. Changing to a manual selection clears its schedule, and changing to a schedule clears its manual selection. Omitted fields remain unchanged. Requires team management permission; selecting a different integration-managed schedule queues a refresh. """ triageResponsibilityUpdate( """ The identifier of the triage responsibility to update. """ id: String! """ The properties of the triage responsibility to update. """ input: TriageResponsibilityUpdateInput! ): TriageResponsibilityPayload! """ Changes the workspace role of a user. The requesting user must have a role equal to or higher than the target role. Requires workspace admin permissions. """ userChangeRole( """ The identifier of the user """ id: String! """ The new role for the user. """ role: UserRoleType! ): UserAdminPayload! """ Connects the Discord user to this Linear account via OAuth2. """ userDiscordConnect( """ The Discord OAuth code. """ code: String! """ The Discord OAuth redirect URI. """ redirectUri: String! ): UserPayload! """ Disconnects the external user from this Linear account. """ userExternalUserDisconnect( """ The external service to disconnect. """ service: String! """ The workspace Jira integration whose account mapping to remove. If omitted, removes all Jira mappings without a personal connection. """ workspaceIntegrationId: String ): UserPayload! """ Updates a specific user settings flag by performing an operation (e.g., increment or clear) on it. """ userFlagUpdate( """ Settings flag to increment. """ flag: UserFlagType! """ Flag operation to perform. """ operation: UserFlagUpdateOperation! ): UserSettingsFlagPayload! """ Revokes all active sessions for a user, forcing them to re-authenticate. Can only be called by a workspace admin or owner. """ userRevokeAllSessions( """ The identifier of the user to logout all sessions of. """ id: String! ): UserAdminPayload! """ Revokes a specific authentication session for a user. The admin cannot revoke their own sessions with this mutation. Can only be called by a workspace admin or owner. """ userRevokeSession( """ The identifier of the user whose session to revoke. """ id: String! """ The identifier of the session to revoke. """ sessionId: String! ): UserAdminPayload! """ Resets one or more of the user's setting flags. If no specific flags are provided, all flags are reset. """ userSettingsFlagsReset( """ The flags to reset. If not provided all flags will be reset. """ flags: [UserFlagType!] ): UserSettingsFlagsResetPayload! """ Updates the settings record identified by id. You must own that record or have permission to manage workspace entities. General settings and notification category or channel preferences merge with existing values. See notificationDeliveryPreferences for its schedule replacement and mobile-channel effects. """ userSettingsUpdate( """ The identifier of the userSettings to update. """ id: String! """ A partial notification object to update the settings with. """ input: UserSettingsUpdateInput! ): UserSettingsPayload! """ Suspends a user, deactivating their account and revoking access to the workspace. The suspended user's sessions are invalidated. Can only be called by a workspace admin or owner. """ userSuspend( """ [INTERNAL] Whether to bypass SCIM restrictions when suspending. Use with caution — this overrides identity provider management. """ forceBypassScimRestrictions: Boolean """ The identifier of the user to suspend. """ id: String! ): UserAdminPayload! """ Unlinks a guest user from their identity provider. Can only be called by an admin when SCIM is enabled. """ userUnlinkFromIdentityProvider( """ The identifier of the guest user to unlink from their identity provider. """ id: String! ): UserAdminPayload! """ Re-activates a suspended user, restoring their access to the workspace. Can only be called by a workspace admin or owner. """ userUnsuspend( """ [INTERNAL] Whether to bypass SCIM restrictions when unsuspending. Use with caution — this overrides identity provider management. """ forceBypassScimRestrictions: Boolean """ The identifier of the user to unsuspend. """ id: String! ): UserAdminPayload! """ Updates a user’s profile. Use the user UUID or me for your own account. Updating another user requires member-management permission; identity-provider rules may block name changes, and application accounts only accept name and displayName. """ userUpdate( """ The identifier of the user to update. Use `me` to reference currently authenticated user. """ id: String! """ A partial user object to update the user with. """ input: UserUpdateInput! ): UserPayload! """ Saves display settings for a view and scope. Existing records that conflict with the supplied type, view type, and scope are deleted and replaced, so supply the settings you want to retain. Personal preferences are owned by the current user. """ viewPreferencesCreate( """ The ViewPreferences object to create. """ input: ViewPreferencesCreateInput! ): ViewPreferencesPayload! """ Deletes a saved preferences record, allowing the view to use its fallback defaults. You can delete only your own user-type preferences. If the record is already absent, the mutation still succeeds. """ viewPreferencesDelete( """ The identifier of the ViewPreferences to delete. """ id: String! ): DeletePayload! """ Replaces the supplied settings objects on a saved preferences record. You can update only your own user-type preferences; changing workspace defaults for a custom view also requires permission to edit that view. """ viewPreferencesUpdate( """ The identifier of the ViewPreferences object. """ id: String! """ The properties of the view preferences. """ input: ViewPreferencesUpdateInput! ): ViewPreferencesPayload! """ Creates a webhook subscription and returns its configuration, including the signing secret. Choose one team or all public teams, and provide a public HTTPS destination with the resource types you want to receive. The destination must not already be registered for the same team scope. Requires workspace API management permission; a team-specific webhook also requires that team’s management permission. AuditEntry subscriptions have separate audit log access requirements. """ webhookCreate( """ The webhook object to create. """ input: WebhookCreateInput! ): WebhookPayload! """ Deletes a webhook subscription and stops future deliveries. """ webhookDelete( """ The identifier of the Webhook to delete. """ id: String! ): DeletePayload! """ Generates and returns a new HMAC-SHA256 signing secret for the webhook. Update your receiver to verify later deliveries with the returned key; the previous key is replaced rather than kept as a second active key. This changes webhook signatures, not the endpoint or subscribed event streams. """ webhookRotateSecret( """ The identifier of the Webhook to rotate the secret for. """ id: String! ): WebhookRotateSecretPayload! """ Updates an existing webhook without changing its team scope. Omitted properties remain unchanged, and resourceTypes replaces the complete list of event streams. Setting enabled to false pauses delivery while retaining the subscription. Changing secret changes the key your receiver must use for later deliveries. Requires workspace API management permission and access to the subscribed resource types. """ webhookUpdate( """ The identifier of the Webhook. """ id: String! """ The properties of the Webhook. """ input: WebhookUpdateInput! ): WebhookPayload! """ Archives an unused status so it is no longer available for new issues. First move or archive every active issue in that status. You must be able to manage the team, and cannot archive reserved or inherited statuses or the last active status of a type. """ workflowStateArchive( """ The identifier of the state to archive. """ id: String! ): WorkflowStateArchivePayload! """ Add an issue status to a team. Requires permission to manage the team; inherited workflows cannot be edited directly. """ workflowStateCreate( """ The state to create. """ input: WorkflowStateCreateInput! ): WorkflowStatePayload! """ Update a status’s name, color, description, or position. Requires permission to manage the team. Reserved and inherited statuses cannot be changed. """ workflowStateUpdate( """ The identifier of the state to update. """ id: String! """ A partial state object to update. """ input: WorkflowStateUpdateInput! ): WorkflowStatePayload! } """ Customer name sorting options. """ input NameSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A resource with a stable, unique identifier. Use `id` to refer to the same resource across queries and mutations. """ interface Node { """ The resource's unique, stable identifier. Use this value in queries and mutations that accept the resource's ID. """ id: ID! } """ An activity notification sent to a workspace member. Its concrete type identifies the related entity, while type identifies the event that occurred. Read, snooze, and archive states belong to the recipient. The inbox can group several related notifications into one item. """ interface Notification implements Entity & Node { """ 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. """ actor: User """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The bot that caused the notification. """ botActor: ActorBot """ The category of the notification. """ category: NotificationCategory! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent. """ emailedAt: DateTime """ 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. """ externalUserActor: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The time at which the user marked the notification as read. Null if the notification is unread. """ readAt: DateTime """ 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. """ snoozedUntilAt: DateTime """ Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated. """ type: String! """ The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed. """ unsnoozedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The recipient user of this notification. """ user: User! } """ The result of archiving or restoring a resource. """ type NotificationArchivePayload implements ArchivePayload { """ The resource after the operation, when returned. This can be null when the mutation does not return a resource, including after deletion. Check `success` for the operation's result. """ entity: Notification """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Return type for batch notification mutations that operate on multiple notifications at once. """ type NotificationBatchActionPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The notifications that were updated by the batch operation. """ notifications: [Notification!]! """ Whether the operation was successful. """ success: Boolean! } """ The categories of notifications a user can subscribe to. """ enum NotificationCategory { appsAndIntegrations assignments billing commentsAndReplies customers documentChanges feed loops mentions postsAndUpdates reactions reminders reviews statusChanges subscriptions system triage } """ Effective notification preferences for each category and delivery channel, including defaults for preferences you have not set. A category must be enabled for its channel, and the channel itself must also be enabled, for delivery. """ type NotificationCategoryPreferences { """ The preferences for notifications about apps and integrations. """ appsAndIntegrations: NotificationChannelPreferences! """ The preferences for notifications about assignments. """ assignments: NotificationChannelPreferences! """ The preferences for billing notifications. """ billing: NotificationChannelPreferences! """ The preferences for notifications about comments and replies. """ commentsAndReplies: NotificationChannelPreferences! """ The preferences for customer notifications. """ customers: NotificationChannelPreferences! """ The preferences for notifications about document changes. """ documentChanges: NotificationChannelPreferences! """ The preferences for feed summary notifications. """ feed: NotificationChannelPreferences! """ The preferences for notifications about loops. """ loops: NotificationChannelPreferences! """ The preferences for notifications about mentions. """ mentions: NotificationChannelPreferences! """ The preferences for notifications about posts and updates. """ postsAndUpdates: NotificationChannelPreferences! """ The preferences for notifications about reactions. """ reactions: NotificationChannelPreferences! """ The preferences for notifications about reminders. """ reminders: NotificationChannelPreferences! """ The preferences for notifications about reviews. """ reviews: NotificationChannelPreferences! """ The preferences for notifications about status changes. """ statusChanges: NotificationChannelPreferences! """ The preferences for notifications about subscriptions. """ subscriptions: NotificationChannelPreferences! """ The preferences for system notifications. """ system: NotificationChannelPreferences! """ The preferences for triage notifications. """ triage: NotificationChannelPreferences! } """ The notification categories and channels to change. Only supplied channel values are updated; omitted categories and channels keep their saved settings. Channel-wide preferences can still prevent delivery for an enabled category. """ input NotificationCategoryPreferencesInput { """ The preferences for notifications about apps and integrations. """ appsAndIntegrations: PartialNotificationChannelPreferencesInput """ The preferences for notifications about assignments. """ assignments: PartialNotificationChannelPreferencesInput """ The preferences for billing notifications. """ billing: PartialNotificationChannelPreferencesInput """ The preferences for notifications about comments and replies. """ commentsAndReplies: PartialNotificationChannelPreferencesInput """ The preferences for notifications about customers. """ customers: PartialNotificationChannelPreferencesInput """ The preferences for notifications about document changes. """ documentChanges: PartialNotificationChannelPreferencesInput """ The preferences for notifications about feed summaries. """ feed: PartialNotificationChannelPreferencesInput """ The preferences for notifications about loops. """ loops: PartialNotificationChannelPreferencesInput """ The preferences for notifications about mentions. """ mentions: PartialNotificationChannelPreferencesInput """ The preferences for notifications about posts and updates. """ postsAndUpdates: PartialNotificationChannelPreferencesInput """ The preferences for notifications about reactions. """ reactions: PartialNotificationChannelPreferencesInput """ The preferences for notifications about reminders. """ reminders: PartialNotificationChannelPreferencesInput """ The preferences for notifications about reviews. """ reviews: PartialNotificationChannelPreferencesInput """ The preferences for notifications about status changes. """ statusChanges: PartialNotificationChannelPreferencesInput """ The preferences for notifications about subscriptions. """ subscriptions: PartialNotificationChannelPreferencesInput """ The preferences for notifications about triage. """ triage: PartialNotificationChannelPreferencesInput } """ The delivery channels a user can receive notifications in. """ enum NotificationChannel { desktop email mobile slack } """ Whether each delivery channel is enabled. A notification also needs its category enabled for that channel. """ type NotificationChannelPreferences { """ Whether notifications are currently enabled for desktop. """ desktop: Boolean! """ Whether notifications are currently enabled for email. """ email: Boolean! """ Whether notifications are currently enabled for mobile. """ mobile: Boolean! """ Whether notifications are currently enabled for Slack. """ slack: Boolean! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type NotificationConnection { """ The page's results paired with their cursors. """ edges: [NotificationEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Notification!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ Mobile notification delivery preferences. Other channels do not support delivery schedules. """ type NotificationDeliveryPreferences { """ The delivery preferences for the mobile channel. """ mobile: NotificationDeliveryPreferencesChannel } """ Delivery timing for a notification channel. A schedule limits when delivery is allowed; notificationChannelPreferences controls whether the channel is enabled. """ type NotificationDeliveryPreferencesChannel { """ Whether notifications are disabled for this channel. Use notificationChannelPreferences instead. """ notificationsDisabled: Boolean @deprecated(reason: "This field has been replaced by notificationChannelPreferences") """ The schedule for notifications on this channel. """ schedule: NotificationDeliveryPreferencesSchedule } """ Delivery timing for a notification channel. A schedule limits when delivery is allowed; notificationChannelPreferences controls whether the channel is enabled. """ input NotificationDeliveryPreferencesChannelInput { """ The schedule for notifications on this channel. """ schedule: NotificationDeliveryPreferencesScheduleInput } """ Notification delivery window for one day, in the user's time zone. An empty object disables delivery for that day. """ type NotificationDeliveryPreferencesDay { """ End of the delivery window in 24-hour HH:MM format. Requires start; 23:59 includes the rest of the day. """ end: String """ Start of the delivery window in 24-hour HH:MM format, such as 09:00. Requires end and must be earlier than it. """ start: String } """ Notification delivery window for one day, in the user's time zone. An empty object disables delivery for that day. """ input NotificationDeliveryPreferencesDayInput { """ End of the delivery window in 24-hour HH:MM format. Requires start; 23:59 includes the rest of the day. """ end: String """ Start of the delivery window in 24-hour HH:MM format, such as 09:00. Requires end and must be earlier than it. """ start: String } """ Mobile notification delivery preferences. Other channels do not support delivery schedules. """ input NotificationDeliveryPreferencesInput { """ The delivery preferences for the mobile channel. """ mobile: NotificationDeliveryPreferencesChannelInput } """ A weekly mobile notification schedule in your user time zone. Supply all seven days, using an empty object for days without delivery. Days with delivery must use the same start and end times. Set disabled to true to allow delivery at any time. """ type NotificationDeliveryPreferencesSchedule { """ Whether the entire delivery schedule is disabled. When true, notifications are delivered at any time regardless of the per-day settings. """ disabled: Boolean """ Delivery preferences for Friday. """ friday: NotificationDeliveryPreferencesDay! """ Delivery preferences for Monday. """ monday: NotificationDeliveryPreferencesDay! """ Delivery preferences for Saturday. """ saturday: NotificationDeliveryPreferencesDay! """ Delivery preferences for Sunday. """ sunday: NotificationDeliveryPreferencesDay! """ Delivery preferences for Thursday. """ thursday: NotificationDeliveryPreferencesDay! """ Delivery preferences for Tuesday. """ tuesday: NotificationDeliveryPreferencesDay! """ Delivery preferences for Wednesday. """ wednesday: NotificationDeliveryPreferencesDay! } """ A weekly mobile notification schedule in your user time zone. Supply all seven days, using an empty object for days without delivery. Days with delivery must use the same start and end times. Set disabled to true to allow delivery at any time. """ input NotificationDeliveryPreferencesScheduleInput { """ Whether the entire delivery schedule is disabled. When true, notifications are delivered at any time regardless of the per-day settings. """ disabled: Boolean """ Delivery preferences for Friday. """ friday: NotificationDeliveryPreferencesDayInput! """ Delivery preferences for Monday. """ monday: NotificationDeliveryPreferencesDayInput! """ Delivery preferences for Saturday. """ saturday: NotificationDeliveryPreferencesDayInput! """ Delivery preferences for Sunday. """ sunday: NotificationDeliveryPreferencesDayInput! """ Delivery preferences for Thursday. """ thursday: NotificationDeliveryPreferencesDayInput! """ Delivery preferences for Tuesday. """ tuesday: NotificationDeliveryPreferencesDayInput! """ Delivery preferences for Wednesday. """ wednesday: NotificationDeliveryPreferencesDayInput! } """ A result and its pagination cursor. """ type NotificationEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Notification! } """ Identifies a specific entity whose related notifications should be targeted by a batch operation. Exactly one entity identifier should be provided. """ input NotificationEntityInput { """ A notification UUID identifying the group of related notifications to change. """ id: String """ The id of the initiative related to the notification. """ initiativeId: String """ The id of the initiative update related to the notification. """ initiativeUpdateId: String """ The id of the issue related to the notification. """ issueId: String """ The id of the OAuth client approval related to the notification. """ oauthClientApprovalId: String """ [DEPRECATED] The id of the project related to the notification. """ projectId: String """ The id of the project update related to the notification. """ projectUpdateId: String } """ Filters notifications by event type, subscription reason, or archive date. Supplied conditions must match together; use and and or to combine nested filters. """ input NotificationFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [NotificationFilter!] """ Comparator for the archived at date. """ archivedAt: DateComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [NotificationFilter!] """ The reason the recipient received the notification, such as being assigned, mentioned, or subscribed. This is separate from the event type. """ subscriptionType: NotificationSubscriptionTypeComparator """ The event type that generated the notification, such as issueCreated or issueStatusChanged. """ type: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Return type for notification mutations. """ type NotificationPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The notification that was updated. """ notification: Notification! """ Whether the operation was successful. """ success: Boolean! } """ A user’s subscription to events for one entity or view. Matching events can generate notifications while the subscription is active; the user’s notification preferences control how those notifications are delivered. The concrete subscription type identifies its target. """ interface NotificationSubscription implements Entity & Node { """ Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists. """ active: Boolean! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ 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. """ contextViewType: ContextViewType """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The custom view that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ customView: CustomView """ The customer that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ customer: Customer """ The cycle that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ cycle: Cycle """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Whether initiative update notifications also include updates from sub-initiatives. Applies only when initiative updates are enabled and the workspace supports sub-initiatives. """ includeSubInitiativeUpdates: Boolean! """ The initiative that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ initiative: Initiative """ The issue label that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ label: IssueLabel """ The project that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ project: Project """ The user who will receive notifications from this subscription. """ subscriber: User! """ The team that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ team: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user that this notification subscription is scoped to, for user-specific view subscriptions. Null if the subscription targets a different entity type. """ user: User """ 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. """ userContextViewType: UserContextViewType } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type NotificationSubscriptionConnection { """ The page's results paired with their cursors. """ edges: [NotificationSubscriptionEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [NotificationSubscription!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ Input for creating a notification subscription. Exactly one target entity (customer, custom view, cycle, initiative, label, project, team, or user) must be specified along with the notification types to subscribe to. """ input NotificationSubscriptionCreateInput { """ Accepted for compatibility but ignored at creation. New subscriptions are active; use notificationSubscriptionUpdate to pause one. """ active: Boolean """ The team view whose issues to follow, such as active issues or backlog. Requires teamId. Omit to subscribe without limiting the team to a particular view. """ contextViewType: ContextViewType """ The identifier of the custom view to subscribe to. """ customViewId: String """ The identifier of the customer to subscribe to. """ customerId: String """ The identifier of the cycle to subscribe to. """ cycleId: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ Whether to include updates from sub-initiatives. Defaults to false. Enabling it requires initiativeId and a plan that supports sub-initiatives. """ includeSubInitiativeUpdates: Boolean """ The identifier of the initiative to subscribe to. """ initiativeId: String """ The identifier of the label to subscribe to. """ labelId: String """ The nonempty list of event type names to subscribe to. Values must be distinct supported subscription event types, such as issueCreated or issueStatusChanged. """ notificationSubscriptionTypes: [String!] """ The identifier of the project to subscribe to. """ projectId: String """ The identifier of the team to subscribe to. """ teamId: String """ User view to subscribe to. Required with userId. """ userContextViewType: UserContextViewType """ The identifier of the user to subscribe to. """ userId: String } """ A result and its pagination cursor. """ type NotificationSubscriptionEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: NotificationSubscription! } """ The result of a notification subscription mutation. """ type NotificationSubscriptionPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The notification subscription that was created or updated. This controls which notifications the user receives for the associated entity. """ notificationSubscription: NotificationSubscription! """ Whether the operation was successful. """ success: Boolean! } """ The delivery target type that caused a notification to be sent. """ enum NotificationSubscriptionType { customView customer cycle document initiative issue label oauthClientApproval project pullRequest team user workflowDefinition } """ Comparator for notification subscription type. """ input NotificationSubscriptionTypeComparator { """ Matches the given value. """ eq: NotificationSubscriptionType """ Values to include in the match. For scalar comparisons, matches any listed value. An empty list matches nothing. """ in: [NotificationSubscriptionType!] """ Excludes the given value. """ neq: NotificationSubscriptionType """ Values to exclude from the match. For scalar comparisons, an empty list adds no restriction. """ nin: [NotificationSubscriptionType!] } """ Changes to your subscription’s event types, active state, or inclusion of sub-initiative updates. Omitted fields stay unchanged. The target entity and view cannot be changed. """ input NotificationSubscriptionUpdateInput { """ Whether the subscription is active. """ active: Boolean """ Whether to include updates from sub-initiatives. Enabling it requires an initiative subscription and a plan that supports sub-initiatives. """ includeSubInitiativeUpdates: Boolean """ The specific notification event types the subscriber wants to receive. Replaces all previously configured types. """ notificationSubscriptionTypes: [String!] } """ Changes to one notification. Omitted fields remain unchanged; use inboxNotificationUpdate to update the related inbox group. """ input NotificationUpdateInput { """ The id of the initiative update related to the notification. """ initiativeUpdateId: String """ The id of the project update related to the notification. """ projectUpdateId: String """ The time the notification was read. Null marks it unread. """ readAt: DateTime """ Hide the notification until this time. Null removes the snooze. """ snoozedUntilAt: DateTime } union NotificationWebhookPayload = | IssueAssignedToYouNotificationWebhookPayload | IssueCommentMentionNotificationWebhookPayload | IssueCommentReactionNotificationWebhookPayload | IssueEmojiReactionNotificationWebhookPayload | IssueMentionNotificationWebhookPayload | IssueNewCommentNotificationWebhookPayload | IssueStatusChangedNotificationWebhookPayload | IssueUnassignedFromYouNotificationWebhookPayload | OtherNotificationWebhookPayload """ Conditions on an optional comment relation. Use null to test whether the relation is set, or supply comment fields to filter the related record. Combine conditions with `and` or `or`. """ input NullableCommentFilter { """ Conditions that the comment must all match. These are combined with the other fields in this filter. """ and: [NullableCommentFilter!] """ Conditions on the stored comment body text. This filters the comment itself, not its quoted text or replies. """ body: StringComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Conditions on the rich-text content being discussed, such as a document body or issue description. Use its issue or document filter to choose the enclosing resource. """ documentContent: NullableDocumentContentFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Filters that the comment's initiative must satisfy. """ initiative: NullableInitiativeFilter """ Conditions on the initiative update being discussed. Use null: false to select comments on initiative updates. """ initiativeUpdate: NullableInitiativeUpdateFilter """ Conditions on the issue directly associated with the comment. Use documentContent to filter comments attached to an issue’s description content instead. """ issue: NullableIssueFilter """ Conditions on customer requests linked to the comment. Use some to require a matching request or length to count linked requests. """ needs: CustomerNeedCollectionFilter """ Use true to match an unset comment relation, or false to require it to be set. Omit this field when you only want to test the related record’s properties. """ null: Boolean """ Alternative conditions; the comment must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [NullableCommentFilter!] """ Conditions on the thread’s root comment. Use null: true to return root comments, or null: false to return replies. An ID condition selects replies in one thread. """ parent: NullableCommentFilter """ Filters that the comment's project must satisfy. """ project: NullableProjectFilter """ Conditions on the project update being discussed. Use null: false to select comments on project updates. """ projectUpdate: NullableProjectUpdateFilter """ Conditions on the comment’s emoji reactions. Use some with an emoji condition to find comments that received that reaction, or length to test the total reaction count. """ reactions: ReactionCollectionFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator """ Conditions on the user recorded as the comment’s author. This does not match an app’s separate display attribution. """ user: UserFilter } """ Filters an optional relation to customers. Use null to test whether the relation is set, or supply property conditions to filter the related object. """ input NullableCustomerFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [NullableCustomerFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Comparator for the customer's domains. """ domains: StringArrayComparator """ Comparator for the customer's external IDs. """ externalIds: StringArrayComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for the customer name. """ name: StringComparator """ Filters that the customer's needs must satisfy. """ needs: CustomerNeedCollectionFilter """ True matches a missing relation; false requires a relation to be set. A direct null: true condition takes precedence over other property conditions in this filter. """ null: Boolean """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [NullableCustomerFilter!] """ Filters that the customer owner must satisfy. """ owner: NullableUserFilter """ Comparator for the customer generated revenue. """ revenue: NumberComparator """ Comparator for the customer size. """ size: NumberComparator """ Comparator for the customer slack channel ID. """ slackChannelId: StringComparator """ Filters that the customer's status must satisfy. """ status: CustomerStatusFilter """ Filters that the customer's tier must satisfy. """ tier: CustomerTierFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Conditions on an optional cycle relation. Use null to test whether the relation is set, or supply cycle fields to filter the related record. Combine conditions with `and` or `or`. """ input NullableCycleFilter { """ Conditions that the cycle must all match. These are combined with the other fields in this filter. """ and: [NullableCycleFilter!] """ Conditions on the time the cycle was closed. This is distinct from its scheduled end time. """ completedAt: DateComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Conditions on the cycle’s end time, which can change when a cycle is completed early. """ endsAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for the inherited cycle ID. """ inheritedFromId: IDComparator """ Whether the current time falls within the cycle’s start and end times. Use team to restrict the result to one team’s schedule. """ isActive: BooleanComparator """ Whether the cycle’s start time is in the future. This can match several upcoming cycles; use isNext for only the next one per team. """ isFuture: BooleanComparator """ Whether the cycle has completed and its next numbered cycle has not started yet. This identifies the completed cycle during the team’s gap between cycles. """ isInCooldown: BooleanComparator """ Whether this is the team’s next upcoming, uncompleted and unarchived cycle. Combine with team to select one team’s next cycle. """ isNext: BooleanComparator """ Whether the cycle’s end time has passed. This is independent of whether its completion step has run. """ isPast: BooleanComparator """ Whether this is the team’s most recently completed, unarchived cycle. A past end time alone does not make a cycle the previous one. """ isPrevious: BooleanComparator """ Filters that the cycles issues must satisfy. """ issues: IssueCollectionFilter """ Comparator for the cycle name. """ name: StringComparator """ Use true to match an unset cycle relation, or false to require it to be set. Omit this field when you only want to test the related record’s properties. """ null: Boolean """ Conditions on the positive cycle number within a team. Combine with team when you need a specific cycle, since different teams can have the same number. """ number: NumberComparator """ Alternative conditions; the cycle must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [NullableCycleFilter!] """ Conditions on the cycle’s scheduled start time. """ startsAt: DateComparator """ Filters that the cycles team must satisfy. """ team: TeamFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Compares optional timestamps at millisecond precision. Accepts ISO 8601 timestamps or durations relative to when the filter runs, such as `-P7D`. Combine `gte` and `lt` for a time window. Use `{ null: true }` for missing timestamps; `nin` also includes missing values, while `neq` and range comparisons do not. """ input NullableDateComparator { """ Matches the given value. """ eq: DateTimeOrDuration """ Matches values greater than the given value. """ gt: DateTimeOrDuration """ Matches values greater than or equal to the given value. """ gte: DateTimeOrDuration """ Matches any value in the list. An empty list matches nothing. """ in: [DateTimeOrDuration!] """ Matches values less than the given value. """ lt: DateTimeOrDuration """ Matches values less than or equal to the given value. """ lte: DateTimeOrDuration """ Excludes the given value. """ neq: DateTimeOrDuration """ Excludes every value in the list, and includes null. An empty list adds no restriction. """ nin: [DateTimeOrDuration!] """ Set to true to match resources with no value, or false to require a value. For example, `{ null: true }` finds unset values; `{ eq: null }` is not a substitute. """ null: Boolean } """ Conditions on an optional document content relation. Use null to test whether the relation is set, or supply document content fields to filter the related record. Combine conditions with `and` or `or`. """ input NullableDocumentContentFilter { """ Conditions that the document content must all match. These are combined with the other fields in this filter. """ and: [NullableDocumentContentFilter!] """ Conditions on the stored document text, such as a document body or issue description. This does not search titles or comments. """ content: NullableStringComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Conditions on the document whose body this content stores. """ document: DocumentFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Conditions on the initiative whose description this content stores. """ initiative: InitiativeFilter """ Conditions on the issue whose description this content stores. """ issue: IssueFilter """ Use true to match an unset document content relation, or false to require it to be set. Omit this field when you only want to test the related record’s properties. """ null: Boolean """ Alternative conditions; the document content must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [NullableDocumentContentFilter!] """ Conditions on the project whose description this content stores. """ project: ProjectFilter """ Conditions on the project milestone whose description this content stores. """ projectMilestone: ProjectMilestoneFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Conditions on an optional document relation. Use null to test whether the relation is set, or supply document fields to filter the related record. Combine conditions with `and` or `or`. """ input NullableDocumentFilter { """ Conditions that the document must all match. These are combined with the other fields in this filter. """ and: [NullableDocumentFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Conditions on the user who created the document, independent of its current owner. """ creator: UserFilter """ Conditions on the cycle that contains the document. """ cycle: CycleFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Conditions on the initiative that contains the document. """ initiative: InitiativeFilter """ Conditions on the issue that contains the document. This selects attached documents, not the issue’s own description. """ issue: IssueFilter """ Use true to match an unset document relation, or false to require it to be set. Omit this field when you only want to test the related record’s properties. """ null: Boolean """ Alternative conditions; the document must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [NullableDocumentFilter!] """ Conditions on the document’s owner. Use null: true for documents without an owner; ownership is separate from the creator and most recent editor. """ owner: NullableUserFilter """ Filters that the document's parent document must satisfy. Use `null: true` for documents that are not sub-documents. """ parentDocument: NullableDocumentFilter """ Filters that the user owning the personal space of a personal document must satisfy. Use `null: false` for personal documents. """ personalUser: NullableUserFilter """ Conditions on the project that contains the document. This selects documents directly associated with a project, not documents attached to that project’s issues. """ project: ProjectFilter """ Conditions on the release that contains the document. """ release: ReleaseFilter """ Comparator for the document's searchable content. """ searchableContent: ContentComparator """ Conditions on the document’s short URL identifier. This differs from its UUID and title. """ slugId: StringComparator """ Conditions on the team directly associated with the document. Use null: true when no team is set on the document. """ team: NullableTeamFilter """ Conditions on the document title. This does not search the document’s body. """ title: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Compares optional elapsed durations using ISO 8601 duration strings or numbers in milliseconds. All supplied conditions must match. Use `{ null: true }` for missing durations; `nin` also includes missing values, while `neq` and range comparisons do not. """ input NullableDurationComparator { """ Matches the given value. """ eq: Duration """ Matches values greater than the given value. """ gt: Duration """ Matches values greater than or equal to the given value. """ gte: Duration """ Matches any value in the list. An empty list matches nothing. """ in: [Duration!] """ Matches values less than the given value. """ lt: Duration """ Matches values less than or equal to the given value. """ lte: Duration """ Excludes the given value. """ neq: Duration """ Excludes every value in the list, and includes null. An empty list adds no restriction. """ nin: [Duration!] """ Set to true to match resources with no value, or false to require a value. For example, `{ null: true }` finds unset values; `{ eq: null }` is not a substitute. """ null: Boolean } """ Filters an optional relation to initiatives. Use null to test whether the relation is set, or supply property conditions to filter the related object. """ input NullableInitiativeFilter { """ Comparator for the initiative activity type. """ activityType: StringComparator """ Conditions on this initiative’s parent initiatives and their ancestors. For example, some: { id: { eq: ID } } finds descendants of the specified initiative. """ ancestors: InitiativeCollectionFilter """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [NullableInitiativeFilter!] """ Comparator for the initiative canceled at date. """ canceledAt: NullableDateComparator """ Comparator for the initiative completed at date. """ completedAt: NullableDateComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the initiative creator must satisfy. """ creator: NullableUserFilter """ Comparator for the initiative's custom identifier. """ customIdentifier: NullableStringComparator """ Comparator for the initiative health: onTrack, atRisk, offTrack """ health: StringComparator """ The initiative’s health after accounting for the age of its latest update and its reminder schedule. Accepts onTrack, atRisk, offTrack, outdated, or noUpdate. """ healthWithAge: StringComparator """ Comparator for the identifier. """ id: EntityIdentifierIDComparator """ Conditions on updates published directly to this initiative. Updates on sub-initiatives are not included in this collection. """ initiativeUpdates: InitiativeUpdatesCollectionFilter """ Filters that the initiative labels must satisfy. """ labels: InitiativeLabelCollectionFilter """ Conditions on the initiative’s own lead team. Use { null: true } to find workspace-level initiatives. """ leadTeam: NullableTeamFilter """ Comparator for the initiative name. """ name: StringComparator """ True matches a missing relation; false requires a relation to be set. A direct null: true condition takes precedence over other property conditions in this filter. """ null: Boolean """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [NullableInitiativeFilter!] """ Filters that the initiative owner must satisfy. """ owner: NullableUserFilter """ Comparator for the initiative priority. """ priority: NullableNumberComparator """ Conditions on distinct accessible projects linked to this initiative or its sub-initiatives. A project linked through several sub-initiatives is counted once. """ projects: ProjectCollectionFilter """ Comparator for the initiative slug ID. """ slugId: StringComparator """ Comparator for the initiative started at date. """ startedAt: NullableDateComparator """ Comparator for the initiative status: Proposed, Planned, Active, Completed, Canceled """ status: StringComparator """ Comparator for the initiative target date. """ targetDate: NullableDateComparator """ Conditions on teams contributing through projects or lead-team associations. When team initiatives are available, this also accounts for sub-initiative projects and lead teams in the initiative hierarchy. Use leadTeam to filter only the initiative’s own lead team. """ teams: TeamCollectionFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Filters an optional relation to initiative updates. Use null to test whether the relation is set, or supply property conditions to filter the related object. """ input NullableInitiativeUpdateFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [NullableInitiativeUpdateFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Filters that the initiative update initiative must satisfy. """ initiative: InitiativeFilter """ True matches a missing relation; false requires a relation to be set. A direct null: true condition takes precedence over other property conditions in this filter. """ null: Boolean """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [NullableInitiativeUpdateFilter!] """ Filters that the initiative updates reactions must satisfy. """ reactions: ReactionCollectionFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator """ Filters that the initiative update creator must satisfy. """ user: UserFilter } """ Conditions on an optional issue relation. Use null to test whether the relation is set, or supply issue fields to filter the related record. Combine conditions with `and` or `or`. """ input NullableIssueFilter { """ Comparator for the issue's accumulatedStateUpdatedAt date. """ accumulatedStateUpdatedAt: NullableDateComparator """ Filters that the issue's activities must satisfy. """ activity: ActivityCollectionFilter """ Conditions on when the issue joined its current cycle. Changing cycles resets this time; removing the cycle clears it. """ addedToCycleAt: NullableDateComparator """ Conditions on when the issue joined its cycle. before includes the cycle’s first 24 hours; during covers the remaining time before closure, and after covers times at or after closure. """ addedToCyclePeriod: CyclePeriodComparator """ Age (created -> now) comparator, defined if the issue is still open. """ ageTime: NullableDurationComparator """ Conditions that the issue must all match. These are combined with the other fields in this filter. """ and: [NullableIssueFilter!] """ Conditions on when the issue was archived. Also set includeArchived on the query; a filter alone does not include records excluded by the query’s archive setting. """ archivedAt: NullableDateComparator """ Conditions on the assigned user. For example, null: true finds unassigned issues, while id: { eq: "user-uuid" } selects one assignee. """ assignee: NullableUserFilter """ Conditions on the issue’s external links. For example, some with a URL or sourceType condition finds issues with at least one matching attachment. """ attachments: AttachmentCollectionFilter """ Conditions on when the issue was automatically archived. Include archived issues in the query to find them; restoring an issue clears this value. """ autoArchivedAt: NullableDateComparator """ Conditions on when the issue was automatically closed after inactivity. The value is cleared when its status changes. """ autoClosedAt: NullableDateComparator """ Conditions on when the issue entered a canceled or duplicate status. The value is cleared when the issue leaves those status types. """ canceledAt: NullableDateComparator """ Conditions on direct sub-issues. Use some for a matching child, every for all children, or length to count them. This does not search all descendants recursively. """ children: IssueCollectionFilter """ Conditions on comments linked directly to the issue, including replies. Inline comments on the issue description are linked through documentContent and are not included by this filter. """ comments: CommentCollectionFilter """ Conditions on the recorded completion time. Use null: false to require a completion time, or a date range to find issues completed during that period. """ completedAt: NullableDateComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the issues creator must satisfy. """ creator: NullableUserFilter """ Conditions on the number of distinct customers with active requests linked to the issue. Requests without a customer record each count separately. Supply one comparison; to apply a range, put separate customerCount conditions in and. """ customerCount: NumberComparator """ Conditions on the number of distinct customers with active, important requests linked to the issue. Important requests without a customer record each count separately. Supply one comparison; to apply a range, put separate customerImportantCount conditions in and. """ customerImportantCount: NumberComparator """ Conditions on the assigned cycle. Use null: true for issues without a cycle or whose team has cycles disabled. Use null: false to require an assigned cycle on a team with cycles enabled. Other cycle comparisons do not require cycles to be enabled. """ cycle: NullableCycleFilter """ Cycle time (started -> completed) comparator. """ cycleTime: NullableDurationComparator """ Filters that the issue's delegated agent must satisfy. """ delegate: NullableUserFilter """ Conditions on the issue’s stored description text. Use null to find issues without a stored description, or text comparisons to match its contents. """ description: NullableStringComparator """ Conditions on the due date, without a time of day. Use null: true for issues without a due date. """ dueDate: NullableTimelessDateComparator """ Conditions on the stored numeric estimate in the team’s scale. Use null to find unestimated issues; zero is a separate, explicit estimate. """ estimate: EstimateComparator """ Comparator for filtering issues bucketed as having active agent sessions, no closed agent pull requests, and no merged agent pull requests. """ hasActiveAgentSessions: RelationExistsComparator """ Whether another issue blocks this issue, with both issues still open. A link with a closed issue counts under hasRelatedRelations instead. """ hasBlockedByRelations: RelationExistsComparator """ Whether this issue blocks another issue, with both issues still open. A link with a closed issue counts under hasRelatedRelations instead. """ hasBlockingRelations: RelationExistsComparator """ Comparator for filtering issues bucketed as having all agent sessions dismissed or closed, and no merged agent pull requests. """ hasDismissedAgentSessions: RelationExistsComparator """ Whether other issues have been marked as duplicates of this issue. This checks incoming duplicate links, not whether this issue is itself a duplicate. """ hasDuplicateRelations: RelationExistsComparator """ Comparator for filtering issues bucketed as having an errored agent session, no active sessions, and no merged agent pull requests. """ hasErroredAgentSessions: RelationExistsComparator """ Comparator for filtering issues which have agent-session-linked pull requests that were merged. """ hasMergedAgentPullRequests: RelationExistsComparator """ Whether the issue has a related link in either direction. Blocking links also count as related when either issue is closed; open blocking relationships are covered by hasBlockingRelations and hasBlockedByRelations. """ hasRelatedRelations: RelationExistsComparator """ Comparator for filtering issues which have been shared with users outside of the team. """ hasSharedUsers: RelationExistsComparator """ Comparator for filtering issues which have suggested assignees. """ hasSuggestedAssignees: RelationExistsComparator """ Comparator for filtering issues which have suggested labels. """ hasSuggestedLabels: RelationExistsComparator """ Comparator for filtering issues which have suggested projects. """ hasSuggestedProjects: RelationExistsComparator """ Comparator for filtering issues which have suggested related issues. """ hasSuggestedRelatedIssues: RelationExistsComparator """ Comparator for filtering issues which have suggested similar issues. """ hasSuggestedSimilarIssues: RelationExistsComparator """ Comparator for filtering issues which have suggested teams. """ hasSuggestedTeams: RelationExistsComparator """ Matches the issue UUID or human-readable identifier, such as ENG-123. Use number with a team filter when matching only the numeric portion. """ id: IssueIDComparator """ Conditions on assigned labels. Use some for at least one matching label, every to constrain all labels, or length: { eq: 0 } for unlabeled issues. Separate some conditions in and can require different labels on the same issue. """ labels: IssueLabelCollectionFilter """ Filters that the last applied template must satisfy. """ lastAppliedTemplate: NullableTemplateFilter """ Lead time (created -> completed) comparator. """ leadTime: NullableDurationComparator """ Conditions on customer requests linked to the issue. Use some to require a matching request or length to count linked requests. """ needs: CustomerNeedCollectionFilter """ Use true to match an unset issue relation, or false to require it to be set. Omit this field when you only want to test the related record’s properties. """ null: Boolean """ Matches the issue number within its team. Numbers are not unique across teams, so combine this with team when looking for a specific issue. """ number: NumberComparator """ Alternative conditions; the issue must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [NullableIssueFilter!] """ Conditions on the immediate parent issue. Use null: true to find top-level issues, or an ID condition to find direct sub-issues of one parent. """ parent: NullableIssueFilter """ Conditions on the numeric priority: 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. Lower nonzero values mean higher priority. """ priority: NullableNumberComparator """ Conditions on the assigned project. Use null: true for issues without a project; otherwise the project must match the supplied conditions. """ project: NullableProjectFilter """ Filters that the issues project milestone must satisfy. """ projectMilestone: NullableProjectMilestoneFilter """ Conditions on emoji reactions added directly to the issue. Reactions on its comments are filtered through comments.reactions. """ reactions: ReactionCollectionFilter """ [ALPHA] Filters that the recurring issue template must satisfy. """ recurringIssueTemplate: NullableTemplateFilter """ Conditions on releases linked to the issue. An issue can belong to several releases; use some to require a matching release or length to count them. """ releases: ReleaseCollectionFilter """ Comparator for the issues content. """ searchableContent: ContentComparator """ Filters that users the issue has been shared with must satisfy. """ sharedWith: UserCollectionFilter """ Conditions on the SLA deadline. A deadline before now does not by itself mean the SLA was missed; use slaStatus to distinguish unfinished breaches from completed outcomes. """ slaBreachesAt: NullableDateComparator """ Conditions on the current SLA risk or outcome. Use null: true for issues without an SLA status, including canceled issues and issues without an SLA. """ slaStatus: SlaStatusComparator """ Filters that the issues snoozer must satisfy. """ snoozedBy: NullableUserFilter """ Conditions on when the issue’s triage snooze ends. Use null: true for issues without a recorded snooze time. """ snoozedUntilAt: NullableDateComparator """ Filters that the source must satisfy. """ sourceMetadata: SourceMetadataComparator """ Conditions on when work started. Use null: true for issues with no recorded start time; moving back to triage, backlog, or an unstarted status clears it. """ startedAt: NullableDateComparator """ Conditions on the issue’s current status. Filter by type, such as started or completed, to match the same workflow category across teams with different status names and IDs. """ state: WorkflowStateFilter """ Filters that issue subscribers must satisfy. """ subscribers: UserCollectionFilter """ Filters that the issue's suggestions must satisfy. """ suggestions: IssueSuggestionCollectionFilter """ Filters that the issues team must satisfy. """ team: TeamFilter """ Conditions on the issue title. This does not search descriptions or comments. """ title: StringComparator """ Triage time (entered triaged -> triaged) comparator. """ triageTime: NullableDurationComparator """ Conditions on when the issue last left triage. The value is unset before triage is completed and after re-entering triage. """ triagedAt: NullableDateComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Compares optional numbers by equality, list membership, or range, with values between -2147483648 and 2147483647. Supplied conditions are combined with AND. Use `{ null: true }` for missing values or `{ null: false }` to require a value. `nin` includes missing values; `neq` and range comparisons do not. """ input NullableNumberComparator { """ Matches the given value. """ eq: Float """ Matches values greater than the given value. """ gt: Float """ Matches values greater than or equal to the given value. """ gte: Float """ Matches any value in the list. An empty list matches nothing. """ in: [Float!] """ Matches values less than the given value. """ lt: Float """ Matches values less than or equal to the given value. """ lte: Float """ Excludes the given value. """ neq: Float """ Excludes every value in the list, and includes null. An empty list adds no restriction. """ nin: [Float!] """ Set to true to match resources with no value, or false to require a value. For example, `{ null: true }` finds unset values; `{ eq: null }` is not a substitute. """ null: Boolean } """ Filters an optional relation to projects. Use null to test whether the relation is set, or supply property conditions to filter the related object. """ input NullableProjectFilter { """ Conditions on the project’s associated teams that you can access. This can match any associated team, not just the lead team. """ accessibleTeams: TeamCollectionFilter """ [ALPHA] Comparator for the project activity type: buzzin, active, some, none """ activityType: StringComparator """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [NullableProjectFilter!] """ Comparator for the project cancelation date. """ canceledAt: NullableDateComparator """ Comparator for the project completion date. """ completedAt: NullableDateComparator """ Conditions on milestones with at least one unarchived issue and no open, non-triage issues. Canceled and completed issues do not keep a milestone open. """ completedProjectMilestones: ProjectMilestoneCollectionFilter """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the projects creator must satisfy. """ creator: UserFilter """ Comparator for the project's custom identifier. """ customIdentifier: NullableStringComparator """ The number of distinct customers with unarchived needs associated with this project. Several needs from the same customer count once. """ customerCount: NumberComparator """ The number of distinct customers with unarchived needs associated with this project and priority of at least 1. Several qualifying needs from one customer count once. """ customerImportantCount: NumberComparator """ Comparator for filtering projects which are blocked. """ hasBlockedByRelations: RelationExistsComparator """ Comparator for filtering projects which are blocking. """ hasBlockingRelations: RelationExistsComparator """ [Deprecated] Comparator for filtering projects which this is depended on by. """ hasDependedOnByRelations: RelationExistsComparator """ [Deprecated]Comparator for filtering projects which this depends on. """ hasDependsOnRelations: RelationExistsComparator """ Comparator for filtering projects with relations. """ hasRelatedRelations: RelationExistsComparator """ Comparator for filtering projects with violated dependencies. """ hasViolatedRelations: RelationExistsComparator """ Comparator for the project health: onTrack, atRisk, offTrack """ health: StringComparator """ The project’s health after accounting for the age of its latest update and its reminder schedule. Accepts onTrack, atRisk, offTrack, outdated, or noUpdate. """ healthWithAge: StringComparator """ Comparator for the identifier. """ id: EntityIdentifierIDComparator """ Filters that the projects initiatives must satisfy. """ initiatives: InitiativeCollectionFilter """ Filters that the projects issues must satisfy. """ issues: IssueCollectionFilter """ Filters that project labels must satisfy. """ labels: ProjectLabelCollectionFilter """ Filters that the last applied template must satisfy. """ lastAppliedTemplate: NullableTemplateFilter """ Filters that the projects lead must satisfy. """ lead: NullableUserFilter """ [ALPHA] Filters that the project's lead team must satisfy. """ leadTeam: NullableTeamFilter """ Filters that the projects members must satisfy. """ members: UserCollectionFilter """ Comparator for the project name. """ name: StringComparator """ Filters that the project's customer needs must satisfy. """ needs: CustomerNeedCollectionFilter """ Filters that the project's next milestone must satisfy. """ nextProjectMilestone: ProjectMilestoneFilter """ True matches a missing relation; false requires a relation to be set. A direct null: true condition takes precedence over other property conditions in this filter. """ null: Boolean """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [NullableProjectFilter!] """ The project priority: 0 for no priority, 1 for Urgent, 2 for High, 3 for Medium, or 4 for Low. """ priority: NullableNumberComparator """ Filters that the project's milestones must satisfy. """ projectMilestones: ProjectMilestoneCollectionFilter """ Conditions on updates published directly to this project. Use some to find a matching update or length to test whether updates exist. """ projectUpdates: ProjectUpdatesCollectionFilter """ Filters that the projects roadmaps must satisfy. """ roadmaps: RoadmapCollectionFilter """ Comparator for the project's content. """ searchableContent: ContentComparator """ Comparator for the project slug ID. """ slugId: StringComparator """ Comparator for the project start date. """ startDate: NullableDateComparator """ Comparator for the project started date (when it was moved to an "In Progress" status). """ startedAt: NullableDateComparator """ [DEPRECATED] Comparator for the project state. """ state: StringComparator """ Filters that the project status must satisfy. """ status: ProjectStatusFilter """ Comparator for the project target date. """ targetDate: NullableDateComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Filters an optional relation to project milestones. Use null to test whether the relation is set, or supply property conditions to filter the related object. """ input NullableProjectMilestoneFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [NullableProjectMilestoneFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for the project milestone name. """ name: NullableStringComparator """ True matches a missing relation; false requires a relation to be set. A direct null: true condition takes precedence over other property conditions in this filter. """ null: Boolean """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [NullableProjectMilestoneFilter!] """ Filters that the project milestone's project must satisfy. """ project: NullableProjectFilter """ Comparator for the project milestone target date. """ targetDate: NullableDateComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Filters an optional relation to project updates. Use null to test whether the relation is set, or supply property conditions to filter the related object. """ input NullableProjectUpdateFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [NullableProjectUpdateFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ True matches a missing relation; false requires a relation to be set. A direct null: true condition takes precedence over other property conditions in this filter. """ null: Boolean """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [NullableProjectUpdateFilter!] """ Filters that the project update project must satisfy. """ project: ProjectFilter """ Filters that the project updates reactions must satisfy. """ reactions: ReactionCollectionFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator """ Filters that the project update creator must satisfy. """ user: UserFilter } """ Compares optional text, with all supplied conditions combined with AND. Text is literal and case-sensitive unless the operator says otherwise. Use `{ null: true }` for missing values; an empty string is a set value. `nin` includes missing values, while other exclusions do not. Prefix, suffix, substring, and case-insensitive operators ignore empty strings. """ input NullableStringComparator { """ Matches strings containing this text. Case-sensitive. """ contains: String """ Matches strings containing this text, ignoring case. """ containsIgnoreCase: String """ Matches strings containing this text, ignoring case and accents. """ containsIgnoreCaseAndAccent: String """ Matches strings ending with this text. Case-sensitive. """ endsWith: String """ Matches the given value. """ eq: String """ Matches the full string, ignoring case. """ eqIgnoreCase: String """ Matches any value in the list. An empty list matches nothing. """ in: [String!] """ Excludes the given value. """ neq: String """ Excludes the full string, ignoring case. """ neqIgnoreCase: String """ Excludes every value in the list, and includes null. An empty list adds no restriction. """ nin: [String!] """ Excludes strings containing this text. Case-sensitive. """ notContains: String """ Excludes strings containing this text, ignoring case. """ notContainsIgnoreCase: String """ Excludes strings ending with this text. Case-sensitive. """ notEndsWith: String """ Excludes strings starting with this text. Case-sensitive. """ notStartsWith: String """ Set to true to match resources with no value, or false to require a value. For example, `{ null: true }` finds unset values; `{ eq: null }` is not a substitute. """ null: Boolean """ Matches strings starting with this text, with case preserved. """ startsWith: String """ Matches strings starting with this text, ignoring case. """ startsWithIgnoreCase: String } """ Filters an optional relation to teams. Use null to test whether the relation is set, or supply property conditions to filter the related object. """ input NullableTeamFilter { """ Conditions on the parent team and all teams above it in the hierarchy. The team itself is excluded. """ ancestors: TeamCollectionFilter """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [NullableTeamFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Comparator for the team description. """ description: NullableStringComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Filters that the team's issues must satisfy. """ issues: IssueCollectionFilter """ The team key used as the prefix of its issue identifiers, such as ENG in ENG-123. """ key: StringComparator """ Filters that the team's members must satisfy. """ members: UserCollectionFilter """ Comparator for the team name. """ name: StringComparator """ True matches a missing relation; false requires a relation to be set. A direct null: true condition takes precedence over other property conditions in this filter. """ null: Boolean """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [NullableTeamFilter!] """ Conditions on users who own this team. Team ownership is separate from the workspace owner role. """ owners: UserCollectionFilter """ Conditions on the immediate parent team. Use { null: true } to find top-level teams. """ parent: NullableTeamFilter """ [DEPRECATED] Comparator for the team privacy. """ private: BooleanComparator """ Conditions on release pipelines associated with the team. To combine tests, put each in a separate and entry: at one level, and takes precedence over or, then length, then every, then some or direct properties. """ releasePipelines: ReleasePipelineCollectionFilter """ Filters that the private team forming this team's visibility boundary must satisfy. Only relevant for non-public teams. """ restrictedBy: NullableTeamFilter """ The time the team was retired. Use { null: true } for teams that are not retired; retirement is separate from archiving for deletion. """ retiredAt: NullableDateComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator """ Filters that the team's members must satisfy. Alias of `members` matching the filter shape produced by the app; prefer `members`. """ users: UserCollectionFilter """ Comparator for the team visibility. """ visibility: TeamVisibilityComparator } """ Conditions on an optional template relation. Use null to test whether the relation is set, or supply template fields to filter the related record. Combine conditions with `and` or `or`. """ input NullableTemplateFilter { """ Conditions that the template must all match. These are combined with the other fields in this filter. """ and: [NullableTemplateFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Conditions on the UUID of the template inherited from a parent team. This matches the immediate source template. """ inheritedFromId: IDComparator """ Conditions on the template’s name, not the titles of resources created from it. """ name: StringComparator """ Use true to match an unset template relation, or false to require it to be set. Omit this field when you only want to test the related record’s properties. """ null: Boolean """ Alternative conditions; the template must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [NullableTemplateFilter!] """ Conditions on the team that owns the template. Use null: true for templates without a team, including workspace and pipeline-scoped release-note templates. """ team: NullableTeamFilter """ Conditions on the template’s type, such as issue, project, or document. This selects what the template creates, not the scope where the template is available. """ type: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Compares optional calendar dates using YYYY-MM-DD strings or durations relative to the day the filter runs, such as `-P7D`. All supplied conditions must match. Use `{ null: true }` for missing dates; `nin` also includes missing values, while `neq` and range comparisons do not. """ input NullableTimelessDateComparator { """ Matches the given value. """ eq: TimelessDateOrDuration """ Matches values greater than the given value. """ gt: TimelessDateOrDuration """ Matches values greater than or equal to the given value. """ gte: TimelessDateOrDuration """ Matches any value in the list. An empty list matches nothing. """ in: [TimelessDateOrDuration!] """ Matches values less than the given value. """ lt: TimelessDateOrDuration """ Matches values less than or equal to the given value. """ lte: TimelessDateOrDuration """ Excludes the given value. """ neq: TimelessDateOrDuration """ Excludes every value in the list, and includes null. An empty list adds no restriction. """ nin: [TimelessDateOrDuration!] """ Set to true to match resources with no value, or false to require a value. For example, `{ null: true }` finds unset values; `{ eq: null }` is not a substitute. """ null: Boolean } """ Filters an optional relation to users. Use null to test whether the relation is set, or supply property conditions to filter the related object. """ input NullableUserFilter { """ Whether the user is active in the workspace. This is account membership state, not whether the user is currently online. """ active: BooleanComparator """ Whether the user has the workspace admin role. Workspace owners have a separate role; use owner to test for them. """ admin: BooleanComparator """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [NullableUserFilter!] """ Whether the user represents an installed application rather than a person. """ app: BooleanComparator """ Conditions on issues assigned to the user. Use some to find a user with a matching issue, or length to test the number of assigned issues. """ assignedIssues: IssueCollectionFilter """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Comparator for the user's display name. """ displayName: StringComparator """ Comparator for the user's email. """ email: StringComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for the user's invited status. """ invited: BooleanComparator """ Comparator for the user's invited status. """ isInvited: BooleanComparator """ Use { eq: true } for the authenticated user or { eq: false } for other users. The value is a BooleanComparator, not a bare boolean. """ isMe: BooleanComparator """ Comparator for the user's name. """ name: StringComparator """ True matches a missing relation; false requires a relation to be set. A direct null: true condition takes precedence over other property conditions in this filter. """ null: Boolean """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [NullableUserFilter!] """ Whether the user has the workspace owner role. This does not test ownership of a team. """ owner: BooleanComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Compares numbers by equality, list membership, or range. Values must be between -2147483648 and 2147483647; fields representing counts may require integers. For a numeric field, combine bounds such as `{ gte: 1, lt: 5 }` to include 1 through values below 5. Collection aggregates may accept only one comparison; see the aggregate field's description. """ input NumberComparator { """ Matches the given value. """ eq: Float """ Matches values greater than the given value. """ gt: Float """ Matches values greater than or equal to the given value. """ gte: Float """ Values to include in the match. For scalar comparisons, matches any listed value. An empty list matches nothing. """ in: [Float!] """ Matches values less than the given value. """ lt: Float """ Matches values less than or equal to the given value. """ lte: Float """ Excludes the given value. """ neq: Float """ Values to exclude from the match. For scalar comparisons, an empty list adds no restriction. """ nin: [Float!] } """ Payload for OAuth app webhook events. """ type OAuthAppWebhookPayload { """ The type of action that triggered the webhook. """ action: String! """ The time the payload was created. """ createdAt: DateTime! """ Id of the OAuth client that was revoked. """ oauthClientId: String! """ ID of the organization for which the webhook belongs to. """ organizationId: String! """ The type of resource. """ type: String! """ The ID of the webhook that sent this event. """ webhookId: String! """ Unix timestamp in milliseconds when the webhook was sent. """ webhookTimestamp: Float! } """ An OAuth application created and managed by another OAuth application through this API. id identifies the record for management mutations, while clientId identifies it in OAuth flows. The returned object includes branding, redirect URIs, grant capabilities, and webhook settings, but no secrets. Applications created here start private to the current workspace. """ type OAuthApplication { """ The client ID used during OAuth authorization flows. """ clientId: String! """ The time at which the OAuth application was created. """ createdAt: DateTime! """ Description shown during authorization, up to 1,000 characters. Null if not set. """ description: String """ Name of the developer or company that built the OAuth application. """ developer: String! """ URL of the developer's website, homepage, or documentation. """ developerUrl: String! """ Distribution setting for the OAuth application. Private applications are only installable by the owning workspace. """ distribution: OAuthApplicationDistribution! """ OAuth grant types supported by this application. authorization_code is always included. """ grantTypes: [OAuthApplicationGrantType!]! """ The application record’s UUID. Use this value as id in the management queries and mutations. It is distinct from clientId, which is used during OAuth authorization and token exchange. """ id: String! """ Linear upload URL for the application icon. Use fileUpload first; the image is resized and made public. Null if not set. """ imageUrl: String """ The human-readable name of the OAuth application. """ name: String! """ Allowed redirect URIs for OAuth authorization flows. """ redirectUris: [String!]! """ Whether token requests for the OAuth application, including refresh token requests, must include a DPoP proof. """ requireTokenBinding: Boolean! """ The time at which the OAuth application was last updated. """ updatedAt: DateTime! """ Whether webhook delivery is enabled for this OAuth application. """ webhookEnabled: Boolean! """ The event streams delivered to the application’s webhook endpoint. A nonempty list requires a webhook URL, and a supplied list replaces the previous selection. These subscriptions belong to the application; they are separate from webhooks you create manually with webhookCreate. """ webhookResourceTypes: [WebhookResourceType!]! """ Webhook URL used for delivering webhook payloads. Null if not set. """ webhookUrl: String } """ The result of archiving an OAuth application. """ type OAuthApplicationArchivePayload { """ Whether the operation was successful. """ success: Boolean! } """ The authenticated OAuth application's trusted-source status for Coding Sessions in the token's workspace. Combines workspace availability with the application's trust setting. This status does not grant permissions or account for team and repository access. """ type OAuthApplicationCodingSessionTrustedSource { """ The first reason that enabled is false, or null when enabled is true. Checks run in this order: workspace availability, trusted external source availability, then application approval. """ disabledReason: CodingSessionsDisabledReason """ Whether Coding Sessions are available and enabled in the workspace, trusted external sources are available, and the authenticated OAuth application is trusted. A true value does not guarantee that a specific session can start. """ enabled: Boolean! } """ Configuration for a private OAuth application owned by the current workspace and managed by your calling OAuth application. Provide its name, developer, and allowed redirect URIs. To receive webhooks, provide both a webhook URL and at least one resource type. Use an idempotencyKey when retrying creation. The caller needs OAuth authentication and workspace API management permission. """ input OAuthApplicationCreateInput { """ Description shown during authorization, up to 1,000 characters. """ description: String """ Name of the developer or company that built the OAuth application. """ developer: String! """ URL of the developer's website, homepage, or documentation. """ developerUrl: String """ OAuth grant capabilities the app may use. authorization_code is required. Defaults to authorization_code. """ grantTypes: [OAuthApplicationGrantType!] """ A nonempty retry key, up to 255 characters, scoped to the current workspace and managing OAuth application. Reusing it returns the existing unarchived application without changing its settings and without returning its secrets again. Keep the key stable when retrying an uncertain create result. Archived applications are not matched by the key. """ idempotencyKey: String """ Linear upload URL for the application icon. Use fileUpload first; the image is resized and made public. """ imageUrl: String """ Display name, from 2 to 80 characters. Must not contain a URL or the word Linear. """ name: String! """ Allowed redirect URIs for OAuth authorization flows. """ redirectUris: [String!]! """ Whether token requests for the OAuth application, including refresh token requests, must include a DPoP proof. Defaults to false. """ requireTokenBinding: Boolean """ The event streams delivered to the application’s webhook endpoint. A nonempty list requires a webhook URL, and a supplied list replaces the previous selection. These subscriptions belong to the application; they are separate from webhooks you create manually with webhookCreate. """ webhookResourceTypes: [WebhookResourceType!] """ The public HTTPS endpoint that receives this application’s signed webhook requests. A URL requires at least one webhookResourceTypes entry, and resource types require a configured URL. On update, the existing URL is used when this field is omitted. """ webhookUrl: String } """ The result of creating an OAuth application. """ type OAuthApplicationCreatePayload { """ The OAuth application that was created or updated. """ application: OAuthApplication! """ The client secret. Store this value securely because it cannot be retrieved later. Null when returning an existing OAuth application for an idempotency key. """ clientSecret: String """ Whether the operation was successful. """ success: Boolean! """ The webhook signing secret. Null if the OAuth application does not have a webhook configured or an existing OAuth application is returned for an idempotency key. """ webhookSecret: String } """ Distribution setting for an OAuth application. """ enum OAuthApplicationDistribution { private public } """ OAuth grant type supported by an OAuth application. """ enum OAuthApplicationGrantType { authorization_code client_credentials } """ The result of an OAuth application mutation. """ type OAuthApplicationPayload { """ The OAuth application that was created or updated. """ application: OAuthApplication! """ Whether the operation was successful. """ success: Boolean! } """ The result of rotating an OAuth application's client secret. """ type OAuthApplicationRotateSecretPayload { """ The new client secret. Store this value securely because it cannot be retrieved later. """ clientSecret: String! """ Whether the operation was successful. """ success: Boolean! } """ The result of rotating an OAuth application's webhook signing secret. """ type OAuthApplicationRotateWebhookSecretPayload { """ Whether the operation was successful. """ success: Boolean! """ The new webhook signing secret. """ webhookSecret: String! } """ Changes to an application created by the calling OAuth application. Omitted properties remain unchanged; supplied redirectUris, grantTypes, and webhookResourceTypes replace their full lists. Enabling client_credentials or changing the webhook URL requires permission to manage the application’s credentials, which depends on its private-team access. """ input OAuthApplicationUpdateInput { """ Description shown during authorization, up to 1,000 characters. """ description: String """ Name of the developer or company that built the OAuth application. """ developer: String """ URL of the developer's website, homepage, or documentation. """ developerUrl: String """ OAuth grant capabilities the app may use. authorization_code is required. Omit to keep the existing grant types. """ grantTypes: [OAuthApplicationGrantType!] """ Linear upload URL for the application icon. Use fileUpload first; the image is resized and made public. """ imageUrl: String """ Display name, from 2 to 80 characters. Must not contain a URL or the word Linear. """ name: String """ Allowed redirect URIs for OAuth authorization flows. """ redirectUris: [String!] """ Whether token requests for the OAuth application, including refresh token requests, must include a DPoP proof. Access tokens issued before this is enabled are not affected. """ requireTokenBinding: Boolean """ Whether webhook delivery is enabled for this OAuth application. """ webhookEnabled: Boolean """ The event streams delivered to the application’s webhook endpoint. A nonempty list requires a webhook URL, and a supplied list replaces the previous selection. These subscriptions belong to the application; they are separate from webhooks you create manually with webhookCreate. """ webhookResourceTypes: [WebhookResourceType!] """ The public HTTPS endpoint that receives this application’s signed webhook requests. A URL requires at least one webhookResourceTypes entry, and resource types require a configured URL. On update, the existing URL is used when this field is omitted. """ webhookUrl: String } """ Payload for OAuth authorization webhook events. """ type OAuthAuthorizationWebhookPayload { """ The type of action that triggered the webhook. """ action: String! """ The number of currently active tokens for the user for this client. """ activeTokensForUser: Float! """ The time the payload was created. """ createdAt: DateTime! """ Details of the OAuth client the authorization belongs to. """ oauthClient: OauthClientChildWebhookPayload! """ ID of the OAuth client the authorization belongs to. """ oauthClientId: String! """ ID of the organization for which the webhook belongs to. """ organizationId: String! """ The type of resource. """ type: String! """ Details of the user that the authorization belongs to. """ user: UserChildWebhookPayload! """ ID of the user that the authorization belongs to. """ userId: String! """ The ID of the webhook that sent this event. """ webhookId: String! """ Unix timestamp in milliseconds when the webhook was sent. """ webhookTimestamp: Float! } """ The admin decision for an OAuth application installation request. """ enum OAuthClientApprovalStatus { approved denied requested } """ OAuth client actor payload for webhooks. """ type OauthClientActorWebhookPayload { """ The ID of the OAuth client. """ id: String! """ The name of the OAuth client. """ name: String! """ The type of actor. """ type: String! } """ A request for a workspace administrator to approve installing an OAuth application with specified scopes. status records the decision on scopes; newlyRequestedScopes tracks additional permissions requested after an earlier approval. Approval permits the installation flow to continue but does not itself return an OAuth token. """ type OauthClientApproval implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ An optional explanation from the admin for why the installation request was denied. """ denyReason: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Additional scopes requested after approval, kept separate from scopes until approved. These do not overlap with scopes. Null if none are stored. """ newlyRequestedScopes: [String!] """ The identifier of the OAuth client application being requested for installation in this workspace. """ oauthClientId: String! """ An optional message from the requester explaining why they want to install the OAuth application. """ requestReason: String """ The identifier of the user who initiated the request to install the OAuth client application. """ requesterId: String! """ The identifier of the workspace admin who approved or denied the request. Null if no response is recorded or the admin was deleted. """ responderId: String """ The scopes covered by this request. They are approved only when status is approved. """ scopes: [String!]! """ The current status of the approval request: requested (pending admin review), approved, or denied. """ status: OAuthClientApprovalStatus! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A notification related to an OAuth client approval request, sent to workspace admins when an application requests access. """ type OauthClientApprovalNotification implements Entity & Node & Notification { """ 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. """ actor: User """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The bot that caused the notification. """ botActor: ActorBot """ The category of the notification. """ category: NotificationCategory! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent. """ emailedAt: DateTime """ 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. """ externalUserActor: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The OAuth client approval request related to the notification. """ oauthClientApproval: OauthClientApproval! """ Related OAuth client approval request ID. """ oauthClientApprovalId: String! """ The time at which the user marked the notification as read. Null if the notification is unread. """ readAt: DateTime """ 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. """ snoozedUntilAt: DateTime """ Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated. """ type: String! """ The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed. """ unsnoozedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The recipient user of this notification. """ user: User! } """ Certain properties of an OAuth client. """ type OauthClientChildWebhookPayload { """ The ID of the OAuth client. """ id: String! """ The name of the OAuth client. """ name: String! } """ Your Linear workspace, named Organization in the API. It contains teams, members, projects, and shared configuration such as security settings, integrations, and update schedules. The organization query returns the workspace associated with your credentials. """ type Organization implements Node { """ Whether the workspace has enabled AI discussion summaries for issues. """ aiDiscussionSummariesEnabled: Boolean! """ Whether the workspace has enabled resolved thread AI summaries. """ aiThreadSummariesEnabled: Boolean! """ [DEPRECATED] Whether member users are allowed to send invites. """ allowMembersToInvite: Boolean @deprecated(reason: "Use `securitySettings.invitationsRole` instead.") """ Allowed authentication providers, empty array means all are allowed. """ allowedAuthServices: [String!]! @deprecated(reason: "Use authSettings.allowedAuthServices instead.") """ Allowed file MIME types or patterns, such as application/pdf or text/*. Null means no workspace-specific restriction. """ allowedFileUploadContentTypes: [String!] """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ Authentication settings, including allowed providers, administrator bypass rules, and workspace visibility during signup. """ authSettings: JSONObject! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ 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. """ createdIssueCount: Int! """ The number of active (non-archived) customers tracked in the workspace. """ customerCount: Int! """ Configuration settings for the Customers feature, including revenue currency and other customer tracking preferences. """ customersConfiguration: JSONObject! """ Whether the Customers feature is enabled and accessible for the workspace based on the current plan. """ customersEnabled: Boolean! """ Default schedule for how often feed summaries are generated. """ defaultFeedSummarySchedule: FeedSummarySchedule """ The default home view for members of the workspace who have not chosen their own default. """ defaultHomeView: String """ The id of the specific initiative, project, view, dashboard, or page tab used as the default home view. The type of entity is given by defaultHomeView. """ defaultHomeViewTargetId: String """ The time at which deletion of the workspace was requested. Null if no deletion has been requested. """ deletionRequestedAt: DateTime """ Whether the activity feed feature is enabled for the workspace. """ feedEnabled: Boolean! """ The zero-indexed month at which the fiscal year starts (0 = January, 11 = December). Defaults to 0 (January). """ fiscalYearStartMonth: Float! """ 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. To get an issue's branch name, read the issue's branchName field instead of rendering this format. """ gitBranchFormat: String """ Whether issue descriptions should be included in the Git integration linkback messages posted to pull requests. """ gitLinkbackDescriptionsEnabled: Boolean! """ Whether the Git integration linkback messages should be posted as comments on pull requests in private repositories. """ gitLinkbackMessagesEnabled: Boolean! """ Whether the Git integration linkback messages should be posted as comments on pull requests in public repositories. """ gitPublicLinkbackMessagesEnabled: Boolean! """ Whether to hide other workspaces during signup for users whose email domain is claimed by this workspace. """ hideNonPrimaryOrganizations: Boolean! @deprecated(reason: "Use authSettings.hideNonPrimaryOrganizations instead.") """ Whether HIPAA compliance is enabled for the workspace. When enabled, certain data processing features are restricted to meet compliance requirements. """ hipaaComplianceEnabled: Boolean! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The workspace default interval between initiative update reminders, in weeks. Initiatives can override the schedule. Null disables the workspace default; accepted values range from 0 to 8. """ initiativeUpdateReminderFrequencyInWeeks: Float """ The day of the week on which initiative update reminders are sent. """ initiativeUpdateRemindersDay: Day! """ The hour of the day (0-23) at which initiative update reminders are sent. """ initiativeUpdateRemindersHour: Float! """ Third-party integrations configured for the workspace (e.g., GitHub, Slack, Figma). """ integrations( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IntegrationConnection! """ Workspace-level issue labels (not associated with any specific team). These labels are available across all teams in the workspace. """ labels( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issue labels. """ filter: IssueLabelFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueLabelConnection! """ The URL of the workspace's logo image. Null if no logo has been uploaded. """ logoUrl: String """ Loops in the workspace that are visible to the requesting user, including workspace and team loops. Includes enabled and disabled loops. """ loops( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): WorkflowDefinitionConnection! """ The workspace's name. """ name: String! """ Rolling 30-day total file upload volume for the workspace, measured in megabytes. Used for enforcing upload quotas. """ periodUploadVolume: Float! """ Previously used URL keys for the workspace. The last 3 are kept and automatically redirected to the current URL key. """ previousUrlKeys: [String!]! """ Project labels available in the workspace for categorizing projects. """ projectLabels( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned project labels. """ filter: ProjectLabelFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectLabelConnection! """ The workspace's available project statuses, which define the lifecycle stages for projects. """ projectStatuses: [ProjectStatus!]! """ The workspace default interval between project update reminders, in weeks. Projects can override the schedule. Null disables the workspace default; accepted values range from 0 to 8. """ projectUpdateReminderFrequencyInWeeks: Float """ The day of the week on which project update reminders are sent. """ projectUpdateRemindersDay: Day! """ The hour of the day (0-23) at which project update reminders are sent. """ projectUpdateRemindersHour: Float! """ [DEPRECATED] The frequency at which to prompt for project updates. """ projectUpdatesReminderFrequency: ProjectUpdateReminderFrequency! @deprecated(reason: "Use organization.projectUpdatesReminderFrequencyInWeeks instead") """ How Linear suggests and links issues for pull requests that have none linked: 'off', 'suggest', or 'autoOnMerge'. """ pullRequestIssueMode: String! """ Whether the workspace generates AI Pull Request guides for new pull requests. """ pullRequestTourEnabled: Boolean! """ The feature release channel the workspace belongs to, which controls access to pre-release features. """ releaseChannel: ReleaseChannel! """ Whether release management is enabled for the workspace. """ releasesEnabled: Boolean! """ [DEPRECATED] Whether workspace label creation, update, and deletion is restricted to admins. """ restrictLabelManagementToAdmins: Boolean @deprecated(reason: "Use `securitySettings.labelManagementRole` instead.") """ [DEPRECATED] Whether team creation is restricted to admins. """ restrictTeamCreationToAdmins: Boolean @deprecated(reason: "Use `securitySettings.teamCreationRole` instead.") """ Whether initiatives are enabled for the workspace. This field retains its legacy roadmap name; new integrations should use the initiative APIs. """ roadmapEnabled: Boolean! """ Whether SAML-based single sign-on authentication is enabled for the workspace. """ samlEnabled: Boolean! """ Whether SCIM provisioning is enabled for the workspace, allowing automated user and team management from an identity provider. """ scimEnabled: Boolean! """ Security settings for the workspace, including role-based restrictions for invitations, team creation, label management, and other sensitive operations. """ securitySettings: JSONObject! """ [DEPRECATED] Which day count to use for SLA calculations. """ slaDayCount: SLADayCountType! @deprecated(reason: "No longer in use") """ The Slack integration used for auto-creating project channels. """ slackProjectChannelIntegration: Integration """ The prefix used for auto-created Slack project channels. """ slackProjectChannelPrefix: String! """ The workspace’s active billing subscription. Null if it has no active paid subscription. """ subscription: PaidSubscription """ Whether the default prompt for copying an issue or opening it in a coding tool includes a suggested Git branch name. """ suggestedBranchNameEnabled: Boolean! """ Teams in the workspace. Returns only teams visible to the requesting user (all public teams plus private teams the user is a member of). """ teams( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned teams. """ filter: TeamFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): TeamConnection! """ Workspace-level templates (not associated with any specific team). These templates are available across all teams in the workspace. """ templates( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned templates. """ filter: NullableTemplateFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): TemplateConnection! """ [ALPHA] Theme settings for the workspace. """ themeSettings: JSONObject """ The time at which the current plan trial will end. Null if the workspace is not in a trial period. """ trialEndsAt: DateTime """ The time at which the current plan trial started. Null if the workspace is not in a trial period. """ trialStartsAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The workspace's unique URL key, used in URLs to identify the workspace. """ urlKey: String! """ The number of active (non-deactivated) users in the workspace. """ userCount: Int! """ Users belonging to the workspace. By default only returns active users; use the includeDisabled argument to include deactivated users. """ users( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Include disabled and suspended accounts. Defaults to false. """ includeDisabled: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): UserConnection! } """ Status of an invitation that can no longer be accepted. """ type OrganizationAcceptedOrExpiredInviteDetailsPayload { """ The status of the invite. """ status: OrganizationInviteStatus! } """ Workspace authentication restrictions and sign-in behavior. Use allowedAuthServices to limit login providers and the bypass setting to control whether administrators can use other providers. """ input OrganizationAuthSettingsInput { """ The replacement list of authentication providers allowed for sign-in. An empty array allows all providers. Omit to keep the existing list; restricting providers requires the corresponding plan feature. """ allowedAuthServices: [String!] """ Whether to disable admin/owner auth service bypass. """ disableAuthServiceBypass: Boolean """ Whether to hide non-primary workspaces during signup for users with matching email domains. """ hideNonPrimaryOrganizations: Boolean } """ Workspace deletion cancellation response. """ type OrganizationCancelDeletePayload { """ Whether the operation was successful. """ success: Boolean! } """ Workspace deletion operation response. """ type OrganizationDeletePayload { """ Whether the operation was successful. """ success: Boolean! } """ An email domain added to a workspace for sign-in and membership settings. Check verified and claimed to determine its verification state. """ type OrganizationDomain implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The authentication type this domain is used for. 'general' means standard email-based auth, 'saml' means SAML SSO authentication. """ authType: OrganizationDomainAuthType! """ Whether DNS TXT verification has confirmed workspace ownership of the domain. Required to prevent new workspaces on this domain. """ claimed: Boolean """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who added the domain. """ creator: User """ Whether users with email addresses from this domain are prevented from creating new workspaces. Can only be set on claimed domains. """ disableOrganizationCreation: Boolean """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The identity provider the domain belongs to. """ identityProvider: IdentityProvider """ The domain name (e.g., 'example.com'). """ name: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ Email address supplied for domain verification. Null if no verification email was supplied. """ verificationEmail: String """ Whether the domain has been verified by email or claimed through DNS. """ verified: Boolean! } """ What type of auth is the domain used for. """ enum OrganizationDomainAuthType { general saml } """ Response for checking whether a workspace exists. """ type OrganizationExistsPayload { """ Whether the organization exists. """ exists: Boolean! """ Whether the operation was successful. """ success: Boolean! } """ An invitation for an email address to join the workspace with a role and optional team memberships. acceptedAt records acceptance; an unaccepted invitation is pending only while it has not expired. Revoking the invite prevents later acceptance. """ type OrganizationInvite implements Node { """ The time the invitation was accepted. Null if it has not been accepted, including expired invitations. """ acceptedAt: DateTime """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The email address of the person being invited to the workspace. """ email: String! """ The time at which the invite will expire and can no longer be accepted. Null if the invite does not have an expiration date. """ expiresAt: DateTime """ Whether the invite was sent to an email address outside the workspace's verified domains. """ external: Boolean! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The user who has accepted the invite. Null, if the invite hasn't been accepted. """ invitee: User """ The user who created the invitation. """ inviter: User! """ Extra metadata associated with the invite. """ metadata: JSONObject """ The workspace that the invite is associated with. """ organization: Organization! """ The workspace role (admin, member, guest, or owner) that the invitee will receive upon accepting the invite. """ role: UserRoleType! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type OrganizationInviteConnection { """ The page's results paired with their cursors. """ edges: [OrganizationInviteEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [OrganizationInvite!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The email address, workspace role, and optional teams for an invitation. The default role is user. Guest invitations require at least one team, and Free workspaces only accept the admin role. """ input OrganizationInviteCreateInput { """ The email of the invitee. """ email: String! """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ What user role the invite should grant. """ role: UserRoleType = user """ UUIDs of the teams the invitee will join when accepting. Required and nonempty for guest invitations. The selected teams must be accessible and available for invitation. """ teamIds: [String!] } """ The result of looking up a workspace invitation. Pending invitations return OrganizationInviteFullDetailsPayload; accepted or expired invitations return OrganizationAcceptedOrExpiredInviteDetailsPayload with only status. Select __typename and use inline fragments to read the fields available for that result. """ union OrganizationInviteDetailsPayload = | OrganizationAcceptedOrExpiredInviteDetailsPayload | OrganizationInviteFullDetailsPayload """ A result and its pagination cursor. """ type OrganizationInviteEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: OrganizationInvite! } """ Details returned while a workspace invitation is pending. The email identifies the invited account and role is the membership role the invitation grants on acceptance. Use allowedAuthServices when choosing the sign-in flow. """ type OrganizationInviteFullDetailsPayload { """ Whether the invite has already been accepted. """ accepted: Boolean! """ Sign-in services allowed for this invitation, such as email, google, or saml. An empty list imposes no provider restriction. """ allowedAuthServices: [String!]! """ When the invite was created. """ createdAt: DateTime! """ The email of the invitee. """ email: String! """ Whether the invite has expired. """ expired: Boolean! """ The name of the inviter. """ inviter: String! """ ID of the workspace the invite is for. """ organizationId: String! """ URL of the workspace logo the invite is for. """ organizationLogoUrl: String """ Name of the workspace the invite is for. """ organizationName: String! """ What user role the invite should grant. """ role: UserRoleType! """ The status of the invite. """ status: OrganizationInviteStatus! } """ Workspace invite operation response. """ type OrganizationInvitePayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The workspace invitation that was created or updated. """ organizationInvite: OrganizationInvite! """ Whether the operation was successful. """ success: Boolean! } """ Whether a workspace invitation is pending, accepted, or expired. """ enum OrganizationInviteStatus { accepted expired pending } """ Changes the team memberships granted when this invitation is accepted. """ input OrganizationInviteUpdateInput { """ Replaces the team UUIDs the invitee will join on acceptance. """ teamIds: [String!]! } """ Organization origin for guidance rules. """ type OrganizationOriginWebhookPayload { """ The type of origin, always 'Organization'. """ type: String! } """ Workspace update operation response. """ type OrganizationPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The workspace that was created or updated. """ organization: Organization """ Whether the operation was successful. """ success: Boolean! } """ A limit on the number of a particular resource that can be created. The scope tells you whether it applies to the whole workspace or separately to each team, project, or initiative. The effective limit includes workspace-specific overrides. """ type OrganizationQuota implements Node { """ The resource or operation restricted by this quota. """ description: String! """ The resource's unique, stable identifier. Use this value in queries and mutations that accept the resource's ID. """ id: ID! """ Stable quota key. """ key: String! """ Effective quota limit, including workspace overrides. Scoped quotas apply this limit to each entity. """ limit: Float! """ The quota's display name. """ name: String! """ Whether the limit applies to the whole workspace or separately to each team, project, or initiative. """ scope: OrganizationQuotaScope! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type OrganizationQuotaConnection { """ The page's results paired with their cursors. """ edges: [OrganizationQuotaEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [OrganizationQuota!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A result and its pagination cursor. """ type OrganizationQuotaEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: OrganizationQuota! } """ Filter public workspace quotas by key or scope. """ input OrganizationQuotaFilter { """ Requires every listed filter to match. """ and: [OrganizationQuotaFilter!] """ Matches the stable quota key. """ key: StringComparator """ Requires at least one listed filter to match. """ or: [OrganizationQuotaFilter!] """ Comparator for the quota scope: workspace, team, project, or initiative. """ scope: StringComparator } """ The entity that a quota limit applies to. """ enum OrganizationQuotaScope { """ The limit applies to each initiative separately. """ initiative """ The limit applies to each project separately. """ project """ The limit applies to each team separately. """ team """ The limit applies to the whole workspace. """ workspace } """ Minimum workspace roles required for individual actions, such as inviting members or creating API keys. These settings control who can perform the actions; they do not change users’ assigned roles. """ input OrganizationSecuritySettingsInput { """ The minimum role required to grant or revoke the workspace admin role. """ adminManagementRole: UserRoleType """ The minimum role required to manage agent guidance prompts and settings. """ agentGuidanceRole: UserRoleType """ The minimum role required to manage API settings. """ apiSettingsRole: UserRoleType """ The minimum role required to manage workspace loops. """ automationManagementRole: UserRoleType """ The minimum role required to import data. """ importRole: UserRoleType """ The minimum role required to install and connect new integrations. """ integrationCreationRole: UserRoleType """ The minimum role required to invite users. """ invitationsRole: UserRoleType """ The minimum role required to manage workspace labels. """ labelManagementRole: UserRoleType """ The minimum role required to create personal API keys. """ personalApiKeysRole: UserRoleType """ The minimum role required to pin views to workspace pages and to change the views pinned there. """ pinnedViewManagementRole: UserRoleType """ The minimum role required to create teams. """ teamCreationRole: UserRoleType """ The minimum role required to manage workspace templates. """ templateManagementRole: UserRoleType """ The minimum role required to create initiatives without a lead team or move initiatives between workspace and team scopes. """ workspaceInitiativesRole: UserRoleType } """ Input for starting a workspace trial on a specific plan. """ input OrganizationStartTrialInput { """ The plan type to trial. """ planType: String! } """ Workspace trial start response. """ type OrganizationStartTrialPayload { """ Whether the operation was successful. """ success: Boolean! } """ Changes to the workspace associated with your credentials. Omitted fields keep their current values. Most settings require workspace-settings permission, while update reminder schedules require schedule-management permission. """ input OrganizationUpdateInput { """ Whether the workspace has enabled AI discussion summaries for issues. """ aiDiscussionSummariesEnabled: Boolean """ Whether the workspace has enabled resolved thread AI summaries. """ aiThreadSummariesEnabled: Boolean """ The allowed file MIME types or patterns, such as application/pdf or text/*. This replaces the workspace’s upload restriction list. Use null to remove the workspace-specific restriction; configuring restrictions requires the corresponding plan feature. """ allowedFileUploadContentTypes: [String!] """ The authentication settings for the workspace. """ authSettings: OrganizationAuthSettingsInput """ Default schedule for how often feed summaries are generated. """ defaultFeedSummarySchedule: FeedSummarySchedule """ The default home view for members of the workspace who have not chosen their own default. """ defaultHomeView: String """ The id of the specific initiative, project, view, or dashboard used as the default home view. The type of entity is given by defaultHomeView. """ defaultHomeViewTargetId: String """ Whether the workspace has enabled the feed feature. """ feedEnabled: Boolean """ The fiscal year’s first month, from 0 for January to 11 for December. """ fiscalYearStartMonth: Float """ How git branches are formatted. If null, default formatting will be used. """ gitBranchFormat: String """ Whether issue descriptions should be included in Git integration linkback messages. """ gitLinkbackDescriptionsEnabled: Boolean """ Whether the Git integration linkback messages should be sent for private repositories. """ gitLinkbackMessagesEnabled: Boolean """ Whether the Git integration linkback messages should be sent for public repositories. """ gitPublicLinkbackMessagesEnabled: Boolean """ Whether HIPAA compliance is enabled for the workspace. """ hipaaComplianceEnabled: Boolean """ [ALPHA] Weeks between initiative update reminders, from 0 to 8. Null disables workspace reminders. """ initiativeUpdateReminderFrequencyInWeeks: Float """ [ALPHA] The day at which initiative updates are sent. """ initiativeUpdateRemindersDay: Day """ [ALPHA] The hour for initiative update reminders, from 0 to 23. """ initiativeUpdateRemindersHour: Float """ The logo URL of the workspace. """ logoUrl: String """ The name of the workspace. """ name: String """ Whether the workspace has opted for having to approve all OAuth applications for install. """ oauthAppReview: Boolean """ Weeks between project update reminders, from 0 to 8. Null disables workspace reminders. """ projectUpdateReminderFrequencyInWeeks: Float """ The day at which project updates are sent. """ projectUpdateRemindersDay: Day """ The hour for project update reminders, from 0 to 23. """ projectUpdateRemindersHour: Float """ How Linear suggests and links issues for pull requests that have none linked: 'off', 'suggest', or 'autoOnMerge'. """ pullRequestIssueMode: String """ Whether the workspace generates AI Pull Request guides for new pull requests. """ pullRequestTourEnabled: Boolean """ Whether the workspace has opted for reduced customer support attachment information. """ reducedPersonalInformation: Boolean """ Whether agent invocation is restricted to full workspace members. """ restrictAgentInvocationToMembers: Boolean """ Whether initiatives are enabled for the workspace. The field keeps its legacy roadmap name, but controls access to initiative creation. """ roadmapEnabled: Boolean """ The security settings for the workspace. """ securitySettings: OrganizationSecuritySettingsInput """ The ID of the Slack integration to use for auto-creating project channels. """ slackProjectChannelIntegrationId: String """ The prefix to use for auto-created Slack project channels (p-, proj-, or project-). """ slackProjectChannelPrefix: String """ Whether the default prompt for copying an issue or opening it in a coding tool includes a suggested Git branch name. """ suggestedBranchNameEnabled: Boolean """ The URL key of the workspace. """ urlKey: String } """ A generic type of notification. """ enum OtherNotificationType { agentConversationMention customerAddedAsOwner customerNeedCreated customerNeedMarkedAsImportant customerNeedResolved documentAddedAsOwner documentCommentMention documentCommentReaction documentContentChange documentCreated documentDeleted documentMention documentMoved documentNewComment documentReminder documentRemovedAsOwner documentRestored documentRoleChanged documentSharedWithYou documentSubscribed documentThreadResolved documentUnsubscribed feedSummaryGenerated initiativeAddedAsOwner initiativeCommentMention initiativeCommentReaction initiativeDescriptionContentChange initiativeMention initiativeNewComment initiativeReminder initiativeThreadResolved initiativeUpdateCommentMention initiativeUpdateCommentReaction initiativeUpdateCreated initiativeUpdateMention initiativeUpdateNewComment initiativeUpdatePrompt initiativeUpdateReaction issueAddedToTriage issueAddedToView issueBlocking issueCreated issueDue issuePriorityUrgent issueReminder issueReopened issueSlaBreached issueSlaHighRisk issueStatusChangedAll issueSubscribed issueThreadResolved issueUnblocked issueUnsubscribed oauthClientApprovalCreated projectAddedAsLead projectAddedAsMember projectCommentMention projectCommentReaction projectDescriptionContentChange projectMention projectMilestoneCommentMention projectMilestoneCommentReaction projectMilestoneDescriptionContentChange projectMilestoneMention projectMilestoneNewComment projectMilestoneThreadResolved projectNewComment projectReminder projectThreadResolved projectUpdateCommentMention projectUpdateCommentReaction projectUpdateCreated projectUpdateMention projectUpdateNewComment projectUpdatePrompt projectUpdateReaction pullRequestApproved pullRequestChangesRequested pullRequestChecksFailed pullRequestCommentMention pullRequestCommented pullRequestMention pullRequestRemovedFromMergeQueue pullRequestReviewRequested pullRequestReviewRerequested system teamUpdateCommentMention teamUpdateCommentReaction teamUpdateCreated teamUpdateMention teamUpdateNewComment teamUpdateReaction triageResponsibilityIssueAddedToTriage } """ Generic notification payload. """ type OtherNotificationWebhookPayload { """ The actor who caused the notification. """ actor: UserChildWebhookPayload """ The ID of the actor who caused the notification. """ actorId: String """ The time at which the entity was archived. """ archivedAt: String """ The comment this notification belongs to. """ comment: CommentChildWebhookPayload """ The ID of the comment this notification belongs to. """ commentId: String """ The time at which the entity was created. """ createdAt: String! """ The document this notification belongs to. """ document: DocumentChildWebhookPayload """ The ID of the document this notification belongs to. """ documentId: String """ The ID of the external user who caused the notification. """ externalUserActorId: String """ The ID of the entity. """ id: String! """ The issue this notification belongs to. """ issue: IssueWithDescriptionChildWebhookPayload """ The ID of the issue this notification belongs to. """ issueId: String """ The parent comment this notification belongs to. """ parentComment: CommentChildWebhookPayload """ The ID of the parent comment this notification belongs to. """ parentCommentId: String """ The project this notification belongs to. """ project: ProjectChildWebhookPayload """ The ID of the project this notification belongs to. """ projectId: String """ The project update this notification belongs to. """ projectUpdate: ProjectUpdateChildWebhookPayload """ The ID of the project update this notification belongs to. """ projectUpdateId: String """ The emoji of the reaction this notification is for. """ reactionEmoji: String """ The type of the notification. """ type: OtherNotificationType! """ The time at which the entity was updated. """ updatedAt: String! """ The ID of the user who received the notification. """ userId: String! } """ Customer owner sorting options. """ input OwnerSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Cursors and continuation flags for this page. To paginate forward, pass `endCursor` as `after` with `first` until `hasNextPage` is false. Use `hasPreviousPage` when paginating backward with `last`; connections do not always calculate availability in the opposite direction. """ type PageInfo { """ Cursor of the last result. Use with `after` to fetch the next page. Null for an empty page. """ endCursor: String """ Whether more results are available in the forward direction when using `first`. If true, request the next page with this page's `endCursor` as `after`. """ hasNextPage: Boolean! """ Whether more results are available in the backward direction when using `last`. A false value on a forward page does not always mean there are no earlier results. """ hasPreviousPage: Boolean! """ The cursor of the first result in this page's returned order. Null for an empty page. The connection's ordering determines which boundary to use when changing pagination direction. """ startCursor: String } """ Whether null values sort before or after non-null values. """ enum PaginationNulls { """ Place resources with no value before resources with a value. """ first """ Place resources with no value after resources with a value. """ last } """ The timestamp used to order a paginated list. Forward pagination returns the newest results first. """ enum PaginationOrderBy { """ Order by when each resource was created. """ createdAt """ Order by when each resource was last meaningfully updated. """ updatedAt } """ Whether values sort in ascending or descending order. """ enum PaginationSortOrder { """ Sort from smallest to largest, or from earliest to latest for dates. """ Ascending """ Sort from largest to smallest, or from latest to earliest for dates. """ Descending } """ A workspace’s billing subscription, including its plan, seat count, billing schedule, and pending cancellation or plan changes. """ type PaidSubscription implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The scheduled cancellation time. Null if no cancellation is scheduled. """ cancelAt: DateTime """ The time the subscription was canceled. Null if it has not been canceled. """ canceledAt: DateTime """ How invoices are collected. charge_automatically charges the payment method on file; send_invoice sends an invoice for payment. """ collectionMethod: String! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who initially created (purchased) the subscription. Null if the creator has been removed from the workspace. """ creator: User """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The next scheduled billing time. Null if none is scheduled. """ nextBillingAt: DateTime """ The workspace that the subscription is associated with. """ organization: Organization! """ The subscription identifier scheduled to replace the current subscription at the next billing cycle. Uses the same values as type. Null when no change is scheduled. """ pendingChangeType: String """ The number of seats (active members) in the subscription. This is the raw count before applying minimum and maximum seat limits. """ seats: Float! """ 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. """ seatsMaximum: Float """ 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. """ seatsMinimum: Float """ The subscription identifier, including its plan and billing variant, such as basic_monthly or business_yearly. Values can include legacy or custom variants; this is not just the workspace’s plan name. """ type: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ Channel preferences to change. Omitted channels retain their current settings. """ input PartialNotificationChannelPreferencesInput { """ Whether notifications are currently enabled for desktop. """ desktop: Boolean """ Whether notifications are currently enabled for email. """ email: Boolean """ Whether notifications are currently enabled for mobile. """ mobile: Boolean """ Whether notifications are currently enabled for Slack. """ slack: Boolean } """ Different tabs available inside a release pipeline. """ enum PipelineTab { releaseNotes releases } """ A notification related to a post, such as new comments or reactions. """ type PostNotification implements Entity & Node & Notification { """ 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. """ actor: User """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The bot that caused the notification. """ botActor: ActorBot """ The category of the notification. """ category: NotificationCategory! """ Related comment ID. Null if the notification is not related to a comment. """ commentId: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent. """ emailedAt: DateTime """ 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. """ externalUserActor: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Related parent comment ID. Null if the notification is not related to a comment. """ parentCommentId: String """ Related post ID. """ postId: String! """ Name of the reaction emoji related to the notification. """ reactionEmoji: String """ The time at which the user marked the notification as read. Null if the notification is unread. """ readAt: DateTime """ 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. """ snoozedUntilAt: DateTime """ Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated. """ type: String! """ The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed. """ unsnoozedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The recipient user of this notification. """ user: User! } """ Issue priority sorting options. """ input PrioritySort { """ Whether to consider no priority as the highest or lowest priority """ noPriorityFirst: Boolean = false """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder """ Whether to tiebreak issues sharing a priority by their priority sort order """ usePrioritySortOrderTiebreaker: Boolean = true } """ A product announcement shown in targeted workspace inbox notifications. Product announcements store reusable launch copy and are sent to specific recipients through related notifications. """ type ProductAnnouncement implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ Stable campaign identifier used to deduplicate product announcement notifications. """ campaignId: String! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Body copy shown in the product announcement detail view. """ description: String! """ Headline shown at the top of the product announcement detail view. """ headline: String! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Renderer identifier for this announcement. Unknown values should fall back to generic title, headline, and description rendering. """ kind: String! """ Short title shown in the inbox notification list and push notification. """ title: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A notification related to a product announcement sent by Linear. """ type ProductAnnouncementNotification implements Entity & Node & Notification { """ 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. """ actor: User """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The bot that caused the notification. """ botActor: ActorBot """ The category of the notification. """ category: NotificationCategory! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent. """ emailedAt: DateTime """ 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. """ externalUserActor: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The product announcement related to the notification. """ productAnnouncement: ProductAnnouncement! """ Identifier of the associated product announcement. """ productAnnouncementId: String! """ The time at which the user marked the notification as read. Null if the notification is unread. """ readAt: DateTime """ 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. """ snoozedUntilAt: DateTime """ Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated. """ type: String! """ The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed. """ unsnoozedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The recipient user of this notification. """ user: User! } """ A group of issues that work toward a shared outcome. A project belongs to one or more teams and can be included in initiatives. Use its overview, milestones, status updates, and progress to plan and communicate work across those teams. """ type Project implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ Attachments associated with the project. """ attachments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectAttachmentConnection! """ The time at which the project was automatically archived by the auto-pruning process. Null if the project has not been auto-archived. """ autoArchivedAt: DateTime """ The time the project entered a canceled status. Moving to a backlog, planned, started, or completed status clears this value. Null when no cancellation time is recorded. """ canceledAt: DateTime """ The project's color as a HEX string. Used in the UI to visually identify the project. """ color: String! """ Comments associated with the project overview. """ comments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned comments. """ filter: CommentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CommentConnection! """ The time the project entered a completed status. Moving to a backlog, planned, started, or canceled status clears this value. Null when no completion time is recorded. """ completedAt: DateTime """ Weekly completed-issue counts since startedAt, in chronological order. Empty before the first full week. """ completedIssueCountHistory: [Float!]! """ Weekly completed estimate-point totals since startedAt, in chronological order. Empty before the first full week. """ completedScopeHistory: [Float!]! """ The full project overview in Markdown. Null if no overview has been set; description is the separate short summary. """ content: String """ The issue that was converted into this project. Null if the project was not created from an issue. """ convertedFromIssue: Issue """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the project. Null when no user was recorded or the user is no longer available. """ creator: User """ A short plain-text summary of the project. Use content for the longer Markdown overview, and documents for additional project resources. """ description: String! """ The document backing the project overview. Null if no overview has been set. """ documentContent: DocumentContent """ Documents associated with the project. """ documents( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned documents. """ filter: DocumentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): DocumentConnection! """ External links associated with the project. """ externalLinks( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): EntityExternalLinkConnection! """ The authenticated user’s favorite for this project. Null if the user has not favorited it. """ favorite: Favorite """ The resolution of the reminder frequency. """ frequencyResolution: FrequencyResolutionType! """ 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. """ health: ProjectUpdateHealthType """ 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. """ healthUpdatedAt: DateTime """ History records associated with changes to this project. Each record belongs to the project and has its own creation and update times. """ history( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectHistoryConnection! """ The icon of the project. Can be an emoji or a decorative icon type. """ icon: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Weekly started estimate-point totals since startedAt, in chronological order. Empty before the first full week. """ inProgressScopeHistory: [Float!]! """ The associations that include this project in initiatives. Each association identifies the initiative and carries the project’s ordering within it. """ initiativeToProjects( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): InitiativeToProjectConnection! """ Initiatives that include this project. A project can belong to more than one initiative; use initiativeToProjects when you also need the association and its ordering. """ initiatives( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): InitiativeConnection! """ Settings for all integrations associated with that project. """ integrationsSettings: IntegrationsSettings """ Dependencies where this project is the related project. """ inverseRelations( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectRelationConnection! """ Weekly issue-count snapshots since startedAt, excluding triage, canceled, and duplicate issues. Empty before the first full week. """ issueCountHistory: [Float!]! """ Issues associated with the project. """ issues( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueConnection! """ The UUIDs of labels applied to this project. Use labels to read their names and colors. These are project labels, separate from labels applied to individual issues. """ labelIds: [String!]! """ Labels associated with this project. """ labels( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned project labels. """ filter: ProjectLabelFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectLabelConnection! """ The most recently recorded project template. Null if no template is recorded or the template is no longer available. This is a reference to the template, not a snapshot of its contents. """ lastAppliedTemplate: Template """ The most recent status update posted for this project. Null if no updates have been posted. """ lastUpdate: ProjectUpdate """ The user responsible for the project and its status updates. Null if no lead is assigned. """ lead: User """ Users who are members of this project. Project membership is separate from team membership, and the project lead is included among the members. """ members( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned users. """ filter: UserFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Include disabled and suspended accounts. Defaults to false. """ includeDisabled: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): UserConnection! """ The ID of the Microsoft Teams channel connected to the project, if any. """ microsoftTeamsChannelId: String """ The name of the project. """ name: String! """ Customer needs associated with the project. """ needs( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned needs. """ filter: CustomerNeedFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CustomerNeedConnection! """ The priority of the project. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. """ priority: Int! """ The display label for priority: No priority, Urgent, High, Medium, or Low. Use priority for the corresponding numeric value. """ priorityLabel: String! """ The sort order for the project within the workspace when ordered by priority. """ prioritySortOrder: Float! """ Completion fraction from 0 to 1. Started issues contribute 25% of their estimates; issue counts are used when total estimates are zero. Excludes triage, canceled, and duplicate issues. Returns 0 when no issues remain in the calculation, and 0.999 instead of 1 when unfinished issues with zero estimates remain. """ progress: Float! """ Milestones within this project. Use their sortOrder to understand their planned sequence and their progress to track the assigned issues. """ projectMilestones( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned milestones. """ filter: ProjectMilestoneFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectMilestoneConnection! """ The time until which update reminders are paused. Null means no project-specific pause is set. """ projectUpdateRemindersPausedUntilAt: DateTime """ Published status updates for this project. Each update contains a message, reported health, and a snapshot of progress at publication. """ projectUpdates( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectUpdateConnection! """ Dependencies where this project is the source. Anchor types determine the direction of the dependency. """ relations( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectRelationConnection! """ The number of resources associated with the project, including documents, external links, and attachments. """ resourceCount: Int! """ Total estimate points, excluding triage, canceled, and duplicate issues. Archived projects use their last stored scope snapshot. """ scope: Float! """ Weekly estimate-point totals since startedAt, excluding triage, canceled, and duplicate issues. Empty before the first full week. """ scopeHistory: [Float!]! """ The ID of the Slack channel connected to the project, if any. """ slackChannelId: String """ Whether to send new issue comment notifications to Slack. """ slackIssueComments: Boolean! @deprecated(reason: "No longer in use") """ Whether to send new issue status updates to Slack. """ slackIssueStatuses: Boolean! @deprecated(reason: "No longer is use") """ Whether to send new issue notifications to Slack. """ slackNewIssue: Boolean! @deprecated(reason: "No longer in use") """ The project's unique URL slug, used to construct human-readable URLs. """ slugId: String! """ The sort order for the project within the workspace. Used for manual ordering in list views. """ sortOrder: Float! """ The estimated start date of the project. Null if no start date is set. """ startDate: TimelessDate """ The precision of startDate: month, quarter, halfYear, or year. Null means an exact date or no start date. """ startDateResolution: DateResolutionType """ The time the project first entered a started status. Moving back to backlog or planned keeps this time and the progress history. Null if the project has not been started. """ startedAt: DateTime """ [DEPRECATED] The type of the state. """ state: String! @deprecated(reason: "Use project.status instead") """ The current project status. Its type places the project in a lifecycle stage, such as planned, started, or completed. Changing the status also updates the corresponding lifecycle timestamps. """ status: ProjectStatus! """ The external services the project is synced with. """ syncedWith: [ExternalEntityInfo!] """ The estimated completion date of the project. Null if no target date is set. """ targetDate: TimelessDate """ The precision of targetDate: month, quarter, halfYear, or year. Null means an exact date or no target date. """ targetDateResolution: DateResolutionType """ Teams associated with this project that you can access. Issues in the project can belong to any of its teams; inaccessible private teams are not included in this result. """ teams( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned teams. """ filter: TeamFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): TeamConnection! """ Whether the project is in the trash. Trashed projects are also archived and can be restored with projectUnarchive while they remain available. Null means the project is not trashed. """ trashed: Boolean """ The frequency at which to prompt for updates. When not set, reminders are inherited from workspace. """ updateReminderFrequency: Float """ The n-weekly frequency at which to prompt for updates. When not set, reminders are inherited from workspace. """ updateReminderFrequencyInWeeks: Float """ The day at which to prompt for updates. """ updateRemindersDay: Day """ The hour at which to prompt for updates. """ updateRemindersHour: Float """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The project’s URL in Linear. """ url: String! } """ The result of archiving or restoring a resource. """ type ProjectArchivePayload implements ArchivePayload { """ The resource after the operation, when returned. This can be null when the mutation does not return a resource, including after deletion. Check `success` for the operation's result. """ entity: Project """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ An external resource attached to a project, such as a link or an item from an integration. The title and subtitle describe it in Linear, while url opens the resource and metadata can provide additional display details. """ type ProjectAttachment implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the attachment. Null when no user is recorded or the user is no longer available. """ creator: User """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Custom metadata related to the attachment. Contains user-facing content such as conversation messages or rendered attributes from integrations. """ metadata: JSONObject! """ 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. """ source: JSONObject """ 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. """ sourceType: String """ Optional subtitle of the attachment, providing additional context below the title. """ subtitle: String """ Title of the attachment. """ title: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ URL of the attachment. """ url: String! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type ProjectAttachmentConnection { """ The page's results paired with their cursors. """ edges: [ProjectAttachmentEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [ProjectAttachment!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A result and its pagination cursor. """ type ProjectAttachmentEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: ProjectAttachment! } """ Certain properties of a project. """ type ProjectChildWebhookPayload { """ The ID of the project. """ id: String! """ The name of the project. """ name: String! """ The URL of the project. """ url: String! } """ Filters a related collection of projects. Use some or every to test its members and length to test its size, for example length: { eq: 0 } for an empty collection. Direct property filters act as some only when no collection clause is supplied. """ input ProjectCollectionFilter { """ Conditions on the project’s associated teams that you can access. This can match any associated team, not just the lead team. """ accessibleTeams: TeamCollectionFilter """ [ALPHA] Comparator for the project activity type: buzzin, active, some, none """ activityType: StringComparator """ All of these collection conditions must match. Each can test a different member of the collection. """ and: [ProjectCollectionFilter!] """ Comparator for the project cancelation date. """ canceledAt: NullableDateComparator """ Comparator for the project completion date. """ completedAt: NullableDateComparator """ Conditions on milestones with at least one unarchived issue and no open, non-triage issues. Canceled and completed issues do not keep a milestone open. """ completedProjectMilestones: ProjectMilestoneCollectionFilter """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the projects creator must satisfy. """ creator: UserFilter """ Comparator for the project's custom identifier. """ customIdentifier: NullableStringComparator """ The number of distinct customers with unarchived needs associated with this project. Several needs from the same customer count once. """ customerCount: NumberComparator """ The number of distinct customers with unarchived needs associated with this project and priority of at least 1. Several qualifying needs from one customer count once. """ customerImportantCount: NumberComparator """ Filters that needs to be matched by all projects. """ every: ProjectFilter """ Comparator for filtering projects which are blocked. """ hasBlockedByRelations: RelationExistsComparator """ Comparator for filtering projects which are blocking. """ hasBlockingRelations: RelationExistsComparator """ [Deprecated] Comparator for filtering projects which this is depended on by. """ hasDependedOnByRelations: RelationExistsComparator """ [Deprecated]Comparator for filtering projects which this depends on. """ hasDependsOnRelations: RelationExistsComparator """ Comparator for filtering projects with relations. """ hasRelatedRelations: RelationExistsComparator """ Comparator for filtering projects with violated dependencies. """ hasViolatedRelations: RelationExistsComparator """ Comparator for the project health: onTrack, atRisk, offTrack """ health: StringComparator """ The project’s health after accounting for the age of its latest update and its reminder schedule. Accepts onTrack, atRisk, offTrack, outdated, or noUpdate. """ healthWithAge: StringComparator """ Comparator for the identifier. """ id: EntityIdentifierIDComparator """ Filters that the projects initiatives must satisfy. """ initiatives: InitiativeCollectionFilter """ Filters that the projects issues must satisfy. """ issues: IssueCollectionFilter """ Filters that project labels must satisfy. """ labels: ProjectLabelCollectionFilter """ Filters that the last applied template must satisfy. """ lastAppliedTemplate: NullableTemplateFilter """ Filters that the projects lead must satisfy. """ lead: NullableUserFilter """ [ALPHA] Filters that the project's lead team must satisfy. """ leadTeam: NullableTeamFilter """ The number of related objects, before applying some or every. Use { eq: 0 } to find an empty collection. """ length: NumberComparator """ Filters that the projects members must satisfy. """ members: UserCollectionFilter """ Comparator for the project name. """ name: StringComparator """ Filters that the project's customer needs must satisfy. """ needs: CustomerNeedCollectionFilter """ Filters that the project's next milestone must satisfy. """ nextProjectMilestone: ProjectMilestoneFilter """ At least one of these collection conditions must match. """ or: [ProjectCollectionFilter!] """ The project priority: 0 for no priority, 1 for Urgent, 2 for High, 3 for Medium, or 4 for Low. """ priority: NullableNumberComparator """ Filters that the project's milestones must satisfy. """ projectMilestones: ProjectMilestoneCollectionFilter """ Conditions on updates published directly to this project. Use some to find a matching update or length to test whether updates exist. """ projectUpdates: ProjectUpdatesCollectionFilter """ Filters that the projects roadmaps must satisfy. """ roadmaps: RoadmapCollectionFilter """ Comparator for the project's content. """ searchableContent: ContentComparator """ Comparator for the project slug ID. """ slugId: StringComparator """ Filters that needs to be matched by some projects. """ some: ProjectFilter """ Comparator for the project start date. """ startDate: NullableDateComparator """ Comparator for the project started date (when it was moved to an "In Progress" status). """ startedAt: NullableDateComparator """ [DEPRECATED] Comparator for the project state. """ state: StringComparator """ Filters that the project status must satisfy. """ status: ProjectStatusFilter """ Comparator for the project target date. """ targetDate: NullableDateComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type ProjectConnection { """ The page's results paired with their cursors. """ edges: [ProjectEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Project!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The details for a new project. Provide a name and the teams that will own its issues. A project template can supply defaults and create related milestones or issues; see templateId for how template values and your input are combined. """ input ProjectCreateInput { """ The project color as a hexadecimal color string, such as #5E6AD2. """ color: String """ The full project overview in Markdown, separate from the short description. """ content: String """ The ID of the issue that was converted into this project. """ convertedFromIssueId: String """ A short plain-text summary. Use content for the full Markdown overview. """ description: String """ The icon of the project. """ icon: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ UUIDs of project labels to apply. When using a template, these are combined with its applicable labels; an explicitly supplied label takes precedence over a template label in the same group. Label groups themselves cannot be applied. """ labelIds: [String!] """ Records the last applied template UUID. To create the project from a template, use templateId. """ lastAppliedTemplateId: String """ UUID of the project lead. Application users cannot be leads. The lead is also added as a member. """ leadId: String """ UUIDs of users to add as project members. Application users cannot be members, and the project lead is added even when not listed. Without this input, a template can supply members; otherwise the list starts empty. """ memberIds: [String!] """ The name of the project. """ name: String! """ The priority of the project. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. """ priority: Int """ The sort order for the project within shared views, when ordered by priority. """ prioritySortOrder: Float """ Position in shared project views, in ascending order. Omit or pass 0 to append; collisions are adjusted. """ sortOrder: Float """ The planned start date in YYYY-MM-DD format. """ startDate: TimelessDate """ The precision of startDate: month, quarter, halfYear, or year. Omit for an exact date. """ startDateResolution: DateResolutionType """ The UUID of an active project status available to the project’s lead team. Without an explicit status or a template default, the project uses the first backlog status in that team’s status scope. """ statusId: String """ The planned completion date in YYYY-MM-DD format. """ targetDate: TimelessDate """ The precision of targetDate: month, quarter, halfYear, or year. Omit for an exact date. """ targetDateResolution: DateResolutionType """ UUIDs of the teams that the project belongs to. At least one accessible team must remain after template processing. Issues in the project must belong to one of these teams. """ teamIds: [String!]! """ The UUID of a project template to apply. Non-null input values override template defaults for icon, color, summary, status, priority, lead, and members. A nonempty teamIds list replaces the template’s teams; an empty list uses them. Nonempty content replaces the template overview. Labels are combined, with your selection taking precedence within a single-select group. The template can also create milestones, initial issues, and initiative associations. A nonempty name is still required. Omit useDefaultTemplate when supplying this field. """ templateId: String """ Whether to apply the first supplied team’s default project template. The request fails if that team has no default template. Omit or use false to create without a default template. This field cannot be supplied alongside templateId, even when false. """ useDefaultTemplate: Boolean } """ Project creation date sorting options. """ input ProjectCreatedAtSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A result and its pagination cursor. """ type ProjectEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Project! } """ Filters projects by status, health, dates, people, teams, milestones, dependencies, or customer needs. Supplied conditions must match together; use and and or to combine nested filters. """ input ProjectFilter { """ Conditions on the project’s associated teams that you can access. This can match any associated team, not just the lead team. """ accessibleTeams: TeamCollectionFilter """ [ALPHA] Comparator for the project activity type: buzzin, active, some, none """ activityType: StringComparator """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [ProjectFilter!] """ Comparator for the project cancelation date. """ canceledAt: NullableDateComparator """ Comparator for the project completion date. """ completedAt: NullableDateComparator """ Conditions on milestones with at least one unarchived issue and no open, non-triage issues. Canceled and completed issues do not keep a milestone open. """ completedProjectMilestones: ProjectMilestoneCollectionFilter """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the projects creator must satisfy. """ creator: UserFilter """ Comparator for the project's custom identifier. """ customIdentifier: NullableStringComparator """ The number of distinct customers with unarchived needs associated with this project. Several needs from the same customer count once. """ customerCount: NumberComparator """ The number of distinct customers with unarchived needs associated with this project and priority of at least 1. Several qualifying needs from one customer count once. """ customerImportantCount: NumberComparator """ Comparator for filtering projects which are blocked. """ hasBlockedByRelations: RelationExistsComparator """ Comparator for filtering projects which are blocking. """ hasBlockingRelations: RelationExistsComparator """ [Deprecated] Comparator for filtering projects which this is depended on by. """ hasDependedOnByRelations: RelationExistsComparator """ [Deprecated]Comparator for filtering projects which this depends on. """ hasDependsOnRelations: RelationExistsComparator """ Comparator for filtering projects with relations. """ hasRelatedRelations: RelationExistsComparator """ Comparator for filtering projects with violated dependencies. """ hasViolatedRelations: RelationExistsComparator """ Comparator for the project health: onTrack, atRisk, offTrack """ health: StringComparator """ The project’s health after accounting for the age of its latest update and its reminder schedule. Accepts onTrack, atRisk, offTrack, outdated, or noUpdate. """ healthWithAge: StringComparator """ Comparator for the identifier. """ id: EntityIdentifierIDComparator """ Filters that the projects initiatives must satisfy. """ initiatives: InitiativeCollectionFilter """ Filters that the projects issues must satisfy. """ issues: IssueCollectionFilter """ Filters that project labels must satisfy. """ labels: ProjectLabelCollectionFilter """ Filters that the last applied template must satisfy. """ lastAppliedTemplate: NullableTemplateFilter """ Filters that the projects lead must satisfy. """ lead: NullableUserFilter """ [ALPHA] Filters that the project's lead team must satisfy. """ leadTeam: NullableTeamFilter """ Filters that the projects members must satisfy. """ members: UserCollectionFilter """ Comparator for the project name. """ name: StringComparator """ Filters that the project's customer needs must satisfy. """ needs: CustomerNeedCollectionFilter """ Filters that the project's next milestone must satisfy. """ nextProjectMilestone: ProjectMilestoneFilter """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [ProjectFilter!] """ The project priority: 0 for no priority, 1 for Urgent, 2 for High, 3 for Medium, or 4 for Low. """ priority: NullableNumberComparator """ Filters that the project's milestones must satisfy. """ projectMilestones: ProjectMilestoneCollectionFilter """ Conditions on updates published directly to this project. Use some to find a matching update or length to test whether updates exist. """ projectUpdates: ProjectUpdatesCollectionFilter """ Filters that the projects roadmaps must satisfy. """ roadmaps: RoadmapCollectionFilter """ Comparator for the project's content. """ searchableContent: ContentComparator """ Comparator for the project slug ID. """ slugId: StringComparator """ Comparator for the project start date. """ startDate: NullableDateComparator """ Comparator for the project started date (when it was moved to an "In Progress" status). """ startedAt: NullableDateComparator """ [DEPRECATED] Comparator for the project state. """ state: StringComparator """ Filters that the project status must satisfy. """ status: ProjectStatusFilter """ Comparator for the project target date. """ targetDate: NullableDateComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The result of a project filter suggestion query. """ type ProjectFilterSuggestionPayload { """ The json filter that is suggested. """ filter: JSONObject """ The log id of the prompt, that created this filter. """ logId: String } """ Project health sorting options. """ input ProjectHealthSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A group of recorded changes to a project, such as status, members, dates, or labels. The entries JSON contains individual events ordered by event time. A record can gain entries over time, so its creation time is not the time of every event it contains. """ type ProjectHistory implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The events that happened while recording that history. """ entries: JSONObject! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The project that this history record belongs to. """ project: Project! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type ProjectHistoryConnection { """ The page's results paired with their cursors. """ edges: [ProjectHistoryEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [ProjectHistory!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A result and its pagination cursor. """ type ProjectHistoryEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: ProjectHistory! } """ A label for organizing and filtering projects. Labels can apply across the workspace or be scoped to a team. A label group contains related labels; projects use the labels within the group, rather than the group itself. """ type ProjectLabel implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ Labels directly contained in this label group. Empty for labels that are not groups. """ children( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned project labels. """ filter: ProjectLabelFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectLabelConnection! """ Hex color of the label, such as #EB5757. """ color: String! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the label. """ creator: User """ The label's description. """ description: String """ The selection mode of this label group. Null for regular labels. Groups without a type use single-select behavior. """ groupType: LabelGroupType """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The original workspace or parent-team label that this label was inherited from. Null if the label is not inherited. """ inheritedFrom: ProjectLabel """ Whether this is a group of child labels. Groups cannot be applied directly to issues, projects, or initiatives. """ isGroup: Boolean! """ Time the label was last applied to an issue, project, or initiative. Null if it has never been applied. """ lastAppliedAt: DateTime """ The label's name. """ name: String! """ The workspace that the project label belongs to. """ organization: Organization! """ The parent label group. Null for labels outside a group. The group’s groupType controls whether multiple children can be applied together. """ parent: ProjectLabel """ Projects associated with the label. """ projects( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned projects. """ filter: ProjectFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned projects. """ sort: [ProjectSortInput!] ): ProjectConnection! """ 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. """ retiredBy: User """ The team that the label is scoped to. If null, the label is a workspace-level label available to all teams in the workspace. """ team: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ Certain properties of a project label. """ type ProjectLabelChildWebhookPayload { """ The color of the project label. """ color: String! """ The ID of the project label. """ id: String! """ The name of the project label. """ name: String! """ The parent ID of the project label. """ parentId: String } """ Filters a related collection of project labels. Use some or every to test its members and length to test its size, for example length: { eq: 0 } for an empty collection. Direct property filters act as some only when no collection clause is supplied. """ input ProjectLabelCollectionFilter { """ All of these collection conditions must match. Each can test a different member of the collection. """ and: [ProjectLabelCollectionFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the project labels creator must satisfy. """ creator: NullableUserFilter """ Filters that needs to be matched by all project labels. """ every: ProjectLabelFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for whether the label is a group label. """ isGroup: BooleanComparator """ The number of related objects, before applying some or every. Use { eq: 0 } to find an empty collection. """ length: NumberComparator """ Comparator for the name. """ name: StringComparator """ True matches an unset label list, which is different from an empty list. Use length: { eq: 0 } to find projects without labels. """ null: Boolean """ At least one of these collection conditions must match. """ or: [ProjectLabelCollectionFilter!] """ Conditions on the label group containing this label. This filters group properties, such as its name, rather than the child label itself. """ parent: ProjectLabelFilter """ Filters that needs to be matched by some project labels. """ some: ProjectLabelCollectionFilter """ Filters that the project label's team must satisfy. Use `{ null: true }` to filter workspace-level labels. """ team: NullableTeamFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type ProjectLabelConnection { """ The page's results paired with their cursors. """ edges: [ProjectLabelEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [ProjectLabel!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A project label or label group to create. Omit teamId for a workspace label, or supply a team UUID to limit the label to that team and its inherited copies. Use parentId to place a label in a group; a group’s children must share its scope. """ input ProjectLabelCreateInput { """ Hex color, such as #EB5757. Defaults to the parent group's color, or #4EA7FC without a parent. Null is not accepted. """ color: String """ Description of the label’s purpose, up to 255 characters. """ description: String """ How children of a label group can be applied to a project. singleSelect allows one child; multiSelect allows several. Omission or null uses single-select behavior. This setting applies to groups. """ groupType: LabelGroupType """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ Create a group to hold child labels. Groups cannot be applied directly. Defaults to false. """ isGroup: Boolean """ Label name, from 1 to 80 characters. Emoji are not allowed. """ name: String! """ UUID of an existing label group. Groups cannot be nested inside other groups. """ parentId: String """ Retirement time. Set to create a retired label; omit or pass null for an active label. """ retiredAt: DateTime """ The identifier of the team to scope the label to. If not given, the label is a workspace-level label available to all teams. """ teamId: String } """ A result and its pagination cursor. """ type ProjectLabelEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: ProjectLabel! } """ Filters project labels by name, creator, team, or parent label group. Supplied conditions must match together; use and and or to combine nested filters. """ input ProjectLabelFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [ProjectLabelFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the project labels creator must satisfy. """ creator: NullableUserFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for whether the label is a group label. """ isGroup: BooleanComparator """ Comparator for the name. """ name: StringComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [ProjectLabelFilter!] """ Conditions on the label group containing this label. This filters group properties, such as its name, rather than the child label itself. """ parent: ProjectLabelFilter """ Filters that the project label's team must satisfy. Use `{ null: true }` to filter workspace-level labels. """ team: NullableTeamFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The result of a project label mutation. """ type ProjectLabelPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The label that was created or updated. """ projectLabel: ProjectLabel! """ Whether the operation was successful. """ success: Boolean! } """ Input for updating an existing project label. All fields are optional; only provided fields will be updated. """ input ProjectLabelUpdateInput { """ Hex color, such as #EB5757. Changing a group's color also updates children that shared its previous color. Null is not accepted. """ color: String """ Description of the label’s purpose, up to 255 characters. Null clears the description. """ description: String """ How children of this label group can be applied to a project: singleSelect allows one child and multiSelect allows several. Omit to keep the current setting; null uses single-select behavior. """ groupType: LabelGroupType """ Whether the label is a group of child labels. Changing this requires an unused label with no parent or children. Groups cannot be applied directly. """ isGroup: Boolean """ Label name, from 1 to 80 characters. Emoji and null are not accepted. """ name: String """ UUID of an existing label group. Null removes the label from its group. Groups cannot be nested. """ parentId: String """ Retirement time. Set to null to restore the label. Changing a group's retirement state also changes its children; a child cannot be restored while its group is retired. """ retiredAt: DateTime } """ Payload for a project label webhook. """ type ProjectLabelWebhookPayload { """ The time at which the entity was archived. """ archivedAt: String """ The color of the project label. """ color: String! """ The time at which the entity was created. """ createdAt: String! """ The creator ID of the project label. """ creatorId: String """ The label's description. """ description: String """ The ID of the entity. """ id: String! """ The ID of the original label this label was inherited from. Null if the label is not inherited. """ inheritedFromId: String """ Whether the label is a group. """ isGroup: Boolean! """ The name of the project label. """ name: String! """ The parent ID of the project label. """ parentId: String """ The team ID of the project label. Null if the label is a workspace-level label. """ teamId: String """ The time at which the entity was updated. """ updatedAt: String! } """ Project lead sorting options. """ input ProjectLeadSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Project manual order sorting options. """ input ProjectManualSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A checkpoint within a project, with a name, optional description, and target date. Assign project issues to a milestone to track its progress. Milestones are ordered within the project, and their status is calculated from that order, their target dates, and issue progress. """ type ProjectMilestone implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The milestone description in Markdown. Null if no description has been set. """ description: String """ The rich-text content of the milestone description. Null if no description has been set. """ documentContent: DocumentContent """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Issues associated with the project milestone. """ issues( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueConnection! """ The milestone name, unique among active milestones in the project. """ name: String! """ Issue-based completion as a percentage from 0 to 100, rounded to two decimal places. Completed issues contribute their full estimate and started issues contribute 25%. When total estimates are zero, issue counts are used instead. Triage, canceled, and duplicate issues are excluded. Returns 0 when no issues remain in the calculation, and 99.9 instead of 100 when unfinished issues with zero estimates remain. """ progress: Float! """ The project that this milestone belongs to. """ project: Project! """ The milestone’s manual position within its project. Lower values appear first. """ sortOrder: Float! """ The milestone’s calculated status. An incomplete milestone past its target date is overdue. Otherwise, the first incomplete milestone by sortOrder is next, later incomplete milestones are unstarted, and complete milestones are done. """ status: ProjectMilestoneStatus! """ The planned completion date of the milestone. Null if no target date is set. """ targetDate: TimelessDate """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ Certain properties of a project milestone. """ type ProjectMilestoneChildWebhookPayload { """ The ID of the project milestone. """ id: String! """ The name of the project milestone. """ name: String! """ The target date of the project milestone. """ targetDate: String! } """ Filters a related collection of project milestones. Use some or every to test its members and length to test its size, for example length: { eq: 0 } for an empty collection. Direct property filters act as some only when no collection clause is supplied. """ input ProjectMilestoneCollectionFilter { """ All of these collection conditions must match. Each can test a different member of the collection. """ and: [ProjectMilestoneCollectionFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that needs to be matched by all milestones. """ every: ProjectMilestoneFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ The number of related objects, before applying some or every. Use { eq: 0 } to find an empty collection. """ length: NumberComparator """ Comparator for the project milestone name. """ name: NullableStringComparator """ At least one of these collection conditions must match. """ or: [ProjectMilestoneCollectionFilter!] """ Filters that the project milestone's project must satisfy. """ project: NullableProjectFilter """ Filters that needs to be matched by some milestones. """ some: ProjectMilestoneFilter """ Comparator for the project milestone target date. """ targetDate: NullableDateComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type ProjectMilestoneConnection { """ The page's results paired with their cursors. """ edges: [ProjectMilestoneEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [ProjectMilestone!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The name and parent project for a new milestone, with optional description, target date, and ordering. The name must be unique among active milestones in that project. """ input ProjectMilestoneCreateInput { """ The description of the project milestone in markdown format. """ description: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The name of the project milestone. """ name: String! """ Related project for the project milestone. Can be a UUID or project identifier (e.g., 'P-LIN-123'). """ projectId: String! """ Manual position within the project; lower values appear first. Omit or use 0 to append the milestone. """ sortOrder: Float """ The planned completion date in YYYY-MM-DD format. """ targetDate: TimelessDate } """ A result and its pagination cursor. """ type ProjectMilestoneEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: ProjectMilestone! } """ Filters project milestones by name, target date, or project. Supplied conditions must match together; use and and or to combine nested filters. """ input ProjectMilestoneFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [ProjectMilestoneFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for the project milestone name. """ name: NullableStringComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [ProjectMilestoneFilter!] """ Filters that the project milestone's project must satisfy. """ project: NullableProjectFilter """ Comparator for the project milestone target date. """ targetDate: NullableDateComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The result of a project milestone mutation. """ type ProjectMilestonePayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The project milestone that was created or updated. """ projectMilestone: ProjectMilestone! """ Whether the operation was successful. """ success: Boolean! } """ The status of a project milestone. """ enum ProjectMilestoneStatus { done next overdue unstarted } """ Changes to an existing milestone. Omit fields to keep their current values. A null targetDate clears the date, while an empty or null description leaves the existing description unchanged. """ input ProjectMilestoneUpdateInput { """ The replacement description in Markdown. An empty string or null leaves the description unchanged. """ description: String """ The milestone name, unique among active milestones in the project. """ name: String """ The destination project’s UUID or human-readable identifier, such as P-LIN-123. Changing it moves the milestone and clears references from issue drafts in the previous project. Omit to keep the milestone in its current project. """ projectId: String """ Manual position within the project; lower values appear first. Colliding positions are adjusted automatically. """ sortOrder: Float """ The planned completion date in YYYY-MM-DD format. Null clears the target date. """ targetDate: TimelessDate } """ Project name sorting options. """ input ProjectNameSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ 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. """ type ProjectNotification implements Entity & Node & Notification { """ 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. """ actor: User """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The bot that caused the notification. """ botActor: ActorBot """ The category of the notification. """ category: NotificationCategory! """ The comment related to the notification. """ comment: Comment """ Related comment ID. Null if the notification is not related to a comment. """ commentId: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The document related to the notification. """ document: Document """ The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent. """ emailedAt: DateTime """ 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. """ externalUserActor: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The parent comment related to the notification, if a notification is a reply comment notification. """ parentComment: Comment """ Related parent comment ID. Null if the notification is not related to a comment. """ parentCommentId: String """ The project related to the notification. """ project: Project! """ Related project ID. """ projectId: String! """ Related project milestone ID. """ projectMilestoneId: String """ The project update related to the notification. """ projectUpdate: ProjectUpdate """ Related project update ID. """ projectUpdateId: String """ Name of the reaction emoji related to the notification. """ reactionEmoji: String """ The time at which the user marked the notification as read. Null if the notification is unread. """ readAt: DateTime """ 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. """ snoozedUntilAt: DateTime """ Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated. """ type: String! """ The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed. """ unsnoozedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The recipient user of this notification. """ user: User! } """ 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. """ type ProjectNotificationSubscription implements Entity & Node & NotificationSubscription { """ Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists. """ active: Boolean! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ 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. """ contextViewType: ContextViewType """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The custom view that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ customView: CustomView """ The customer that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ customer: Customer """ The cycle that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ cycle: Cycle """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Whether initiative update notifications also include updates from sub-initiatives. Applies only when initiative updates are enabled and the workspace supports sub-initiatives. """ includeSubInitiativeUpdates: Boolean! """ The initiative that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ initiative: Initiative """ The issue label that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ label: IssueLabel """ The notification event types that this subscription will deliver to the subscriber. """ notificationSubscriptionTypes: [String!]! """ The project subscribed to. """ project: Project! """ The user who will receive notifications from this subscription. """ subscriber: User! """ The team that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ team: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user that this notification subscription is scoped to, for user-specific view subscriptions. Null if the subscription targets a different entity type. """ user: User """ 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. """ userContextViewType: UserContextViewType } """ The result of a project mutation. """ type ProjectPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The project that was created or updated. """ project: Project """ Whether the operation was successful. """ success: Boolean! } """ Project priority sorting options. """ input ProjectPrioritySort { """ Whether to consider no priority as the highest or lowest priority """ noPriorityFirst: Boolean = false """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A dependency connecting two projects at their start dates, target dates, or milestones. The source and related anchor types define the dependency’s direction and meaning. The relation describes the connection without merging the projects or their issues. """ type ProjectRelation implements Node { """ The source endpoint: start for the project’s start date, end for its target date, or milestone for projectMilestone. """ anchorType: String! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The source project in the dependency relation. """ project: Project! """ The specific milestone within the source project that the relation is anchored to. Null if the relation applies to the project as a whole. """ projectMilestone: ProjectMilestone """ The related endpoint: start for the project’s start date, end for its target date, or milestone for relatedProjectMilestone. """ relatedAnchorType: String! """ The target project in the dependency relation. """ relatedProject: Project! """ 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. """ relatedProjectMilestone: ProjectMilestone """ The relation type. Currently always dependency. """ type: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user who last created or modified the relation. Null if the user has been deleted. """ user: User } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type ProjectRelationConnection { """ The page's results paired with their cursors. """ edges: [ProjectRelationEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [ProjectRelation!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The two projects and anchor points for a new dependency. The projects must be different and editable. When an anchor type is milestone, provide the corresponding milestone UUID. """ input ProjectRelationCreateInput { """ Source endpoint: start, end, or milestone. Use projectMilestoneId for a milestone anchor. """ anchorType: String! """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The identifier of the project that is related to another project. Can be a UUID or project identifier (e.g., 'P-LIN-123'). """ projectId: String! """ UUID of the source milestone when anchorType is milestone. """ projectMilestoneId: String """ Related endpoint: start, end, or milestone. Use relatedProjectMilestoneId for a milestone anchor. """ relatedAnchorType: String! """ The identifier of the related project. Can be a UUID or project identifier (e.g., 'P-LIN-123'). """ relatedProjectId: String! """ UUID of the related milestone when relatedAnchorType is milestone. """ relatedProjectMilestoneId: String """ The relation type. The supported value is dependency. """ type: String! } """ A result and its pagination cursor. """ type ProjectRelationEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: ProjectRelation! } """ The result of a project relation mutation. """ type ProjectRelationPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The project relation that was created or updated. """ projectRelation: ProjectRelation! """ Whether the operation was successful. """ success: Boolean! } """ Changes to an existing project dependency. Omitted fields keep their current values. The resulting projects and anchor points are validated together, so update a milestone reference when changing its anchor. """ input ProjectRelationUpdateInput { """ Source endpoint: start, end, or milestone. Use projectMilestoneId for a milestone anchor. """ anchorType: String """ The identifier of the project that is related to another project. Can be a UUID or project identifier (e.g., 'P-LIN-123'). """ projectId: String """ UUID of the source milestone when anchorType is milestone. Null clears the milestone reference. """ projectMilestoneId: String """ Related endpoint: start, end, or milestone. Use relatedProjectMilestoneId for a milestone anchor. """ relatedAnchorType: String """ The identifier of the related project. Can be a UUID or project identifier (e.g., 'P-LIN-123'). """ relatedProjectId: String """ UUID of the related milestone when relatedAnchorType is milestone. Null clears the milestone reference. """ relatedProjectMilestoneId: String """ The relation type. The supported value is dependency. """ type: String } """ A page of project search results. Read nodes for the matched projects and pageInfo to continue paging. totalCount is the size of the limited candidate set, not an exact workspace-wide match count. """ type ProjectSearchPayload { """ Serialized archived projects on this page and their archived statuses, for Linear’s client. For normal API reads, select the project fields you need from nodes instead. """ archivePayload: ArchiveResponse! """ The page's results paired with their cursors. """ edges: [ProjectSearchResultEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [ProjectSearchResult!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! """ Number of candidates retrieved before filtering and pagination. Search caps candidates, so this is not an exact count of all matching projects. """ totalCount: Float! } """ A project returned by search, with the same fields as Project plus search metadata. The meaning of metadata.score depends on the query’s ordering. """ type ProjectSearchResult implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ Attachments associated with the project. """ attachments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectAttachmentConnection! """ The time at which the project was automatically archived by the auto-pruning process. Null if the project has not been auto-archived. """ autoArchivedAt: DateTime """ The time the project entered a canceled status. Moving to a backlog, planned, started, or completed status clears this value. Null when no cancellation time is recorded. """ canceledAt: DateTime """ The project's color as a HEX string. Used in the UI to visually identify the project. """ color: String! """ Comments associated with the project overview. """ comments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned comments. """ filter: CommentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CommentConnection! """ The time the project entered a completed status. Moving to a backlog, planned, started, or canceled status clears this value. Null when no completion time is recorded. """ completedAt: DateTime """ Weekly completed-issue counts since startedAt, in chronological order. Empty before the first full week. """ completedIssueCountHistory: [Float!]! """ Weekly completed estimate-point totals since startedAt, in chronological order. Empty before the first full week. """ completedScopeHistory: [Float!]! """ The full project overview in Markdown. Null if no overview has been set; description is the separate short summary. """ content: String """ The issue that was converted into this project. Null if the project was not created from an issue. """ convertedFromIssue: Issue """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the project. Null when no user was recorded or the user is no longer available. """ creator: User """ A short plain-text summary of the project. Use content for the longer Markdown overview, and documents for additional project resources. """ description: String! """ The document backing the project overview. Null if no overview has been set. """ documentContent: DocumentContent """ Documents associated with the project. """ documents( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned documents. """ filter: DocumentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): DocumentConnection! """ External links associated with the project. """ externalLinks( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): EntityExternalLinkConnection! """ The authenticated user’s favorite for this project. Null if the user has not favorited it. """ favorite: Favorite """ The resolution of the reminder frequency. """ frequencyResolution: FrequencyResolutionType! """ 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. """ health: ProjectUpdateHealthType """ 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. """ healthUpdatedAt: DateTime """ History records associated with changes to this project. Each record belongs to the project and has its own creation and update times. """ history( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectHistoryConnection! """ The icon of the project. Can be an emoji or a decorative icon type. """ icon: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Weekly started estimate-point totals since startedAt, in chronological order. Empty before the first full week. """ inProgressScopeHistory: [Float!]! """ The associations that include this project in initiatives. Each association identifies the initiative and carries the project’s ordering within it. """ initiativeToProjects( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): InitiativeToProjectConnection! """ Initiatives that include this project. A project can belong to more than one initiative; use initiativeToProjects when you also need the association and its ordering. """ initiatives( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): InitiativeConnection! """ Settings for all integrations associated with that project. """ integrationsSettings: IntegrationsSettings """ Dependencies where this project is the related project. """ inverseRelations( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectRelationConnection! """ Weekly issue-count snapshots since startedAt, excluding triage, canceled, and duplicate issues. Empty before the first full week. """ issueCountHistory: [Float!]! """ Issues associated with the project. """ issues( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueConnection! """ The UUIDs of labels applied to this project. Use labels to read their names and colors. These are project labels, separate from labels applied to individual issues. """ labelIds: [String!]! """ Labels associated with this project. """ labels( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned project labels. """ filter: ProjectLabelFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectLabelConnection! """ The most recently recorded project template. Null if no template is recorded or the template is no longer available. This is a reference to the template, not a snapshot of its contents. """ lastAppliedTemplate: Template """ The most recent status update posted for this project. Null if no updates have been posted. """ lastUpdate: ProjectUpdate """ The user responsible for the project and its status updates. Null if no lead is assigned. """ lead: User """ Users who are members of this project. Project membership is separate from team membership, and the project lead is included among the members. """ members( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned users. """ filter: UserFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Include disabled and suspended accounts. Defaults to false. """ includeDisabled: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): UserConnection! """ score reflects relevance by default, or can contain timestamp milliseconds when orderBy selects createdAt or updatedAt. Compare scores only within the same query and ordering. context is an empty object retained for compatibility. """ metadata: JSONObject! """ The ID of the Microsoft Teams channel connected to the project, if any. """ microsoftTeamsChannelId: String """ The name of the project. """ name: String! """ Customer needs associated with the project. """ needs( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned needs. """ filter: CustomerNeedFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CustomerNeedConnection! """ The priority of the project. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. """ priority: Int! """ The display label for priority: No priority, Urgent, High, Medium, or Low. Use priority for the corresponding numeric value. """ priorityLabel: String! """ The sort order for the project within the workspace when ordered by priority. """ prioritySortOrder: Float! """ Completion fraction from 0 to 1. Started issues contribute 25% of their estimates; issue counts are used when total estimates are zero. Excludes triage, canceled, and duplicate issues. Returns 0 when no issues remain in the calculation, and 0.999 instead of 1 when unfinished issues with zero estimates remain. """ progress: Float! """ Milestones within this project. Use their sortOrder to understand their planned sequence and their progress to track the assigned issues. """ projectMilestones( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned milestones. """ filter: ProjectMilestoneFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectMilestoneConnection! """ The time until which update reminders are paused. Null means no project-specific pause is set. """ projectUpdateRemindersPausedUntilAt: DateTime """ Published status updates for this project. Each update contains a message, reported health, and a snapshot of progress at publication. """ projectUpdates( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectUpdateConnection! """ Dependencies where this project is the source. Anchor types determine the direction of the dependency. """ relations( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectRelationConnection! """ The number of resources associated with the project, including documents, external links, and attachments. """ resourceCount: Int! """ Total estimate points, excluding triage, canceled, and duplicate issues. Archived projects use their last stored scope snapshot. """ scope: Float! """ Weekly estimate-point totals since startedAt, excluding triage, canceled, and duplicate issues. Empty before the first full week. """ scopeHistory: [Float!]! """ The ID of the Slack channel connected to the project, if any. """ slackChannelId: String """ Whether to send new issue comment notifications to Slack. """ slackIssueComments: Boolean! @deprecated(reason: "No longer in use") """ Whether to send new issue status updates to Slack. """ slackIssueStatuses: Boolean! @deprecated(reason: "No longer is use") """ Whether to send new issue notifications to Slack. """ slackNewIssue: Boolean! @deprecated(reason: "No longer in use") """ The project's unique URL slug, used to construct human-readable URLs. """ slugId: String! """ The sort order for the project within the workspace. Used for manual ordering in list views. """ sortOrder: Float! """ The estimated start date of the project. Null if no start date is set. """ startDate: TimelessDate """ The precision of startDate: month, quarter, halfYear, or year. Null means an exact date or no start date. """ startDateResolution: DateResolutionType """ The time the project first entered a started status. Moving back to backlog or planned keeps this time and the progress history. Null if the project has not been started. """ startedAt: DateTime """ [DEPRECATED] The type of the state. """ state: String! @deprecated(reason: "Use project.status instead") """ The current project status. Its type places the project in a lifecycle stage, such as planned, started, or completed. Changing the status also updates the corresponding lifecycle timestamps. """ status: ProjectStatus! """ The external services the project is synced with. """ syncedWith: [ExternalEntityInfo!] """ The estimated completion date of the project. Null if no target date is set. """ targetDate: TimelessDate """ The precision of targetDate: month, quarter, halfYear, or year. Null means an exact date or no target date. """ targetDateResolution: DateResolutionType """ Teams associated with this project that you can access. Issues in the project can belong to any of its teams; inaccessible private teams are not included in this result. """ teams( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned teams. """ filter: TeamFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): TeamConnection! """ Whether the project is in the trash. Trashed projects are also archived and can be restored with projectUnarchive while they remain available. Null means the project is not trashed. """ trashed: Boolean """ The frequency at which to prompt for updates. When not set, reminders are inherited from workspace. """ updateReminderFrequency: Float """ The n-weekly frequency at which to prompt for updates. When not set, reminders are inherited from workspace. """ updateReminderFrequencyInWeeks: Float """ The day at which to prompt for updates. """ updateRemindersDay: Day """ The hour at which to prompt for updates. """ updateRemindersHour: Float """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The project’s URL in Linear. """ url: String! } """ A result and its pagination cursor. """ type ProjectSearchResultEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: ProjectSearchResult! } """ Issue project sorting options. """ input ProjectSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Project sorting options. """ input ProjectSortInput { """ Sort by project creation date """ createdAt: ProjectCreatedAtSort """ Sort by project health status. """ health: ProjectHealthSort """ Sort by project lead name. """ lead: ProjectLeadSort """ Sort by manual order """ manual: ProjectManualSort """ Sort by project name """ name: ProjectNameSort """ Sort by project priority """ priority: ProjectPrioritySort """ Sort by project start date """ startDate: StartDateSort """ Sort by project status """ status: ProjectStatusSort """ Sort by project target date """ targetDate: TargetDateSort """ Sort by project update date """ updatedAt: ProjectUpdatedAtSort } """ A named stage in a project’s lifecycle. Each status belongs to a category such as planned or started, with its own name, color, and position. Projects use statuses available in their lead team’s scope. """ type ProjectStatus implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The color of the status as a HEX string, used for display in the UI. """ color: String! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ An explanation of when to use the status. Null if none has been set. """ description: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Whether projects are expected to remain in this status without a planned end. """ indefinite: Boolean! """ The name of the status. """ name: String! """ The position of the status within its type group in the workspace's project flow. Used for ordering statuses of the same type. """ position: Float! """ The lifecycle category: backlog, planned, started, completed, or canceled. The paused value is deprecated. """ type: ProjectStatusType! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ The result of archiving or restoring a resource. """ type ProjectStatusArchivePayload implements ArchivePayload { """ The resource after the operation, when returned. This can be null when the mutation does not return a resource, including after deletion. Check `success` for the operation's result. """ entity: ProjectStatus """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Certain properties of a project status. """ type ProjectStatusChildWebhookPayload { """ The color of the project status. """ color: String! """ The ID of the project status. """ id: String! """ The name of the project status. """ name: String! """ The type of the project status. """ type: String! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type ProjectStatusConnection { """ The page's results paired with their cursors. """ edges: [ProjectStatusEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [ProjectStatus!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The name, color, lifecycle category, and position for a new project status. Use the category to define its lifecycle behavior and the name to describe the stage in your workflow. """ input ProjectStatusCreateInput { """ The UI color of the status as a HEX string. """ color: String! """ Description of the status. """ description: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ Whether or not a project can be in this status indefinitely. """ indefinite: Boolean = false """ The name of the status. """ name: String! """ Order within the status’s type group. Lower values appear first. """ position: Float! """ The lifecycle category: backlog, planned, started, completed, or canceled. The deprecated paused type cannot be created. """ type: ProjectStatusType! } """ A result and its pagination cursor. """ type ProjectStatusEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: ProjectStatus! } """ Filters project statuses by name, lifecycle type, team, or projects using the status. Supplied conditions must match together; use and and or to combine nested filters. """ input ProjectStatusFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [ProjectStatusFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Comparator for the project status description. """ description: StringComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for the project status name. """ name: StringComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [ProjectStatusFilter!] """ Comparator for the project status position. """ position: NumberComparator """ Filters that the project status projects must satisfy. """ projects: ProjectCollectionFilter """ Filters that the project status's team must satisfy. Use `{ null: true }` to filter workspace-level statuses. """ team: NullableTeamFilter """ The lifecycle category: backlog, planned, started, paused, completed, or canceled. This is separate from the status name. """ type: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The result of a project status mutation. """ type ProjectStatusPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The project status that was created or updated. """ status: ProjectStatus! """ Whether the operation was successful. """ success: Boolean! } """ Project status sorting options. """ input ProjectStatusSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A type of project status. """ enum ProjectStatusType { backlog canceled completed paused planned started } """ Changes to an existing project status. Omitted fields keep their current values. Changing a shared status affects how projects using it are presented and classified. """ input ProjectStatusUpdateInput { """ The UI color of the status as a HEX string. """ color: String """ Description of the status. """ description: String """ Whether or not a project can be in this status indefinitely. """ indefinite: Boolean """ The name of the status. """ name: String """ Order within the status’s type group. Lower values appear first. """ position: Float """ The lifecycle category: backlog, planned, started, completed, or canceled. The deprecated paused type cannot be assigned. """ type: ProjectStatusType } """ Different tabs available inside a project. """ enum ProjectTab { customers documents issues loops updates } """ A published status report for a project. It combines a Markdown message and reported health with a snapshot of project details and issue progress, so readers can compare the project with its previous update. """ type ProjectUpdate implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The update content in markdown format. """ body: String! """ Number of comments associated with the project update. """ commentCount: Int! """ Comments associated with the project update. """ comments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned comments. """ filter: CommentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CommentConnection! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Changes in project details and issue progress between this update’s snapshot and the previous update. This describes the change at publication, rather than changes since you last fetched the project. Null if the comparison snapshots are unavailable. """ diff: JSONObject """ Changes in project details and progress since the previous update, in Markdown. Null if comparison data is unavailable. """ diffMarkdown: String """ The time the update was edited. """ editedAt: DateTime """ The health of the project at the time this update was posted. Possible values are onTrack, atRisk, or offTrack. """ health: ProjectUpdateHealthType! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Whether the diff between this update and the previous one should be hidden in the UI. """ isDiffHidden: Boolean! """ Whether the health reported by this update is considered outdated. This depends on the update’s age and the project’s reminder schedule, rather than whether the update has been read. """ isStale: Boolean! """ The project that this status update was posted to. """ project: Project! """ Emoji reaction summary, grouped by emoji type. """ reactionData: JSONObject! """ Reactions associated with the project update. """ reactions: [Reaction!]! """ A short AI-generated summary of the project update. Null if no short summary is available. """ shortSummary: String """ The update's unique URL slug. """ slugId: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The URL to the project update. """ url: String! """ The user who wrote the update. """ user: User! } """ The result of archiving or restoring a resource. """ type ProjectUpdateArchivePayload implements ArchivePayload { """ The resource after the operation, when returned. This can be null when the mutation does not return a resource, including after deletion. Check `success` for the operation's result. """ entity: ProjectUpdate """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Certain properties of a project update. """ type ProjectUpdateChildWebhookPayload { """ The body of the project update. """ body: String! """ The ID of the project update. """ id: String! """ The project that the project update belongs to. """ project: ProjectChildWebhookPayload! """ The ID of the user who wrote the project update. """ userId: String! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type ProjectUpdateConnection { """ The page's results paired with their cursors. """ edges: [ProjectUpdateEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [ProjectUpdate!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The project, message, and optional health for a new status update. The current user becomes the author, and current project progress is captured automatically. Provide body when using the public API. """ input ProjectUpdateCreateInput { """ Update body in Markdown. Required when creating an update through the public API. """ body: String """ The project health reported by this update: onTrack, atRisk, or offTrack. Defaults to onTrack when omitted; publishing the update refreshes the project’s overall health. """ health: ProjectUpdateHealthType """ The identifier. If none is provided, the backend will generate one. """ id: String """ Whether the diff between the current update and the previous one should be hidden. """ isDiffHidden: Boolean """ The project to associate the project update with. Can be a UUID or project identifier (e.g., 'P-LIN-123'). """ projectId: String! } """ A result and its pagination cursor. """ type ProjectUpdateEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: ProjectUpdate! } """ Filters project updates by author, project, or reactions. Supplied conditions must match together; use and and or to combine nested filters. """ input ProjectUpdateFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [ProjectUpdateFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [ProjectUpdateFilter!] """ Filters that the project update project must satisfy. """ project: ProjectFilter """ Filters that the project updates reactions must satisfy. """ reactions: ReactionCollectionFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator """ Filters that the project update creator must satisfy. """ user: UserFilter } """ The health type when the project update is created. """ enum ProjectUpdateHealthType { atRisk offTrack onTrack } """ Changes to a project. Omit a field to keep its current value. Lists replace the corresponding selections unless their description says otherwise; null only clears fields that explicitly support it. """ input ProjectUpdateInput { """ The time at which the project was canceled. """ canceledAt: DateTime """ The color of the project. """ color: String """ The time at which the project was completed. """ completedAt: DateTime """ Replacement project overview in Markdown. Empty strings, null, and omission leave the existing content unchanged. """ content: String """ The ID of the issue from which that project is created. """ convertedFromIssueId: String """ A short plain-text summary. Use an empty string to clear it; null is not accepted. """ description: String """ The unit of updateReminderFrequency: daily or weekly. """ frequencyResolution: FrequencyResolutionType """ The icon of the project. """ icon: String """ The replacement list of project label UUIDs. Use [] to remove all labels, or omit the field to keep them. Use projectAddLabel or projectRemoveLabel when you only need to change one label; team and label-group rules apply to both approaches. """ labelIds: [String!] """ Records the last applied template UUID without applying its contents. """ lastAppliedTemplateId: String """ UUID of the project lead. Pass null to remove the lead. Application users cannot be leads; a new lead is added as a member. """ leadId: String """ The replacement list of project member UUIDs. Use [] to remove all members except the project lead, who remains a member. Application users cannot be added; omit the field to keep the current members. """ memberIds: [String!] """ The name of the project. """ name: String """ The priority of the project. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. """ priority: Int """ The sort order for the project within shared views, when ordered by priority. """ prioritySortOrder: Float """ The time until which project update reminders are paused. Set null to remove the project-specific pause; reminders still follow the configured schedule. Omit to leave the pause unchanged. """ projectUpdateRemindersPausedUntilAt: DateTime """ Whether to send new issue comment notifications to Slack. """ slackIssueComments: Boolean """ Whether to send issue status update notifications to Slack. """ slackIssueStatuses: Boolean """ Whether to send new issue notifications to Slack. """ slackNewIssue: Boolean """ Position in shared project views, in ascending order. Pass 0 to append; collisions are adjusted. """ sortOrder: Float """ The planned start date in YYYY-MM-DD format. Null clears the date. """ startDate: TimelessDate """ The precision of startDate: month, quarter, halfYear, or year. Null uses an exact date. """ startDateResolution: DateResolutionType """ The UUID of an active project status available to the project’s lead team. Moving between status types updates startedAt, completedAt, or canceledAt as appropriate. Omit to keep the current status. """ statusId: String """ The planned completion date in YYYY-MM-DD format. Null clears the date. """ targetDate: TimelessDate """ The precision of targetDate: month, quarter, halfYear, or year. Null uses an exact date. """ targetDateResolution: DateResolutionType """ The replacement list of team UUIDs. Teams you cannot access are preserved, so omitting a private team does not remove it. At least one team must remain, and a team with active project issues cannot be removed until those issues are moved. """ teamIds: [String!] """ The stored trash flag. This field does not archive or restore the project. Use projectDelete to move it to the trash and projectUnarchive to restore it. """ trashed: Boolean """ The interval between update reminders, in the unit given by frequencyResolution. Null inherits the workspace setting; omit to leave unchanged. """ updateReminderFrequency: Float """ The interval between update reminders in weeks. Null inherits the workspace setting; omit to leave unchanged. """ updateReminderFrequencyInWeeks: Float """ The day of the week on which to prompt for project updates. """ updateRemindersDay: Day """ The hour of the day (0-23) at which to prompt for project updates. """ updateRemindersHour: Int } """ The result of a project update mutation. """ type ProjectUpdatePayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The project update that was created or updated. """ projectUpdate: ProjectUpdate! """ Whether the operation was successful. """ success: Boolean! } """ The frequency at which to send project update reminders. """ enum ProjectUpdateReminderFrequency { month never twoWeeks week } """ The result of a project update reminder mutation. """ type ProjectUpdateReminderPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Changes to a published project update. Omitted fields keep their current values. Only the author or a user with permission to manage workspace entities can edit the update. """ input ProjectUpdateUpdateInput { """ Replacement update body in Markdown. Pass an empty string to clear it. """ body: String """ The health of the project at the time of the update. """ health: ProjectUpdateHealthType } """ Payload for a project update webhook. """ type ProjectUpdateWebhookPayload { """ The time at which the entity was archived. """ archivedAt: String """ The body of the project update. """ body: String! """ The body data of the project update. """ bodyData: String! """ The time at which the entity was created. """ createdAt: String! """ The diff between the current update and the previous one, formatted as markdown. """ diffMarkdown: String """ The edited at timestamp of the project update. """ editedAt: String! """ The health of the project update. """ health: String! """ The ID of the entity. """ id: String! """ The project that the project update belongs to. """ project: ProjectChildWebhookPayload! """ The project id of the project update. """ projectId: String! """ The reaction data for this project update. """ reactionData: JSONObject! """ The slug id of the project update. """ slugId: String! """ The time at which the entity was updated. """ updatedAt: String! """ The URL of the project update. """ url: String """ The user who wrote the project update. """ user: UserChildWebhookPayload! """ The user id of the project update. """ userId: String! } """ Project update date sorting options. """ input ProjectUpdatedAtSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Filters a related collection of project updates. Use some or every to test its members and length to test its size, for example length: { eq: 0 } for an empty collection. Direct property filters act as some only when no collection clause is supplied. """ input ProjectUpdatesCollectionFilter { """ All of these collection conditions must match. Each can test a different member of the collection. """ and: [ProjectUpdatesCollectionFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that needs to be matched by all updates. """ every: ProjectUpdatesFilter """ Comparator for the project update health. """ health: StringComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ The number of related objects, before applying some or every. Use { eq: 0 } to find an empty collection. """ length: NumberComparator """ At least one of these collection conditions must match. """ or: [ProjectUpdatesCollectionFilter!] """ Filters that needs to be matched by some updates. """ some: ProjectUpdatesFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Filters project updates by health, ID, or creation and update timestamps. Supplied conditions must match together; use and and or to combine nested filters. """ input ProjectUpdatesFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [ProjectUpdatesFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Comparator for the project update health. """ health: StringComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [ProjectUpdatesFilter!] """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Payload for a project webhook. """ type ProjectWebhookPayload { """ The time at which the entity was archived. """ archivedAt: String """ The auto archived at timestamp of the project. """ autoArchivedAt: String """ The canceled at timestamp of the project. """ canceledAt: String """ The project's color. """ color: String! """ The completed at timestamp of the project. """ completedAt: String """ The number of completed issues in the project after each week. """ completedIssueCountHistory: [Float!]! """ The number of completed estimation points after each week. """ completedScopeHistory: [Float!]! """ The content of the project. """ content: String """ The ID of the issue that was converted to the project. """ convertedFromIssueId: String """ The time at which the entity was created. """ createdAt: String! """ The ID of the user who created the project. """ creatorId: String """ The project's description. """ description: String! """ The document content ID of the project. """ documentContentId: String """ The health of the project. """ health: String """ The time at which the project health was updated. """ healthUpdatedAt: String """ The icon of the project. """ icon: String """ The ID of the entity. """ id: String! """ The human-readable identifier of the project. """ identifier: String """ The number of in progress estimation points after each week. """ inProgressScopeHistory: [Float!]! """ The initiatives associated with the project. """ initiatives: [InitiativeChildWebhookPayload!] """ The total number of issues in the project after each week. """ issueCountHistory: [Float!]! """ IDs of the labels associated with this project. """ labelIds: [String!]! """ The ID of the last template that was applied to the project. """ lastAppliedTemplateId: String """ The ID of the last update posted for this project. """ lastUpdateId: String """ The project lead. """ lead: UserChildWebhookPayload """ The ID of the project lead. """ leadId: String """ IDs of the members of the project. """ memberIds: [String!]! """ The milestones associated with the project. """ milestones: [ProjectMilestoneChildWebhookPayload!] """ The project's name. """ name: String! """ Previous identifiers of the project. """ previousIdentifiers: [String!] """ The priority of the project. 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low. """ priority: Float! """ The sort order for the project within the organization, when ordered by priority. """ prioritySortOrder: Float! """ The time at which the project update reminders were paused until. """ projectUpdateRemindersPausedUntilAt: String """ The total number of estimation points after each week. """ scopeHistory: [Float!]! """ The project's unique URL slug. """ slugId: String! """ The sort order for the project within the organization. """ sortOrder: Float! """ The estimated start date of the project. """ startDate: String """ The resolution of the project's estimated start date. """ startDateResolution: String """ The time at which the project was moved into started state. """ startedAt: String """ The project status. """ status: ProjectStatusChildWebhookPayload """ The ID of the project status. """ statusId: String! """ The external services the project is synced with. """ syncedWith: JSONObject """ The target date of the project. """ targetDate: String """ The resolution of the project's target date. """ targetDateResolution: String """ IDs of the teams associated with this project. """ teamIds: [String!]! """ The trashed status of the project. """ trashed: Boolean """ The time at which the entity was updated. """ updatedAt: String! """ The URL of the project. """ url: String! } """ A comment on a pull request, synced bidirectionally with the hosting provider (e.g., GitHub). Comments can be top-level or threaded replies, and may be associated with specific code locations via an anchor. Comments belonging to a pending review are not visible to other users or synced to the provider until the review is submitted. """ type PullRequestComment implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The comment content as a ProseMirror document. """ bodyData: JSONObject! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The review decision this comment was submitted with (approved, changes requested, commented, or dismissed). Set on the summary comment of a submitted review. Null for all other comments. """ decision: PullRequestReviewerDecision """ The time at which the comment was edited. Null if never edited. """ editedAt: DateTime """ Provider-specific identifier of the review this comment was submitted with (e.g., the GitHub review ID). All comments from one review submission share the same value. Null if the comment was not part of a provider review, or the identifier has not synced from the provider yet. """ externalReviewId: String """ Provider-specific thread identifier. Null if the provider did not provide a thread identifier. """ externalThreadId: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Identifier of the review this comment was created in when composed in Linear. Comments submitted together keep the same value after submission. Null if the comment was not created through a review composed in Linear. """ pendingReviewId: String """ Emoji reaction summary for this pull request comment, grouped by emoji type. Each entry contains the emoji name, count, and the IDs of users who reacted. """ reactionData: JSONObject! """ The time at which the top-level thread was resolved. Null if unresolved. """ resolvedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ The review state of a single file in a pull request, tracking whether the reviewer has reviewed it and whether it has changed since the last review. """ type PullRequestFileReview { """ The path of the file. """ path: String! """ The timestamp when the file was marked as reviewed. Null if the file has not been reviewed. """ reviewedAt: DateTime """ The commit SHA at which the file was last marked as reviewed. Null if the file has not been reviewed. """ reviewedAtSha: String """ The review state of the file (e.g., 'reviewed', 'changedAfterReview', or 'unreviewed'). """ state: String! } """ A notification related to a pull request, such as review requests, approvals, comments, check failures, or merge queue events. """ type PullRequestNotification implements Entity & Node & Notification { """ 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. """ actor: User """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The bot that caused the notification. """ botActor: ActorBot """ The category of the notification. """ category: NotificationCategory! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent. """ emailedAt: DateTime """ 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. """ externalUserActor: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Related pull request comment ID. Null if the notification is not related to a pull request comment. """ pullRequestCommentId: String """ Related pull request. """ pullRequestId: String! """ The time at which the user marked the notification as read. Null if the notification is unread. """ readAt: DateTime """ 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. """ snoozedUntilAt: DateTime """ Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated. """ type: String! """ The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed. """ unsnoozedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The recipient user of this notification. """ user: User! } """ A pull request review that can contain multiple comments. A pending review collects comments locally before being submitted to the hosting provider as a batch. Only one pending (non-submitted) review is allowed per user per pull request. Once submitted, the review's decision and comments are synced to the external provider. """ type PullRequestPendingReview implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The review decision (e.g., approved, changes requested, or commented). Set when the review is submitted. Null while the review is still pending. """ decision: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Files that have been individually reviewed by this reviewer. Each entry tracks the file path, review state, and the commit SHA at which it was reviewed. Files may be marked as 'changed after review' when new commits modify previously reviewed files. """ reviewedFiles: [PullRequestFileReview!]! """ The timestamp when the review was submitted to the hosting provider. Null if the review is still pending and has not yet been submitted. """ submittedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ Identifies a pull or merge request whose closing or contributing issues should be included in the release. Supplying a reference asserts that it shipped; sync does not wait for the imported pull request’s merge status to catch up. """ input PullRequestReferenceInput { """ The pull request number. """ number: Int! """ The name of the repository. """ repositoryName: String! """ The owner of the repository (e.g., organization or user name). """ repositoryOwner: String! } """ [ALPHA] The decision made by a pull request reviewer. """ enum PullRequestReviewerDecision { approved changesRequested commented dismissed pending } """ User-specific pull request state. """ type PullRequestUserState implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A browser or mobile device registered to receive push notifications for a user. Keep its ID if you need to unregister it with pushSubscriptionDelete. Registration identifies a delivery destination; the user's notification preferences and delivery state still determine which notifications arrive. """ type PushSubscription implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ Input for creating a push subscription to receive push notifications on a device or browser. """ input PushSubscriptionCreateInput { """ Subscription data encoded as a JSON string. For web push, provide endpoint, keys.auth, keys.p256dh, and expirationTime; the endpoint must be a URL, both keys must be nonempty strings, and expirationTime may be null. Mobile subscriptions provide deviceToken and bundleIdentifier for the selected push service. """ data: String! """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The type of push subscription: 'web' for browser-based Web Push API, 'apple' for Apple Push Notification service (or 'appleDevelopment' for sandbox), or 'firebase' for Firebase Cloud Messaging (Android). """ type: PushSubscriptionType = web } """ Return type for push subscription mutations. """ type PushSubscriptionPayload { """ The push subscription that was created or deleted. """ entity: PushSubscription! """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Return type for the push subscription test query. """ type PushSubscriptionTestPayload { """ Whether the operation was successful. """ success: Boolean! } """ The different push subscription types. """ enum PushSubscriptionType { apple appleDevelopment firebase web } type Query { _dummy: String! """ All teams whose settings the user can administer. This includes teams the user can change settings for, but whose issues they may not have direct access to. This differs from the `teams` query which returns teams based on issue access. """ administrableTeams( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned teams. """ filter: TeamFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): TeamConnection! """ Accessible agent activities, with filters and cursor-based pagination. """ agentActivities( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned agent activities. """ filter: AgentActivityFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): AgentActivityConnection! """ Retrieves an unarchived agent activity by UUID. """ agentActivity( """ The identifier of the agent activity to retrieve. """ id: String! ): AgentActivity! """ Retrieves an unarchived agent session by UUID or URL slug. """ agentSession( """ UUID or URL slug of the agent session. """ id: String! ): AgentSession! """ Accessible agent sessions, with cursor-based pagination. """ agentSessions( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): AgentSessionConnection! """ Retrieves an accessible, unarchived agent skill by UUID. """ agentSkill( """ The identifier of the agent skill to retrieve. """ id: String! ): AgentSkill! """ Returns the skills the caller can access, including personal skills and shared team or workspace skills. Use filter to narrow the result and the connection arguments to paginate. Inherited team skills can appear as separate records; their inheritance fields identify the source. """ agentSkills( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned skills. """ filter: AgentSkillFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): AgentSkillConnection! """ Looks up an OAuth application's name, developer, and branding using its OAuth clientId. Use this to identify an application before authorization. Private applications can be read only from their owning workspace; this lookup does not grant or install the application. """ applicationInfo( """ The client ID of the application. """ clientId: String! ): Application! """ GitHub connections archived within the last 30 days, newest first. Connections dismissed from the reconnect list are omitted. """ archivedIntegrations: [ArchivedIntegrationPayload!]! """ An attachment by UUID or URL. A URL returns one matching attachment; use attachmentsForURL to retrieve all matches. """ attachment( """ The attachment UUID or URL. A URL returns one matching attachment. """ id: String! ): Attachment! """ The issue linked to an attachment. Deprecated; use attachmentsForURL and select each attachment’s issue. """ attachmentIssue( """ `id` of the attachment for which you'll want to get the issue for. [Deprecated] `url` as the `id` parameter. """ id: String! ): Issue! @deprecated( reason: "Will be removed in near future, please use `attachmentsForURL` to get attachments and their issues instead." ) """ Lists distinct sources on accessible, non-archived issue attachments. API and OAuth attachment sources are grouped by URL domain; other sources are grouped by type. Each group includes the oldest attachment's source metadata. Results may be cached for up to one hour. """ attachmentSources( """ (optional) if provided will only return attachment sources for the given team. """ teamId: String ): AttachmentSourcesPayload! """ Issue attachments the caller can access, with cursor pagination. Use attachmentsForURL to look up a resource URL. """ attachments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned attachments. """ filter: AttachmentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): AttachmentConnection! """ Finds the attachments for a resource URL across issues you can access. A URL can appear on several issues, so use this connection and select each attachment’s issue to find all linked issues. """ attachmentsForURL( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ The attachment URL. """ url: String! ): AttachmentConnection! """ Lists recorded events from the workspace audit log, such as sign-ins, permission changes, and exports. Filter by action type, actor, request details, or time to find events of interest. Requires audit-log access; event metadata depends on the action and may outlive the user or resource it describes. """ auditEntries( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned audit entries. """ filter: AuditEntryFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): AuditEntryConnection! """ Lists supported audit action identifiers and a description of each action. Use the returned type values to interpret AuditEntry.type or filter auditEntries. Requires permission to view the workspace audit log. """ auditEntryTypes: [AuditEntryType!]! """ Lists active browser, desktop, and mobile sign-in sessions for the authenticated account. isCurrentSession identifies the session making this request. Use a returned session ID with logoutSession to revoke a specific session. Requires session JWT authentication; API keys and OAuth access tokens do not provide this session list. """ authenticationSessions: [AuthenticationSessionResponse!]! """ Lists the signed-in account's workspace access. users contains memberships available with the current sign-in method; availableOrganizations contains workspaces the account may join. lockedUsers and lockedOrganizations identify workspaces that require another sign-in method, such as SAML. Each workspace membership has a different user ID even when it belongs to the same account. """ availableUsers: AuthResolverResponse! """ A comment by UUID or URL hash. Returns an error if no accessible comment matches. """ comment( """ Comment hash from a Linear comment URL. Supply either hash or id. """ hash: String """ Comment UUID. Supply either id or hash. """ id: String ): Comment! """ All comments the user has access to in the workspace. """ comments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned comments. """ filter: CommentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CommentConnection! """ One specific custom view, looked up by ID or slug. """ customView( """ The identifier of the custom view to retrieve. """ id: String! ): CustomView! """ Whether a custom view has active notification subscribers other than the current user. Useful for warning before deleting a shared view. """ customViewHasSubscribers( """ The identifier of the custom view. """ id: String! ): CustomViewHasSubscribersPayload! """ All custom views accessible to the user, including personal views and shared workspace views. Excludes views scoped to a specific project or initiative. """ customViews( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned custom views. """ filter: CustomViewFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned custom views. """ sort: [CustomViewSortInput!] ): CustomViewConnection! """ Retrieves a single customer by ID or slug. """ customer( """ The identifier or slug of the customer to retrieve. """ id: String! ): Customer! """ Retrieves a single customer need by ID or hash. """ customerNeed( """ The hash prefix of the customer need to retrieve (minimum 8 characters). Cannot be used together with id. """ hash: String """ The UUID of the customer need to retrieve. Cannot be used together with hash. """ id: String ): CustomerNeed! """ All customer needs in the workspace, with optional filtering. """ customerNeeds( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned customer needs. """ filter: CustomerNeedFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CustomerNeedConnection! """ One specific customer status. """ customerStatus( """ The identifier of the customer status to retrieve. """ id: String! ): CustomerStatus! """ All customer statuses defined in the workspace. """ customerStatuses( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CustomerStatusConnection! """ One specific customer tier. """ customerTier( """ The identifier of the customer tier to retrieve. """ id: String! ): CustomerTier! """ All customer tiers defined in the workspace. """ customerTiers( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CustomerTierConnection! """ All customers in the workspace, with optional filtering and sorting. """ customers( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned customers. """ filter: CustomerFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort criteria for the returned customers. Up to 3 sort fields can be specified. """ sorts: [CustomerSortInput!] ): CustomerConnection! """ Finds a cycle by its UUID or team-and-number identifier, such as ENG°12, including archived cycles. Use cycles with a team filter to discover a team’s cycles. """ cycle( """ The cycle’s UUID or team-and-number identifier, such as ENG°12. """ id: String! ): Cycle! """ All cycles accessible to the user. """ cycles( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned cycles. """ filter: CycleFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CycleConnection! """ Looks up license, publication time, and package-wide weekly downloads for up to 500 exact package versions. Currently supports the public npm registry. Results preserve request order, but missing versions, invalid package names, and failed registry lookups are omitted, so match by name and version rather than array index. Version facts and download counts are cached and may not reflect the latest registry changes. """ dependencyPackageMetadata( """ Packages to look up, in response order. Maximum 500. """ packages: [DependencyPackageInput!]! ): [DependencyPackageMetadataResult!]! """ Finds a document by UUID or the short identifier used in its URL. Archived documents can also be returned if you still have access. """ document( """ The identifier or slug of the document to retrieve. """ id: String! ): Document! """ Lists saved-version metadata for a DocumentContent UUID, newest first. Use the content record’s ID, such as Document.documentContentId, rather than the enclosing document’s UUID. The public result includes capture times and contributors, not historical body content. """ documentContentHistory( """ The identifier of the document content to retrieve history for. """ id: String! ): DocumentContentHistoryPayload! """ Lists documents you can access, with filters and cursor pagination. Archived documents are excluded unless includeArchived is true; access still follows each document’s location and sharing settings. """ documents( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned documents. """ filter: DocumentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned documents. """ sort: [DocumentSortInput!] ): DocumentConnection! """ An accessible intake address by ID, including archived addresses. """ emailIntakeAddress( """ The UUID of the intake address. """ id: String! ): EmailIntakeAddress! """ Email intake addresses accessible to the user in the workspace. """ emailIntakeAddresses( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): EmailIntakeAddressConnection! """ Finds a custom emoji by UUID or exact name. UUID lookup can return archived records, while name lookup returns an active emoji. Use emojis to list the workspace’s custom emoji. """ emoji( """ The identifier or the name of the emoji to retrieve. """ id: String! ): Emoji! """ All custom emojis in the workspace. """ emojis( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned emojis. """ filter: EmojiFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned emojis. """ sort: [EmojiSortInput!] ): EmojiConnection! """ Retrieves a single entity external link by its identifier. """ entityExternalLink( """ The identifier of the entity external link to retrieve. """ id: String! ): EntityExternalLink! """ Retrieves an external user by its Linear UUID, including archived records. Use the ExternalUser ID recorded on Linear content, not the person's ID in Slack, GitHub, or another external service. """ externalUser( """ The identifier of the external user to retrieve. """ id: String! ): ExternalUser! """ External users and bots recorded by integrations in the workspace, with cursor-based pagination. """ externalUsers( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ExternalUserConnection! """ A specific favorite by ID. """ favorite( """ The UUID of the favorite. """ id: String! ): Favorite! """ The authenticated user's favorites. Returns all bookmarked items that appear in the user's sidebar. """ favorites( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): FavoriteConnection! """ The authenticated user’s visible inbox, excluding archived and snoozed notifications. Returns one notification per group of related activity. """ inboxNotifications( """ The cursor after which to return inbox notification stacks. """ after: String """ The maximum number of inbox notification stacks to return. Defaults to 50. """ first: Int """ Whether to return only unread inbox notification stacks. """ unreadOnly: Boolean ): NotificationConnection! """ Returns an initiative you can access by UUID, URL slug, or human-readable initiative identifier. Archived initiatives can also be retrieved. """ initiative( """ The initiative UUID, slug ID, or human-readable identifier. """ id: String! ): Initiative! """ Suggests filters for an initiative view based on a text prompt. """ initiativeFilterSuggestion( """ The text prompt to generate a filter suggestion from. """ prompt: String! """ [Internal] The ID of the team if filtering a team view. """ teamId: String ): InitiativeFilterSuggestionPayload! """ Returns a single initiative label by its identifier. """ initiativeLabel( """ The UUID of the initiative label. """ id: String! ): InitiativeLabel! """ Returns all initiative labels in the workspace, with optional filtering. """ initiativeLabels( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned initiative labels. """ filter: InitiativeLabelFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): InitiativeLabelConnection! """ Returns a single initiative relation by its identifier. """ initiativeRelation( """ The UUID of the initiative relation. """ id: String! ): InitiativeRelation! """ Returns all initiative parent-child relations in the workspace. """ initiativeRelations( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): InitiativeRelationConnection! """ Returns a single initiative-to-project association by its identifier. """ initiativeToProject( """ The UUID of the initiative-to-project link. """ id: String! ): InitiativeToProject! """ Returns all initiative-to-project associations in the workspace. """ initiativeToProjects( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): InitiativeToProjectConnection! """ Returns a single initiative update by its identifier. """ initiativeUpdate( """ The identifier of the initiative update to retrieve. """ id: String! ): InitiativeUpdate! """ Returns all initiative status updates in the workspace, with optional filtering. """ initiativeUpdates( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned initiative updates. """ filter: InitiativeUpdateFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): InitiativeUpdateConnection! """ Returns initiatives visible to you in the workspace, with optional filtering and sorting. Initiative access follows its lead team when one is assigned. """ initiatives( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned initiatives. """ filter: InitiativeFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned initiatives. """ sort: [InitiativeSortInput!] ): InitiativeConnection! """ Retrieves an integration by UUID, including archived integrations. """ integration( """ The identifier of the integration to retrieve. """ id: String! ): Integration! """ Checks whether an active integration has every requested OAuth scope recorded on its connection. Use missingScopes to decide whether to request another authorization grant. This does not contact the provider or verify that the current token still works. """ integrationHasScopes( """ The integration ID. """ integrationId: String! """ Required scopes. """ scopes: [String!]! ): IntegrationHasScopesPayload! """ Retrieves a single integration template connection by its identifier. """ integrationTemplate( """ The identifier of the integration template to retrieve. """ id: String! ): IntegrationTemplate! """ All integration template connections for the workspace, linking templates to integrations. """ integrationTemplates( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IntegrationTemplateConnection! """ Integrations accessible to the caller, with cursor-based pagination. """ integrations( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IntegrationConnection! """ Retrieves a specific integration settings configuration by its identifier. """ integrationsSettings( """ The identifier of the integration settings to retrieve. """ id: String! ): IntegrationsSettings! """ Finds an issue by UUID or a human-readable identifier such as ENG-123. Archived issues can also be returned. The query fails if the issue does not exist or you cannot access it. """ issue( """ Issue UUID or identifier, such as ENG-123. """ id: String! ): Issue! """ Find issues that are related to a given Figma file key. """ issueFigmaFileKeySearch( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The Figma file key. """ fileKey: String! """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueConnection! """ Suggests filters for an issue view based on a text prompt. """ issueFilterSuggestion( """ The ID of the project if filtering a project view. """ projectId: String """ The text prompt to generate a filter suggestion from. """ prompt: String! """ [Internal] The ID of the team if filtering a team view. """ teamId: String ): IssueFilterSuggestionPayload! """ Validate a Jira CSV uploaded to the workspace. Invalid files return an error. """ issueImportCheckCSV( """ Asset URL of a CSV uploaded to this workspace’s import storage. """ csvUrl: String! """ CSV source service. Only jira is supported. """ service: String! ): IssueImportCheckPayload! """ Checks whether a GitHub or Jira import can continue syncing with its source after import. A false result includes an explanation when available; other services return canSync: false. This check does not enable sync. """ issueImportCheckSync( """ The ID of the issue import for which to check sync eligibility """ issueImportId: String! ): IssueImportSyncCheckPayload! """ Validate JQL within the specified Jira project and return an approximate match count. """ issueImportJqlCheck( """ Jira user account email. """ jiraEmail: String! """ Jira installation or cloud hostname. """ jiraHostname: String! """ Jira project key to use as the base filter of the query. """ jiraProject: String! """ Jira personal access token to access Jira REST API. """ jiraToken: String! """ The JQL query to validate. """ jql: String! ): IssueImportJqlCheckPayload! """ A label by UUID, including archived labels. """ issueLabel( """ The identifier of the label to retrieve. """ id: String! ): IssueLabel! """ Workspace and team labels the caller can access, with cursor pagination and optional filters. """ issueLabels( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issue labels. """ filter: IssueLabelFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueLabelConnection! """ Issue priority values and corresponding labels. """ issuePriorityValues: [IssuePriorityValue!]! """ One specific issue relation, looked up by its unique identifier. """ issueRelation( """ The identifier of the issue relation to retrieve. """ id: String! ): IssueRelation! """ Issue relations the caller can access, with cursor pagination. """ issueRelations( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueRelationConnection! """ Returns code repositories that are most likely to be relevant for implementing an issue. """ issueRepositorySuggestions( """ Optional AgentSession ID associated with the issue for which the suggestions are being generated. """ agentSessionId: String """ List of candidate repositories to restrict suggestions to. """ candidateRepositories: [CandidateRepository!]! """ The ID of the issue to get repository suggestions for. """ issueId: String! ): RepositorySuggestionsPayload! """ [DEPRECATED] Search issues. This endpoint is deprecated and will be removed in the future – use `searchIssues` instead. """ issueSearch( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ [Deprecated] Search string to look for. """ query: String ): IssueConnection! """ Suggests an issue title based on a customer request message using AI summarization. """ issueTitleSuggestionFromCustomerRequest( """ The customer request message to generate an issue title from. """ request: String! ): IssueTitleSuggestionFromCustomerRequestPayload! """ Get an active issue-to-release link by its UUID. """ issueToRelease( """ The identifier of the issue-to-release association to retrieve. """ id: String! ): IssueToRelease! """ A paginated list of accessible issue-to-release links. """ issueToReleases( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueToReleaseConnection! """ Find an accessible issue referenced by a version-control branch name. Null if no issue matches. """ issueVcsBranchSearch( """ The VCS branch name to search for. """ branchName: String! ): Issue """ Lists issues you can access. Use filter to narrow the results by team, assignee, status, labels, project, or cycle, and cursor arguments to fetch subsequent pages. Archived issues are excluded unless includeArchived is true. """ issues( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned issues. """ sort: [IssueSortInput!] ): IssueConnection! """ Retrieves an accessible Jira project record by its Linear UUID, including an archived record. This ID is distinct from the project's Jira externalId or key. Read importStatus, syncStatus, and latestImport to track migration progress; a successful migration request can return before this work finishes. """ jiraProject( """ The identifier of the Jira project to retrieve. """ id: String! ): JiraProject! """ Jira projects synced with teams the caller can administer, plus projects whose imports the caller can access. Supports filters and cursor-based pagination. """ jiraProjects( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned Jira projects. """ filter: JiraProjectFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): JiraProjectConnection! """ Returns the most recently completed or updated release for the pipeline associated with the access key. """ latestReleaseByAccessKey: AccessKeyRelease """ Returns one of the authenticated user’s notifications by UUID, including an archived notification. """ notification( """ The identifier of the notification to retrieve. """ id: String! ): Notification! """ A specific notification subscription by ID. """ notificationSubscription( """ The identifier of the notification subscription to retrieve. """ id: String! ): NotificationSubscription! """ The authenticated user's subscriptions to entity notifications. """ notificationSubscriptions( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): NotificationSubscriptionConnection! """ Returns individual notifications received by the authenticated user, with optional filters. Related activity can produce several notifications; use inboxNotifications for the grouped inbox view. """ notifications( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filters returned notifications. """ filter: NotificationFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): NotificationConnection! """ [ALPHA] A specific OAuth application created by the calling OAuth application through the public API. """ oauthApplication( """ The identifier of the OAuth application to retrieve. """ id: String! ): OAuthApplication! """ Returns the authenticated OAuth application's trusted-source status for Coding Sessions in the workspace. Requires an OAuth access token with the `read` scope. """ oauthApplicationCodingSessionTrustedSource: OAuthApplicationCodingSessionTrustedSource! """ [ALPHA] Lists unarchived applications created by the calling OAuth application in the current workspace. This is not a list of every application installed in the workspace. Requires OAuth authentication and workspace API management permission. """ oauthApplications: [OAuthApplication!]! """ Returns the workspace associated with the credentials used for this request. Its ID and URL key identify the workspace, and its fields expose shared settings and resources. """ organization: Organization! """ Checks whether a workspace with the given URL key exists. """ organizationExists( """ The URL key of the workspace to check. """ urlKey: String! ): OrganizationExistsPayload! """ Fetches a specific workspace invite by its ID. """ organizationInvite( """ The identifier of the invite to retrieve. """ id: String! ): OrganizationInvite! """ Fetches public details of a specific workspace invite by its ID. This query does not require authentication and is used for invite acceptance flows. """ organizationInviteDetails( """ The identifier of the invite to retrieve details for. """ id: String! ): OrganizationInviteDetailsPayload! """ All pending and accepted invites for the workspace. """ organizationInvites( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): OrganizationInviteConnection! """ Returns a project you can access by UUID, URL slug, or human-readable project identifier. Archived projects can also be retrieved. """ project( """ The project UUID, slug ID, or human-readable identifier. """ id: String! ): Project! """ Suggests filters for a project view based on a text prompt. """ projectFilterSuggestion( """ Text describing the projects to match. """ prompt: String! """ [Internal] The ID of the team if filtering a team view. """ teamId: String ): ProjectFilterSuggestionPayload! """ Returns a single project label by its identifier. """ projectLabel( """ The UUID of the project label. """ id: String! ): ProjectLabel! """ All project labels. Returns a paginated list of labels visible to the authenticated user, including both workspace-level and team-scoped labels, with optional filtering. """ projectLabels( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned project labels. """ filter: ProjectLabelFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectLabelConnection! """ Fetches a milestone by UUID, including archived milestones. """ projectMilestone( """ The UUID of the milestone. """ id: String! ): ProjectMilestone! """ Returns all project milestones in the workspace, with optional filtering. """ projectMilestones( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned project milestones. """ filter: ProjectMilestoneFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectMilestoneConnection! """ Returns a single project relation by its identifier. """ projectRelation( """ The UUID of the project relation. """ id: String! ): ProjectRelation! """ Returns all project dependency relations in the workspace. """ projectRelations( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectRelationConnection! """ Returns a single project status by its identifier. """ projectStatus( """ The UUID of the project status. """ id: String! ): ProjectStatus! """ Returns all project statuses in the workspace. """ projectStatuses( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectStatusConnection! """ Returns a single project update by its identifier. """ projectUpdate( """ The identifier of the project update to retrieve. """ id: String! """ The id or URL slug of the project containing the update. When provided, the update is resolved by id or URL slug within that project. """ projectId: String ): ProjectUpdate! """ Returns all project status updates in the workspace, with optional filtering. """ projectUpdates( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned project updates. """ filter: ProjectUpdateFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectUpdateConnection! """ Returns projects visible to you in the workspace. Use filter to narrow the results and the connection arguments to page or sort them. """ projects( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned projects. """ filter: ProjectFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned projects. """ sort: [ProjectSortInput!] ): ProjectConnection! """ Queues a test notification for the authenticated user. Limited to three requests per minute; success confirms scheduling, not delivery. """ pushSubscriptionTest( """ Use push for push subscribers, desktop for connected desktop clients, desktopAndPush for both, or desktopThenPush to prefer connected desktop clients. Defaults to push. """ sendStrategy: SendStrategy = push """ Whether to target mobile devices. Defaults to false, which targets desktop notifications. """ targetMobile: Boolean = false ): PushSubscriptionTestPayload! """ Public resource quotas for the authenticated workspace. These are not subscription limits. """ quotas( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Limits the returned quotas by key or scope. """ filter: OrganizationQuotaFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int ): OrganizationQuotaConnection! """ Returns the quota state recorded for this GraphQL request, including both request count and query complexity. This query also consumes quota. Use remainingAmount with period and allowedAmount to pace requests: quota refills gradually, and reset is not a single instant when an exhausted fixed window is cleared. Other requests made with the same limited identity can consume the remaining quota. """ rateLimitStatus: RateLimitPayload! """ Returns releases for the pipeline associated with the access key, ordered with the most recently completed or updated first. """ recentReleasesByAccessKey( """ Maximum number of releases to return. Defaults to 20 and is capped at 100. """ limit: Int ): [AccessKeyRelease!]! """ Fetch a single release by its UUID or slug identifier. """ release( """ The release UUID or slug ID. """ id: String! ): Release! """ Fetch a release note by its UUID or slug identifier. """ releaseNote( """ The release note UUID or slug ID. """ id: String! ): ReleaseNote! """ Release notes in the workspace. """ releaseNotes( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned release notes. """ filter: ReleaseNoteFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ReleaseNoteConnection! """ Fetch a single release pipeline by its UUID or slug identifier. """ releasePipeline( """ The release pipeline UUID or slug ID. """ id: String! ): ReleasePipeline! """ Returns the release pipeline associated with the access key. """ releasePipelineByAccessKey: AccessKeyReleasePipeline! """ All release pipelines in the workspace, with optional filtering and sorting. """ releasePipelines( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned release pipelines. """ filter: ReleasePipelineFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned release pipelines. """ sort: [ReleasePipelineSortInput!] ): ReleasePipelineConnection! """ Search releases with optional text matching against name, version, and pipeline name. When no search term is provided, returns releases ordered by stage priority (started > planned > completed > canceled). """ releaseSearch( """ Filter to apply to the release results. """ filter: ReleaseFilter """ Maximum results. Capped at 50. """ first: Int = 20 """ Search term to match against release name, version, and pipeline name. When omitted, returns releases ordered by stage priority. """ term: String ): [Release!]! """ Fetch a single release stage by its UUID. """ releaseStage( """ The UUID of the release stage. """ id: String! ): ReleaseStage! """ All release stages in the workspace, with optional filtering. """ releaseStages( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned release stages. """ filter: ReleaseStageFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ReleaseStageConnection! """ All releases in the workspace, with optional filtering and sorting. """ releases( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned releases. """ filter: ReleaseFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned releases. """ sort: [ReleaseSortInput!] ): ReleaseConnection! """ [Deprecated] Returns a single roadmap by its identifier. Use initiatives instead. """ roadmap( """ The roadmap UUID or slug ID. """ id: String! ): Roadmap! @deprecated(reason: "Roadmaps are deprecated, use initiatives instead.") """ No longer supported and returns an error. Use initiativeToProject. """ roadmapToProject( """ The UUID of the legacy roadmap-to-project link. This query is no longer supported. """ id: String! ): RoadmapToProject! @deprecated(reason: "RoadmapToProject is deprecated, use InitiativeToProject instead.") """ Deprecated. Always returns an empty connection. Use initiativeToProjects. """ roadmapToProjects( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): RoadmapToProjectConnection! @deprecated(reason: "RoadmapToProject is deprecated, use InitiativeToProject instead.") """ Deprecated. Always returns an empty connection. Use initiatives. """ roadmaps( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): RoadmapConnection! @deprecated(reason: "Roadmaps are deprecated, use initiatives instead.") """ Searches accessible documents using text matching and meaning. Use teamId to narrow the search, and includeArchived to include archived documents. Results are ordered by relevance unless orderBy is supplied and use cursor pagination. Limited to 30 requests per minute. """ searchDocuments( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Include comment text when searching issues. Defaults to false; ignored for project and document searches. """ includeComments: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ UUID of a team to restrict results to. Omit or pass null to search all accessible teams. """ teamId: String """ The text to search for, from 1 to 1024 characters. You can use keywords or a natural-language description; search combines text matching with relevance by meaning. """ term: String! ): DocumentSearchPayload! """ Searches accessible issues using text matching and meaning. Results are ordered by relevance unless orderBy is supplied; use includeComments to search discussion text too. The issue filter narrows the retrieved candidates, so totalCount is not the final filtered count. Limited to 30 requests per minute. """ searchIssues( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Include comment text when searching issues. Defaults to false; ignored for project and document searches. """ includeComments: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ UUID of a team to restrict results to. Omit or pass null to search all accessible teams. """ teamId: String """ The text to search for, from 1 to 1024 characters. You can use keywords or a natural-language description; search combines text matching with relevance by meaning. """ term: String! ): IssueSearchPayload! """ Searches accessible projects using text matching and meaning. Use teamId to narrow the search, and includeArchived to include archived projects. Results are ordered by relevance unless orderBy is supplied and use cursor pagination. Limited to 30 requests per minute. """ searchProjects( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Include comment text when searching issues. Defaults to false; ignored for project and document searches. """ includeComments: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ UUID of a team to restrict results to. Omit or pass null to search all accessible teams. """ teamId: String """ The text to search for, from 1 to 1024 characters. You can use keywords or a natural-language description; search combines text matching with relevance by meaning. """ term: String! ): ProjectSearchPayload! """ Searches accessible issues, projects, initiatives, and documents together using a natural-language query. Use types to choose resource types and filters to narrow each type separately. Returns ranked results without cursor pagination; maxResults controls the requested count, with extra exact matches or original issues possible. Limited to 30 requests per minute. """ semanticSearch( """ Filters to apply to the semantic search results of each type. """ filters: SemanticSearchFilters """ Whether to include archived results in the search (default: false). """ includeArchived: Boolean """ The requested number of ranked search results, from 1 to 50; defaults to 50. Exact matches and original issues for matching duplicates can add results beyond this number. """ maxResults: Int """ A search phrase or natural-language description of what you are looking for, from 1 to 1024 characters. Results combine text matching with relevance by meaning. """ query: String! """ The types of results to return (default: all). """ types: [SemanticSearchResultType!] ): SemanticSearchPayload! """ Lists enabled SLA rules from the workspace, the requested team, and its ancestor teams, in rule order. Only rules whose team and status filters could match the team are returned. Other issue conditions still need to be evaluated, so this list does not determine the SLA for a particular issue. Requires access to the requested team's settings. """ slaConfigurations( """ The identifier or key of the team to evaluate SLA rules against. """ teamId: String! ): [SlaConfiguration!]! """ Returns a SAML sign-in URL for an existing membership or a matching email domain. Errors if no SSO-enabled workspace is found. """ ssoUrlFromEmail( """ Email to query the SSO login URL by. """ email: String! """ Whether the client is the desktop app. """ isDesktop: Boolean """ Type of identity provider. """ type: IdentityProviderType! = general ): SsoUrlFromEmailResponse! """ Fetches a specific team by its ID. """ team( """ The identifier of the team to retrieve. """ id: String! ): Team! """ Fetches a specific team membership by its ID. """ teamMembership( """ The identifier of the team membership to retrieve. """ id: String! ): TeamMembership! """ All team memberships in the workspace. """ teamMemberships( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): TeamMembershipConnection! """ All teams whose issues the user can access. This includes public teams and private teams the user is a member of. This may differ from `administrableTeams`, which returns teams whose settings the user can change but whose issues they don't necessarily have access to. """ teams( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned teams. """ filter: TeamFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): TeamConnection! """ A template by UUID, including archived templates. """ template( """ The identifier of the template to retrieve. """ id: String! ): Template! """ Finds templates matching a filter, ordered as they appear in Linear. Unlike templates, this excludes archived templates by default and supports a result limit. A null-team filter selects templates without a team, including pipeline-scoped release-note templates. """ templateSearch( """ Filter to apply to the template results. """ filter: TemplateFilter """ Maximum results. Capped at 250. """ first: Int = 50 """ Should archived resources be included (default: false). """ includeArchived: Boolean = false ): [Template!]! """ All accessible workspace and team templates, including archived templates. Use templateSearch for filters and a result limit. """ templates: [Template!]! """ Lists templates enabled for the specified integration service. The returned templateData also includes the body as Markdown for integrations that cannot read Linear’s rich-text format. Unsupported service types return an empty list. """ templatesForIntegration( """ The type of integration for which to return associated templates. """ integrationType: String! ): [Template!]! """ Retrieves an accessible time schedule by UUID, including archived schedules. """ timeSchedule( """ The identifier of the time schedule to retrieve. """ id: String! ): TimeSchedule! """ Returns the on-call schedules the caller can access, including API-managed and integration-managed schedules. Use the connection arguments to paginate. The integration and externalId fields identify where a schedule comes from. """ timeSchedules( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): TimeScheduleConnection! """ All triage responsibilities. """ triageResponsibilities( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): TriageResponsibilityConnection! """ A specific triage responsibility. """ triageResponsibility( """ The identifier of the triage responsibility to retrieve. """ id: String! ): TriageResponsibility! """ Retrieves a usage-based billing alert by UUID, including archived alerts. Requires workspace billing permission. """ usageAlert( """ The identifier of the usage alert to retrieve. """ id: String! ): UsageAlert! """ The workspace's usage-based billing alerts, such as a low or exhausted usage credit balance. Alerts for expired promotional credits are archived and excluded unless archived resources are requested. Use resolvedAt to tell an open alert from one whose condition has since cleared. Requires workspace billing permission. """ usageAlerts( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned usage alerts. """ filter: UsageAlertFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): UsageAlertConnection! """ Fetches a specific user by their ID. """ user( """ The identifier of the user to retrieve. To retrieve the authenticated user, use `viewer` query. """ id: String! ): User! """ Lists all active authentication sessions for a user. Can only be called by a workspace admin or owner. """ userSessions( """ The identifier of the user to list sessions of. """ id: String! ): [AuthenticationSessionResponse!]! """ The authenticated user's notification and UI settings. """ userSettings: UserSettings! """ The authenticated user's workspace-level view display preferences for a view type. Returns the user-type preferences that are not scoped to a team, project, or other entity. Null if the user has not customized the view. """ userViewPreferences( """ The view type the preferences are associated with. """ viewType: ViewType! ): ViewPreferences """ Users in the workspace, with filtering and pagination. Disabled accounts are excluded unless includeDisabled is true. """ users( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned users. """ filter: UserFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Include disabled and suspended accounts. Defaults to false. """ includeDisabled: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned users. """ sort: [UserSortInput!] ): UserConnection! """ Checks whether Linear has received the first connection from the GitHub Enterprise Server app during this setup attempt. """ verifyGitHubEnterpriseServerInstallation( """ The integration ID. """ integrationId: String! ): GitHubEnterpriseServerInstallVerificationPayload! """ The account making this request. For OAuth applications using actor=app, this is the application account. """ viewer: User! """ Retrieves a single webhook by its identifier. """ webhook( """ The identifier of the webhook to retrieve. """ id: String! ): Webhook! """ Webhook subscriptions in the workspace, with cursor-based pagination. Requires permission to manage the workspace API. """ webhooks( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): WebhookConnection! """ An issue status by UUID, including archived statuses. """ workflowState( """ The identifier of the workflow state to retrieve. """ id: String! ): WorkflowState! """ Issue statuses from teams the caller can access, with cursor pagination and optional filters. """ workflowStates( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned workflow states. """ filter: WorkflowStateFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): WorkflowStateConnection! } """ The rate limits applied to the request that contains this query. identifier and kind tell you which caller or credential is being limited; limits reports request-count and query-complexity quotas. Values describe a snapshot after this request, so other requests using the same quota can change what remains. """ type RateLimitPayload { """ Identifier of the credential or caller whose quota is used. Null when no limit identifier was assigned. """ identifier: String """ How the rate limit was selected: OAuth app, API key, Access key, JWT, Custom, or Default. """ kind: String! """ The current state of each rate limit type, including remaining quota and reset timing. """ limits: [RateLimitResultPayload!]! } """ The state of a specific rate limit type, including remaining quota and reset timing. """ type RateLimitResultPayload { """ The total allowed quantity for this type of limit. """ allowedAmount: Float! """ Refill period in milliseconds. Quota replenishes gradually throughout this period. """ period: Float! """ The remaining quantity for this type of limit after this request. """ remainingAmount: Float! """ Amount consumed by this GraphQL request: one request or its calculated query complexity. """ requestedAmount: Float! """ Unix time in milliseconds one refill period after this request. Quota refills gradually, so requests may be possible before this time. """ reset: Float! """ The measured quota: requests or complexity. """ type: String! } """ An emoji reaction from one user on an issue, comment, or update. The target’s reactionData groups reactions by emoji for display; each Reaction identifies a single user’s contribution and can be removed by its UUID. """ type Reaction implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The comment that the reaction is associated with. Null if the reaction belongs to a different parent entity type. """ comment: Comment """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Normalized emoji name, such as +1, or the name of a custom workspace emoji. """ emoji: String! """ The external user that created the reaction through an integration. Null if the reaction was created by a workspace user. """ externalUser: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The initiative update that the reaction is associated with. Null if the reaction belongs to a different parent entity type. """ initiativeUpdate: InitiativeUpdate """ The issue that the reaction is associated with. Null if the reaction belongs to a different parent entity type. """ issue: Issue """ The project update that the reaction is associated with. Null if the reaction belongs to a different parent entity type. """ projectUpdate: ProjectUpdate """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The workspace user that created the reaction. Null if the reaction was created by an external user through an integration. """ user: User } """ Conditions on a collection of reactions. Use some to require a matching item, every to check the whole collection, or length to check its size. Direct reaction fields act as some only when no and, or, some, every, or length clause is supplied. """ input ReactionCollectionFilter { """ Collection conditions that must all match. Different some branches can be satisfied by different reactions. """ and: [ReactionCollectionFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Conditions on the custom Emoji record’s UUID. Standard Unicode emoji do not have a custom emoji ID. """ customEmojiId: IDComparator """ Conditions on the normalized emoji name stored on the reaction, such as +1. Custom workspace emoji use their names. """ emoji: StringComparator """ Requires at least one related reaction and requires every related reaction to match these conditions. Use length: { eq: 0 } to find an empty collection. """ every: ReactionFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Conditions on the total number of related reactions, independent of some or every. Use eq: 0 to find an empty collection. """ length: NumberComparator """ Alternative collection conditions; at least one must match. Other collection clauses at this level still apply. An empty list adds no condition. """ or: [ReactionCollectionFilter!] """ Requires at least one related reaction to match these conditions. An empty collection does not match. """ some: ReactionFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The emoji and resource to react to as the current user. Supply exactly one target: an issue, comment, project update, or initiative update. Repeating the same emoji on the same resource returns your existing reaction. """ input ReactionCreateInput { """ UUID of the comment to react to. Supply exactly one target. """ commentId: String """ A standard emoji name, alias, or Unicode emoji, or the name of a custom workspace emoji. Linear normalizes standard emoji to their canonical names; use the returned reaction.emoji when comparing stored reactions. """ emoji: String! """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ UUID of the initiative update to react to. Supply exactly one target. """ initiativeUpdateId: String """ The issue to associate the reaction with. Can be a UUID or issue identifier (e.g., 'LIN-123'). """ issueId: String """ UUID of the project update to react to. Supply exactly one target. """ projectUpdateId: String } """ Conditions used to select reactions. Supplied fields are combined with AND; use `or` to accept alternatives and `and` to group conditions. """ input ReactionFilter { """ Conditions that the reaction must all match. These are combined with the other fields in this filter. """ and: [ReactionFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Conditions on the custom Emoji record’s UUID. Standard Unicode emoji do not have a custom emoji ID. """ customEmojiId: IDComparator """ Conditions on the normalized emoji name stored on the reaction, such as +1. Custom workspace emoji use their names. """ emoji: StringComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Alternative conditions; the reaction must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [ReactionFilter!] """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The result of a reaction mutation. """ type ReactionPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The reaction that was created. """ reaction: Reaction! """ Whether the operation was successful. """ success: Boolean! } """ Payload for a reaction webhook. """ type ReactionWebhookPayload { """ The time at which the entity was archived. """ archivedAt: String """ The comment the reaction is associated with. """ comment: CommentChildWebhookPayload """ The ID of the comment that the reaction is associated with. """ commentId: String """ The time at which the entity was created. """ createdAt: String! """ Name of the reaction's emoji. """ emoji: String! """ The ID of the external user that created the reaction. """ externalUserId: String """ The ID of the entity. """ id: String! """ The ID of the initiative update that the reaction is associated with. """ initiativeUpdateId: String """ The issue the reaction is associated with. """ issue: IssueChildWebhookPayload """ The ID of the issue that the reaction is associated with. """ issueId: String """ The ID of the post that the reaction is associated with. """ postId: String """ The project update the reaction is associated with. """ projectUpdate: ProjectUpdateChildWebhookPayload """ The ID of the project update that the reaction is associated with. """ projectUpdateId: String """ The time at which the entity was updated. """ updatedAt: String! """ The user that created the reaction. """ user: UserChildWebhookPayload """ The ID of the user that created the reaction. """ userId: String } """ Tests whether any related records exist. """ input RelationExistsComparator { """ True requires at least one related record; false requires none. """ eq: Boolean """ True requires no related records; false requires at least one. """ neq: Boolean } """ A software deployment or version tracked in a release pipeline. It groups the issues included in that release and records its stage, planned dates, and actual lifecycle times. Release notes and documents provide the written context for what shipped. """ type Release implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ When the release was automatically archived. Null if it has not been automatically archived. """ autoArchivedAt: DateTime """ 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. """ canceledAt: DateTime """ The Git commit SHA for the release. Used to identify repeated sync or completion requests. Null if no commit is set. """ commitSha: String """ 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. """ completedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the release. Null if the release was created by a non-user context such as an access key or automation. """ creator: User """ The current progress summary for the release, including counts of issues by workflow state type (e.g., completed, in progress, unstarted). """ currentProgress: JSONObject! """ The description of the release in plain text or markdown. Null if no description has been set. """ description: String """ Documents associated with the release. """ documents( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned documents. """ filter: DocumentFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): DocumentConnection! """ History entries associated with the release. """ history( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ReleaseHistoryConnection! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Number of issues associated with the release. """ issueCount( """ Include archived issues in the count. """ includeArchived: Boolean = false ): Int! """ Issues associated with this release that you can access. These associations describe inclusion in the release; an issue can be associated with more than one release. """ issues( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueConnection! """ Links associated with the release. """ links( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): EntityExternalLinkConnection! """ The name of the release. """ name: String! """ The pipeline that owns the release. A release cannot move between pipelines. """ pipeline: ReleasePipeline! """ The historical progress snapshots for the release, tracking how issue completion has evolved over time. """ progressHistory: JSONObject! """ Release notes for the release. """ releaseNotes: [ReleaseNote!]! """ The release's unique URL slug, used to construct human-readable URLs for the release. """ slugId: String! """ The current stage. Stage changes update lifecycle dates; completing a scheduled release can move open issues to the next release. """ stage: ReleaseStage! """ The planned start date in YYYY-MM-DD format. Set to today when the release first enters a started stage if no date is set. """ startDate: TimelessDate """ The time at which the release first entered a started stage. Null if the release has not yet been started. """ startedAt: DateTime """ The planned completion date in YYYY-MM-DD format. Null if no target date is set. """ targetDate: TimelessDate """ 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. """ trashed: Boolean """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The URL to the release page in the Linear app. """ url: String! """ 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. """ version: String } """ The result of archiving or restoring a resource. """ type ReleaseArchivePayload implements ArchivePayload { """ The resource after the operation, when returned. This can be null when the mutation does not return a resource, including after deletion. Check `success` for the operation's result. """ entity: Release """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Features release channel. """ enum ReleaseChannel { beta development internal preRelease privateBeta public } """ Certain properties of a release. """ type ReleaseChildWebhookPayload { """ The time at which the release was completed. """ completedAt: String """ The ID of the release. """ id: String! """ The name of the release. """ name: String! """ The pipeline this release belongs to. """ pipeline: ReleasePipelineChildWebhookPayload """ The current stage of the release. """ stage: ReleaseStageChildWebhookPayload """ The version of the release. """ version: String } """ Filters a related collection of releases. Use some or every to test its members and length to test its size, for example length: { eq: 0 } for an empty collection. Direct property filters act as some only when no collection clause is supplied. """ input ReleaseCollectionFilter { """ All of these collection conditions must match. Each can test a different member of the collection. """ and: [ReleaseCollectionFilter!] """ Comparator for the release completion date. """ completedAt: NullableDateComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that needs to be matched by all releases. """ every: ReleaseFilter """ Comparator for whether the release is covered by any (non-archived) release note. Filter with `{ eq: false }` to retrieve releases that do not yet have release notes attached. """ hasReleaseNotes: BooleanComparator """ Comparator for the identifier. """ id: IDComparator """ The number of related objects, before applying some or every. Use { eq: 0 } to find an empty collection. """ length: NumberComparator """ Comparator for the release name. """ name: StringComparator """ At least one of these collection conditions must match. """ or: [ReleaseCollectionFilter!] """ Filters that the release's pipeline must satisfy. """ pipeline: ReleasePipelineFilter """ Filters that needs to be matched by some releases. """ some: ReleaseFilter """ Filters that the release's stage must satisfy. """ stage: ReleaseStageFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator """ Comparator for the release version. """ version: StringComparator } """ Selects a release in a pipeline to complete. Supply version to select a specific release, or omit it to use the latest started release. You can also update its name, description, and attached content as part of completion. """ input ReleaseCompleteInput { """ The commit SHA to store when moving a release to completed. With a version, an existing SHA is preserved. Without a version, this SHA replaces the started release's SHA and is used to detect retries. """ commitSha: String """ Optional release description to apply when completing the release. Pass null to clear it. """ description: String """ Documents to attach to the completed release. Existing documents with the same title are updated. """ documents: [ReleaseDocumentInput!] """ External links to attach to the completed release. """ links: [ReleaseLinkInput!] """ Optional release name to apply when completing the release. """ name: String """ The identifier of the pipeline to mark a release as completed. """ pipelineId: String! """ Release notes covering the completed release. """ releaseNotes: ReleaseNoteInput """ The version of the release to complete. If not provided, the latest started release will be completed. """ version: String } """ Base input for completing a release. Contains the optional version and commit SHA. The pipeline ID is provided separately or inferred from the access key. """ input ReleaseCompleteInputBase { """ The commit SHA to store when moving a release to completed. With a version, an existing SHA is preserved. Without a version, this SHA replaces the started release's SHA and is used to detect retries. """ commitSha: String """ Optional release description to apply when completing the release. Pass null to clear it. """ description: String """ Documents to attach to the completed release. Existing documents with the same title are updated. """ documents: [ReleaseDocumentInput!] """ External links to attach to the completed release. """ links: [ReleaseLinkInput!] """ Optional release name to apply when completing the release. """ name: String """ Release notes covering the completed release. """ releaseNotes: ReleaseNoteInput """ The version of the release to complete. If not provided, the latest started release will be completed. """ version: String } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type ReleaseConnection { """ The page's results paired with their cursors. """ edges: [ReleaseEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Release!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ Details for a new release in an existing pipeline. Provide its name and pipeline; if stageId is omitted, continuous pipelines use their first completed stage and scheduled pipelines use their first started stage. Version labels must be unique within the pipeline. """ input ReleaseCreateInput { """ The commit SHA associated with this release. """ commitSha: String """ The actual completion time, for example when importing a release. Requires createdAt and must be in the past, on or after createdAt and any startedAt. Requires a completed stage. """ completedAt: DateTime """ The time at which the release was created (e.g. if importing from another system). Must be a time in the past. If none is provided, the backend will generate the time as now. """ createdAt: DateTime """ The description of the release. """ description: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The name of the release. """ name: String! """ UUID or slug of the pipeline that will own the release. """ pipelineId: String! """ UUID of a stage in this pipeline. Defaults to its first completed stage for continuous pipelines or first started stage for scheduled pipelines. """ stageId: String """ Planned start date in YYYY-MM-DD format. """ startDate: TimelessDate """ The actual start time, for example when importing a release. Requires createdAt and must be in the past, on or after createdAt. """ startedAt: DateTime """ Planned completion date in YYYY-MM-DD format. """ targetDate: TimelessDate """ The version label, such as v1.2.3. An active or archived release in the same pipeline cannot already use it. If a trashed release holds the version, that release is permanently deleted to free the label. """ version: String } """ Diagnostic data captured during release sync, including inspected commits, discovered issue references, and pull request metadata. Stored on the release for debugging release association issues. """ input ReleaseDebugSinkInput { """ List of paths applied during commit scanning. """ includePaths: [String!] """ Regex used to filter commit subjects during scanning. """ includeSubjects: [String!] """ List of commit SHAs that were inspected. """ inspectedShas: [String!]! """ Custom regex used to extract issue identifiers from commit subjects. """ issuePattern: String """ Map of issue identifiers to their source information. """ issues: JSONObject! """ Pull request debug information. """ pullRequests: [JSONObject!]! """ Map of reverted issue identifiers to their source information. """ revertedIssues: JSONObject } """ A document to attach to the release. Existing documents on the release with the same title are updated in place. Bad rows (empty title, oversized title/body) are skipped with a warning rather than failing the release command. """ input ReleaseDocumentInput { """ The document body as markdown. """ content: String! """ The title of the document. Used to match existing documents on the release for upsert. """ title: String! } """ A result and its pagination cursor. """ type ReleaseEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Release! } """ Filters releases by name, version, pipeline, stage, completion date, or release-note coverage. Supplied conditions must match together; use and and or to combine nested filters. """ input ReleaseFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [ReleaseFilter!] """ Comparator for the release completion date. """ completedAt: NullableDateComparator """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Comparator for whether the release is covered by any (non-archived) release note. Filter with `{ eq: false }` to retrieve releases that do not yet have release notes attached. """ hasReleaseNotes: BooleanComparator """ Comparator for the identifier. """ id: IDComparator """ Comparator for the release name. """ name: StringComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [ReleaseFilter!] """ Filters that the release's pipeline must satisfy. """ pipeline: ReleasePipelineFilter """ Filters that the release's stage must satisfy. """ stage: ReleaseStageFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator """ Comparator for the release version. """ version: StringComparator } """ A group of recorded changes to a release, such as version, stage, or dates. The entries JSON contains individual events ordered by event time. A record can gain entries over time, so use the entry timestamps when interpreting individual changes. """ type ReleaseHistory implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The events that happened while recording that history. """ entries: JSONObject! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The release that this history record tracks changes for. """ release: Release! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type ReleaseHistoryConnection { """ The page's results paired with their cursors. """ edges: [ReleaseHistoryEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [ReleaseHistory!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A result and its pagination cursor. """ type ReleaseHistoryEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: ReleaseHistory! } """ An external link to attach to the release. """ input ReleaseLinkInput { """ Optional label for the link. If omitted, the API derives one from the URL. """ label: String """ The URL of the link. """ url: String! } """ Written notes covering one or more releases in a single pipeline. The covered releases define the note’s range and default title, while the body is stored as document content. Scheduled pipelines allow a note to cover exactly one release. """ type ReleaseNote implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The note body. Null if no content has been written. """ documentContent: DocumentContent """ The first covered release when ordered by completion time, using creation time for releases without a completion time. Null if no covered release is available. """ firstRelease: Release """ AI generation status: pending or completed. Null if the note has not been generated by AI. """ generationStatus: ReleaseNoteGenerationStatus """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The last covered release when ordered by completion time, using creation time for releases without a completion time. Null if no covered release is available. """ lastRelease: Release """ The release pipeline that this note belongs to. A note always belongs to exactly one pipeline. """ pipeline: ReleasePipeline! """ The number of releases covered by this note. """ releaseCount: Int! """ Covered releases in completion order, using creation time for incomplete releases. Includes archived releases. """ releases: [Release!]! """ The release note's unique URL slug, used to construct human-readable URLs for the note. """ slugId: String! """ The custom title of the note. Null when no custom title is set; the Linear app then derives a title from the covered releases. """ title: String """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The URL to the release note page in the Linear app. """ url: String! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type ReleaseNoteConnection { """ The page's results paired with their cursors. """ edges: [ReleaseNoteEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [ReleaseNote!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The pipeline, covered releases, and optional written content for a new release note. Select releases with releaseIds or with both range endpoints. All selected releases must belong to the pipeline; scheduled pipelines require exactly one. """ input ReleaseNoteCreateInput { """ The release note body as markdown. """ content: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ Identifier of the release pipeline. """ pipelineId: String! """ UUID of one range endpoint. With rangeToReleaseId, includes unarchived releases between both endpoints by completedAt, falling back to createdAt. """ rangeFromReleaseId: String """ UUID of the other range endpoint, included in the range. Required with rangeFromReleaseId. """ rangeToReleaseId: String """ Release UUIDs to include, all in this pipeline. Must contain at least one release. Cannot be combined with range endpoints. """ releaseIds: [String!] """ Custom title. Omit to use a title derived from the covered releases in the app. """ title: String } """ A result and its pagination cursor. """ type ReleaseNoteEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: ReleaseNote! } """ Filters release notes by title, slug, pipeline, or covered releases. Supplied conditions must match together; use and and or to combine nested filters. """ input ReleaseNoteFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [ReleaseNoteFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Comparator for the identifier. """ id: IDComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [ReleaseNoteFilter!] """ Filters that the release note's pipeline must satisfy. """ pipeline: ReleasePipelineFilter """ Filters that a release covered by the release note must satisfy. """ release: ReleaseFilter """ Comparator for the release note slug ID. """ slugId: StringComparator """ Comparator for the release note title. """ title: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The generation status of a release note's body content. """ enum ReleaseNoteGenerationStatus { completed pending } """ Release notes to attach to the release. Upserts the existing release notes that cover only this release. Bad input (empty title, oversized title/body) is skipped with a warning rather than failing the release command. """ input ReleaseNoteInput { """ The release notes body as markdown. """ content: String! """ Optional title. If omitted, the UI derives one from the release range. """ title: String } """ The result of a release note mutation. """ type ReleaseNotePayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The release note that was created or updated. """ releaseNote: ReleaseNote! """ Whether the operation was successful. """ success: Boolean! } """ Changes to a release note. Omitted fields keep their values. A supplied release selection replaces the previous selection; an empty content string clears the body, while null content leaves it unchanged. """ input ReleaseNoteUpdateInput { """ Replacement body in Markdown. Pass an empty string to clear it; null or omission leaves it unchanged. """ content: String """ UUID of one replacement range endpoint. Pair with rangeToReleaseId; includes unarchived releases between both by completedAt, falling back to createdAt. """ rangeFromReleaseId: String """ UUID of the other replacement range endpoint, included in the range. Required with rangeFromReleaseId. """ rangeToReleaseId: String """ Replacement release UUIDs from the same pipeline. Must contain at least one release; scheduled pipelines require exactly one. Takes precedence over range endpoints. """ releaseIds: [String!] """ Custom title. Pass an empty string or null to restore the title derived from the covered releases in the app. """ title: String } """ Payload for a release note webhook. """ type ReleaseNoteWebhookPayload { """ The time at which the entity was archived. """ archivedAt: String """ The release note's body as markdown. """ content: String """ The time at which the entity was created. """ createdAt: String! """ The ID of the user who created the release note. """ creatorId: String """ The ID of the entity. """ id: String! """ The ID of the most recent release covered by this note. """ lastReleaseId: String """ The pipeline this release note belongs to. """ pipeline: ReleasePipelineChildWebhookPayload """ The ID of the pipeline this release note belongs to. """ pipelineId: String! """ IDs of the releases included in the note. """ releaseIds: [String!]! """ The release note's unique URL slug. """ slugId: String! """ User-supplied title for the release note. """ title: String """ The time at which the entity was updated. """ updatedAt: String! """ The URL of the release note. """ url: String! } """ The result of a release mutation, containing the release that was created or updated and a success indicator. """ type ReleasePayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The release that was created or updated. """ release: Release! """ Whether the operation was successful. """ success: Boolean! } """ A workflow for tracking releases of a product or environment. Continuous pipelines record completed releases as changes are synced, while scheduled pipelines collect issues in an open release until it is completed. Each pipeline defines its own stages, team associations, and release-note settings. """ type ReleasePipeline implements Node { """ Approximate number of unarchived releases. May lag behind recent changes. """ approximateReleaseCount: Int! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ Whether to automatically generate a release note when a release is completed. """ autoGenerateReleaseNotesOnCompletion: Boolean! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ 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. """ includePathPatterns: [String!]! """ Whether the pipeline targets a production environment. """ isProduction: Boolean! """ The release note in this pipeline whose covered range ends with the most recent release. """ latestReleaseNote: ReleaseNote """ The name of the pipeline. """ name: String! """ The document template used to define the release notes format for this pipeline. AI-generated release notes follow the structure and tone of this template. Null if no template has been configured. """ releaseNoteTemplate: Template """ Releases associated with this pipeline. """ releases( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned releases. """ sort: [ReleaseSortInput!] ): ReleaseConnection! """ Whether completing a scheduled release moves its open issues to the next release. When false, open issues remain on the completed release. """ rolloverIssuesOnCompletion: Boolean! """ The pipeline's unique slug identifier, used in URLs and for lookup by human-readable identifier instead of UUID. """ slugId: String! """ Stages associated with this pipeline. """ stages( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ReleaseStageConnection! """ Teams associated with this pipeline. """ teams( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): TeamConnection! """ A flag that indicates whether the pipeline is in the trash bin. Trashed pipelines are archived and will be permanently deleted after a retention period. Null when the pipeline is not trashed. """ trashed: Boolean """ How the pipeline manages releases. Continuous pipelines create completed releases and reuse them when a sync repeats the same version and commit SHA. Scheduled pipelines accumulate issues in a started release until it is explicitly completed. """ type: ReleasePipelineType! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The URL to the release pipeline's releases list in the Linear app. """ url: String! } """ The result of archiving or restoring a resource. """ type ReleasePipelineArchivePayload implements ArchivePayload { """ The resource after the operation, when returned. This can be null when the mutation does not return a resource, including after deletion. Check `success` for the operation's result. """ entity: ReleasePipeline """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Certain properties of a release pipeline. """ type ReleasePipelineChildWebhookPayload { """ The ID of the release pipeline. """ id: String! """ The name of the release pipeline. """ name: String! """ The pipeline's unique slug identifier. """ slugId: String! """ The type of the release pipeline. """ type: String! """ The URL of the release pipeline. """ url: String! } """ Filters pipelines related to a team. Use some or every to test pipeline properties, or length to test how many pipelines are associated. Combine separate tests as entries in and; at one level, and takes precedence over or, then length, then every, then some or direct properties. """ input ReleasePipelineCollectionFilter { """ All of these collection conditions must match. Each can test a different member of the collection. """ and: [ReleasePipelineCollectionFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that needs to be matched by all release pipelines. """ every: ReleasePipelineFilter """ Comparator for the identifier. """ id: IDComparator """ Comparator for the pipeline production flag. """ isProduction: BooleanComparator """ The number of pipelines associated with the team. Use { eq: 0 } for no pipelines. To combine this with other collection tests, place each test in a separate and entry. """ length: NumberComparator """ Comparator for the pipeline name. """ name: StringComparator """ At least one of these collection conditions must match. """ or: [ReleasePipelineCollectionFilter!] """ Filters that needs to be matched by some release pipelines. """ some: ReleasePipelineFilter """ Filters that the release pipeline's teams must satisfy. """ teams: TeamCollectionFilter """ Comparator for the pipeline type. """ type: ReleasePipelineTypeComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type ReleasePipelineConnection { """ The page's results paired with their cursors. """ edges: [ReleasePipelineEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [ReleasePipeline!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ Settings for a new release pipeline. Provide a name and optionally associate teams or choose a scheduled workflow. The pipeline is created with default stages; continuous is the default workflow. """ input ReleasePipelineCreateInput { """ Whether to automatically generate a release note when a release is completed. Defaults to false. """ autoGenerateReleaseNotesOnCompletion: Boolean """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ Glob patterns that restrict synced commits to matching file paths. Omit or pass [] to include all paths. """ includePathPatterns: [String!] """ Whether this pipeline targets a production environment. Default to true. """ isProduction: Boolean """ The name of the pipeline. """ name: String! """ Whether completing a scheduled release moves its open issues to the next release. Defaults to true. When false, open issues remain on the completed release. """ rolloverIssuesOnCompletion: Boolean """ URL slug. Defaults to the pipeline name converted to a slug. A suffix is added if the slug is already in use. """ slugId: String """ The identifiers of the teams this pipeline is associated with. """ teamIds: [String!] """ Release workflow. Defaults to continuous; scheduled pipelines collect issues until explicitly completed. """ type: ReleasePipelineType } """ A result and its pagination cursor. """ type ReleasePipelineEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: ReleasePipeline! } """ Filters release pipelines by name, production status, pipeline type, or teams. Supplied conditions must match together; use and and or to combine nested filters. """ input ReleasePipelineFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [ReleasePipelineFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Comparator for the identifier. """ id: IDComparator """ Comparator for the pipeline production flag. """ isProduction: BooleanComparator """ Comparator for the pipeline name. """ name: StringComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [ReleasePipelineFilter!] """ Filters that the release pipeline's teams must satisfy. """ teams: TeamCollectionFilter """ Comparator for the pipeline type. """ type: ReleasePipelineTypeComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ Release pipeline name sorting options. """ input ReleasePipelineNameSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ The result of a release pipeline mutation. """ type ReleasePipelinePayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The release pipeline that was created or updated. """ releasePipeline: ReleasePipeline! """ Whether the operation was successful. """ success: Boolean! } """ Release pipeline sorting options. """ input ReleasePipelineSortInput { """ Sort by release pipeline name. """ name: ReleasePipelineNameSort } """ How a pipeline creates and manages releases. Continuous pipelines create completed releases and reuse matching version and commit SHA pairs on repeated syncs. Scheduled pipelines accumulate issues into a started release that is explicitly completed. """ enum ReleasePipelineType { continuous scheduled } """ Comparator for release pipeline type. """ input ReleasePipelineTypeComparator { """ Matches the given value. """ eq: ReleasePipelineType """ Matches any value in the list. An empty list matches nothing. """ in: [ReleasePipelineType!] """ Excludes the given value. """ neq: ReleasePipelineType """ Excludes every value in the list, and includes null. An empty list adds no restriction. """ nin: [ReleasePipelineType!] """ Set to true to match resources with no value, or false to require a value. For example, `{ null: true }` finds unset values; `{ eq: null }` is not a substitute. """ null: Boolean } """ Changes to an existing release pipeline. Omitted fields keep their values. Team and path-pattern lists replace their current selections, while teams you cannot access are preserved. """ input ReleasePipelineUpdateInput { """ Whether to automatically generate a release note when a release is completed. """ autoGenerateReleaseNotesOnCompletion: Boolean """ Replaces the glob patterns used to filter synced commits by file path. Pass [] to include all paths. """ includePathPatterns: [String!] """ Whether this pipeline targets a production environment. """ isProduction: Boolean """ The name of the pipeline. """ name: String """ Whether completing a scheduled release moves its open issues to the next release. When false, open issues remain on the completed release. """ rolloverIssuesOnCompletion: Boolean """ URL slug. A suffix is added if the slug is already in use. """ slugId: String """ Replaces associated team UUIDs. Pass [] or null to remove accessible teams; private teams you cannot access are preserved. """ teamIds: [String!] """ The type of the pipeline. """ type: ReleasePipelineType } """ Issue release sorting options. """ input ReleaseSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Release sorting options. """ input ReleaseSortInput { """ Sort by release stage """ stage: ReleaseStageSort } """ A step in a release pipeline, such as a planned, started, completed, or canceled stage. The stage type controls the release’s lifecycle timestamps. Custom started stages can be frozen so untargeted syncs do not add new issues to their releases. """ type ReleaseStage implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The display color of the stage as a HEX string (e.g., '#0f783c'), used for visual representation in the UI. """ color: String! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Whether sync skips this stage when choosing a release without an explicit version. A sync that specifies a version can still target its release. Only started stages can be frozen, and at least one started stage must remain unfrozen. """ frozen: Boolean! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The name of the stage. """ name: String! """ The release pipeline that this stage belongs to. A stage always belongs to exactly one pipeline. """ pipeline: ReleasePipeline! """ The position of the stage within its pipeline, used for ordering stages in the UI. Lower values appear first. """ position: Float! """ Releases associated with this stage. """ releases( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ReleaseConnection! """ 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. """ type: ReleaseStageType! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ The result of archiving or restoring a resource. """ type ReleaseStageArchivePayload implements ArchivePayload { """ The resource after the operation, when returned. This can be null when the mutation does not return a resource, including after deletion. Check `success` for the operation's result. """ entity: ReleaseStage """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Certain properties of a release stage. """ type ReleaseStageChildWebhookPayload { """ The UI color of the stage as a HEX string. """ color: String! """ The ID of the release stage. """ id: String! """ The name of the stage. """ name: String! """ The position of the stage. """ position: Float! """ The type of the stage. """ type: String! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type ReleaseStageConnection { """ The page's results paired with their cursors. """ edges: [ReleaseStageEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [ReleaseStage!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The stage name, display color, type, and position within a pipeline. Custom stages use the started type. Other types use the pipeline’s standard names and colors; only started stages can be frozen. """ input ReleaseStageCreateInput { """ The UI color of the stage as a HEX string. """ color: String! """ Whether sync skips this stage when no version is supplied. Defaults to false. An explicit version can still target a release here. Only started stages can be frozen, and at least one must remain unfrozen. """ frozen: Boolean """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The name of the stage. """ name: String! """ The identifier of the pipeline this stage belongs to. """ pipelineId: String! """ Position among stages in the pipeline, in ascending order. """ position: Float! """ The type of the stage. """ type: ReleaseStageType! } """ A result and its pagination cursor. """ type ReleaseStageEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: ReleaseStage! } """ Filters release stages by name or lifecycle type. Supplied conditions must match together; use and and or to combine nested filters. """ input ReleaseStageFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [ReleaseStageFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Comparator for the identifier. """ id: IDComparator """ Comparator for the stage name. """ name: StringComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [ReleaseStageFilter!] """ Comparator for the stage type. """ type: ReleaseStageTypeComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The result of a release stage mutation. """ type ReleaseStagePayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The release stage that was created or updated. """ releaseStage: ReleaseStage! """ Whether the operation was successful. """ success: Boolean! } """ Release stage sorting options. """ input ReleaseStageSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ The type of a release stage, which determines the release's lifecycle state. Types include planned, started, completed, and canceled. Each pipeline must have at least one stage of each type, though only started stages may have multiple instances. """ enum ReleaseStageType { canceled completed planned started } """ Comparator for release stage type. """ input ReleaseStageTypeComparator { """ Matches the given value. """ eq: ReleaseStageType """ Matches any value in the list. An empty list matches nothing. """ in: [ReleaseStageType!] """ Excludes the given value. """ neq: ReleaseStageType """ Excludes every value in the list, and includes null. An empty list adds no restriction. """ nin: [ReleaseStageType!] """ Set to true to match resources with no value, or false to require a value. For example, `{ null: true }` finds unset values; `{ eq: null }` is not a substitute. """ null: Boolean } """ Changes to a started stage. Other stage types cannot be edited; omitted fields remain unchanged. """ input ReleaseStageUpdateInput { """ The UI color of the stage as a HEX string. """ color: String """ Whether sync skips this stage when no version is supplied. An explicit version can still target a release here. At least one started stage must remain unfrozen. """ frozen: Boolean """ The name of the stage. """ name: String """ Position among stages in the pipeline, in ascending order. """ position: Float } """ Release data to sync into a pipeline. Provide the pipeline identifier and commit SHA, then add issue or pull request references for work included in the release. Sync adds associations rather than replacing the existing issue list. """ input ReleaseSyncInput { """ The commit SHA associated with this release. """ commitSha: String! """ Debug information for release creation diagnostics. """ debugSink: ReleaseDebugSinkInput """ The description of the release. Pass null to clear an existing description. """ description: String """ Documents to add or update, matched by title within the release. Existing documents not listed here are kept, and [] makes no changes. Invalid or oversized document entries can be skipped without failing the release sync. """ documents: [ReleaseDocumentInput!] """ Issues to add to the release, identified by their human-readable identifier and the commit where each reference was found. Missing or archived issues are skipped. Existing issue associations are kept, so an empty list does not clear the release. """ issueReferences: [IssueReferenceInput!] """ External links to add or update, matched by URL. Existing links not listed here are kept, and [] makes no changes. Invalid links can be skipped without failing the release sync. """ links: [ReleaseLinkInput!] """ The name of the release. """ name: String """ The identifier of the pipeline this release belongs to. """ pipelineId: String! """ When true, an existing scheduled release keeps its stored commit SHA instead of taking this sync’s commit. Use this when syncing from a checkout behind the stored commit so the scan baseline does not move backwards. Has no effect on continuous pipelines. """ preserveStoredCommitSha: Boolean """ Pull or merge requests whose closing or contributing issues should be added to the release. Missing references are skipped. Supplying a reference indicates that the change shipped, even if its imported merge status has not updated yet. """ pullRequestReferences: [PullRequestReferenceInput!] """ Release notes covering this release. Upserts the existing release notes that cover only this release. """ releaseNotes: ReleaseNoteInput """ Information about the source repository. """ repository: RepositoryDataInput """ Issues to remove from the current release in a scheduled pipeline. Only existing release associations are removed; the issues themselves are kept. This field has no effect on continuous pipelines. """ revertedIssueReferences: [IssueReferenceInput!] """ The release version. Continuous pipelines default to the first seven characters of commitSha; a repeated version must have the same full commit SHA. Scheduled pipelines target this version when supplied, or select an open release when omitted. """ version: String } """ Release data for a sync operation: a commit SHA, optional issue and pull request references, and descriptive metadata. The pipeline is supplied by the containing input or access key. Existing issue associations are retained unless revertedIssueReferences removes them from a scheduled release. """ input ReleaseSyncInputBase { """ The commit SHA associated with this release. """ commitSha: String! """ Debug information for release creation diagnostics. """ debugSink: ReleaseDebugSinkInput """ The description of the release. Pass null to clear an existing description. """ description: String """ Documents to add or update, matched by title within the release. Existing documents not listed here are kept, and [] makes no changes. Invalid or oversized document entries can be skipped without failing the release sync. """ documents: [ReleaseDocumentInput!] """ Issues to add to the release, identified by their human-readable identifier and the commit where each reference was found. Missing or archived issues are skipped. Existing issue associations are kept, so an empty list does not clear the release. """ issueReferences: [IssueReferenceInput!] """ External links to add or update, matched by URL. Existing links not listed here are kept, and [] makes no changes. Invalid links can be skipped without failing the release sync. """ links: [ReleaseLinkInput!] """ The name of the release. """ name: String """ When true, an existing scheduled release keeps its stored commit SHA instead of taking this sync’s commit. Use this when syncing from a checkout behind the stored commit so the scan baseline does not move backwards. Has no effect on continuous pipelines. """ preserveStoredCommitSha: Boolean """ Pull or merge requests whose closing or contributing issues should be added to the release. Missing references are skipped. Supplying a reference indicates that the change shipped, even if its imported merge status has not updated yet. """ pullRequestReferences: [PullRequestReferenceInput!] """ Release notes covering this release. Upserts the existing release notes that cover only this release. """ releaseNotes: ReleaseNoteInput """ Information about the source repository. """ repository: RepositoryDataInput """ Issues to remove from the current release in a scheduled pipeline. Only existing release associations are removed; the issues themselves are kept. This field has no effect on continuous pipelines. """ revertedIssueReferences: [IssueReferenceInput!] """ The release version. Continuous pipelines default to the first seven characters of commitSha; a repeated version must have the same full commit SHA. Scheduled pipelines target this version when supplied, or select an open release when omitted. """ version: String } """ Selects a release by pipeline and optionally version. Without a version, the latest started release is used, or the planned release with the earliest target date when none is started. Supplied fields update that release; stage selects a stage by name. """ input ReleaseUpdateByPipelineInput { """ Optional release description to apply when updating the release. Pass null to clear it. """ description: String """ Documents to attach to the updated release. Existing documents with the same title are updated. """ documents: [ReleaseDocumentInput!] """ External links to attach to the updated release. """ links: [ReleaseLinkInput!] """ Optional release name to apply when updating the release. """ name: String """ The identifier of the pipeline. """ pipelineId: String! """ Release notes covering the updated release. """ releaseNotes: ReleaseNoteInput """ The stage name to set. First tries exact match, then falls back to case-insensitive matching with dashes/underscores treated as spaces. """ stage: String """ The version of the release to update. If not provided, the latest started release is updated, or else the planned release with the earliest target date. """ version: String } """ Base input for updating a release by pipeline. Contains optional version and stage name. The pipeline ID is provided separately or inferred from the access key. """ input ReleaseUpdateByPipelineInputBase { """ Optional release description to apply when updating the release. Pass null to clear it. """ description: String """ Documents to attach to the updated release. Existing documents with the same title are updated. """ documents: [ReleaseDocumentInput!] """ External links to attach to the updated release. """ links: [ReleaseLinkInput!] """ Optional release name to apply when updating the release. """ name: String """ Release notes covering the updated release. """ releaseNotes: ReleaseNoteInput """ The stage name to set. First tries exact match, then falls back to case-insensitive matching with dashes/underscores treated as spaces. """ stage: String """ The version of the release to update. If not provided, the latest started release is updated, or else the planned release with the earliest target date. """ version: String } """ Changes to a release selected by its ID. Omitted fields keep their values, and the release cannot move to another pipeline. Changing stageId updates lifecycle timestamps and may trigger issue rollover when completing a scheduled release. Backdating startedAt or completedAt before createdAt also moves createdAt back to the earliest lifecycle time. """ input ReleaseUpdateInput { """ The commit SHA associated with this release. """ commitSha: String """ Actual completion time, in the past. If earlier than startedAt and startedAt is omitted, also moves startedAt to this time. Cannot be cleared while the release is completed. """ completedAt: DateTime """ Release description. Pass null to clear it. """ description: String """ The name of the release. """ name: String """ UUID of a stage in this release's pipeline. Changing stages updates lifecycle dates and may roll open issues into the next release. """ stageId: String """ Planned start date in YYYY-MM-DD format. Pass null to clear it. """ startDate: TimelessDate """ Actual start time, in the past. If later than completedAt and completedAt is omitted, also moves completedAt to this time. Supply both dates to require exact ordering. """ startedAt: DateTime """ Planned completion date in YYYY-MM-DD format. Pass null to clear it. """ targetDate: TimelessDate """ The stored trash flag. Set true only on an already archived release; null clears the flag but leaves the release archived. Use releaseDelete to move a release to the trash and releaseUnarchive to restore it. """ trashed: Boolean """ The release’s version label, unique within its pipeline. If another active or archived release uses the label, the request fails. A trashed release holding that label is permanently deleted to free it. """ version: String } """ Payload for a release webhook. """ type ReleaseWebhookPayload { """ The time at which the entity was archived. """ archivedAt: String """ The time at which the release was canceled. """ canceledAt: String """ The commit SHA associated with this release. """ commitSha: String """ The time at which the release was completed. """ completedAt: String """ The time at which the entity was created. """ createdAt: String! """ The ID of the user who created the release. """ creatorId: String """ The release's description. """ description: String """ The ID of the entity. """ id: String! """ The issues associated with the release. """ issues: [IssueChildWebhookPayload!] """ The name of the release. """ name: String! """ The pipeline this release belongs to. """ pipeline: ReleasePipelineChildWebhookPayload """ The ID of the pipeline this release belongs to. """ pipelineId: String! """ The release's unique URL slug. """ slugId: String! """ The current stage of the release. """ stage: ReleaseStageChildWebhookPayload """ The ID of the current stage of the release. """ stageId: String! """ The estimated start date of the release. """ startDate: String """ The time at which the release was started. """ startedAt: String """ The estimated completion date of the release. """ targetDate: String """ Whether the release is in the trash bin. """ trashed: Boolean """ The time at which the entity was updated. """ updatedAt: String! """ The URL of the release. """ url: String! """ The version of the release. """ version: String } """ Metadata about the source code repository from which a release is being synced, including the hosting provider and repository coordinates. """ input RepositoryDataInput { """ The name of the repository. """ name: String! """ The owner of the repository (e.g., organization or user name). """ owner: String! """ Repository host: github, gitlab, or bitbucket. """ provider: String! """ The base URL of the repository on the hosting provider (e.g., 'https://github.com/linear/linear-app'). """ url: String! } """ A suggested code repository that may be relevant for implementing an issue. """ type RepositorySuggestion { """ Confidence score from 0.0 to 1.0. """ confidence: Float! """ Hostname of the Git service (e.g., 'github.com', 'github.company.com'). """ hostname: String """ The full name of the repository in owner/name format (e.g., 'acme/backend'). """ repositoryFullName: String! } """ The result of a repository suggestions query, containing the list of suggested repositories. """ type RepositorySuggestionsPayload { """ The suggested repositories. """ suggestions: [RepositorySuggestion!]! } """ Customer revenue sorting options. """ input RevenueSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A legacy grouping of projects, superseded by initiatives. Use Initiative and initiative mutations for new integrations; roadmap lists are empty and roadmap mutations are no longer supported. """ type Roadmap implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The roadmap's color. """ color: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the roadmap. """ creator: User! """ The description of the roadmap. """ description: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The name of the roadmap. """ name: String! """ The workspace of the roadmap. """ organization: Organization! """ The user who owns the roadmap. """ owner: User """ Deprecated. Always returns an empty connection. Use Initiative.projects. """ projects( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned projects. """ filter: ProjectFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ProjectConnection! """ The roadmap's unique URL slug. """ slugId: String! """ The sort order of the roadmap within the workspace. """ sortOrder: Float! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The canonical url for the roadmap. """ url: String! } """ The result of archiving or restoring a resource. """ type RoadmapArchivePayload implements ArchivePayload { """ The resource after the operation, when returned. This can be null when the mutation does not return a resource, including after deletion. Check `success` for the operation's result. """ entity: Roadmap """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Filters a related collection of legacy roadmaps. Use some or every to test its members and length to test its size, for example length: { eq: 0 } for an empty collection. Direct property filters act as some only when no collection clause is supplied. """ input RoadmapCollectionFilter { """ All of these collection conditions must match. Each can test a different member of the collection. """ and: [RoadmapCollectionFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the roadmap creator must satisfy. """ creator: UserFilter """ Filters that needs to be matched by all roadmaps. """ every: RoadmapFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ The number of related objects, before applying some or every. Use { eq: 0 } to find an empty collection. """ length: NumberComparator """ Comparator for the roadmap name. """ name: StringComparator """ At least one of these collection conditions must match. """ or: [RoadmapCollectionFilter!] """ Comparator for the roadmap slug ID. """ slugId: StringComparator """ Filters that needs to be matched by some roadmaps. """ some: RoadmapFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type RoadmapConnection { """ The page's results paired with their cursors. """ edges: [RoadmapEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Roadmap!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ Legacy roadmap creation input. roadmapCreate is no longer supported; use initiativeCreate. """ input RoadmapCreateInput { """ The roadmap's color. """ color: String """ The description of the roadmap. """ description: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The name of the roadmap. """ name: String! """ The owner of the roadmap. """ ownerId: String """ The sort order of the roadmap within the workspace. """ sortOrder: Float } """ A result and its pagination cursor. """ type RoadmapEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Roadmap! } """ Filters legacy roadmaps by name, slug, or creator. Supplied conditions must match together; use and and or to combine nested filters. """ input RoadmapFilter { """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [RoadmapFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that the roadmap creator must satisfy. """ creator: UserFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for the roadmap name. """ name: StringComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [RoadmapFilter!] """ Comparator for the roadmap slug ID. """ slugId: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The result of a roadmap mutation. """ type RoadmapPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The roadmap that was created or updated. """ roadmap: Roadmap! """ Whether the operation was successful. """ success: Boolean! } """ A legacy association between a roadmap and a project. Roadmap association operations are no longer supported. Use InitiativeToProject to include projects in initiatives and control their ordering. """ type RoadmapToProject implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The project that the roadmap is associated with. """ project: Project! """ The roadmap that the project is associated with. """ roadmap: Roadmap! """ The sort order of the project within the roadmap. """ sortOrder: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type RoadmapToProjectConnection { """ The page's results paired with their cursors. """ edges: [RoadmapToProjectEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [RoadmapToProject!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ Legacy roadmap association input. Use InitiativeToProjectCreateInput. """ input RoadmapToProjectCreateInput { """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The identifier of the project. """ projectId: String! """ The identifier of the roadmap. """ roadmapId: String! """ Legacy project position within the roadmap. """ sortOrder: Float } """ A result and its pagination cursor. """ type RoadmapToProjectEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: RoadmapToProject! } """ The result of a roadmap-to-project mutation. """ type RoadmapToProjectPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The roadmapToProject that was created or updated. """ roadmapToProject: RoadmapToProject! """ Whether the operation was successful. """ success: Boolean! } """ Legacy roadmap association update input. Use InitiativeToProjectUpdateInput. """ input RoadmapToProjectUpdateInput { """ Legacy project position within the roadmap. """ sortOrder: Float } """ Legacy roadmap update input. roadmapUpdate is no longer supported; use initiativeUpdate. """ input RoadmapUpdateInput { """ The roadmap's color. """ color: String """ The description of the roadmap. """ description: String """ The name of the roadmap. """ name: String """ The owner of the roadmap. """ ownerId: String """ The sort order of the roadmap within the workspace. """ sortOrder: Float } """ Issue root-issue sorting options. """ input RootIssueSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder """ The sort to apply to the root issues """ sort: IssueSortInput! } """ Which day count to use for SLA calculations. """ enum SLADayCountType { all onlyBusinessDays } """ Determines when timing begins for an SLA applied by a rule. """ enum SLAStartMode { issueCreation ruleMatch } """ Additional conditions for each resource type in a semantic search. Each filter applies only to results of its own type; setting an issue filter does not exclude projects or documents. Use the types argument to restrict which resource types are searched. """ input SemanticSearchFilters { """ Filters applied to documents. """ documents: DocumentFilter """ Filters applied to initiatives. """ initiatives: InitiativeFilter """ Filters applied to issues. """ issues: IssueFilter """ Filters applied to projects. """ projects: ProjectFilter } """ A relevance-ordered set of matches across the requested resource types. This endpoint returns one bounded result list rather than a paginated connection; use the type-specific search queries when you need cursor pagination. """ type SemanticSearchPayload { """ Always true. """ enabled: Boolean! @deprecated(reason: "Always true.") """ The list of matching search results, ordered by relevance score. """ results: [SemanticSearchResult!]! } """ One match from a search across several resource types. id identifies the matched resource, and type tells you which of the issue, project, initiative, or document fields to select. The other resource fields return null. """ type SemanticSearchResult implements Node { """ The document entity, if this search result is of type Document. Null for other result types. """ document: Document """ The resource's unique, stable identifier. Use this value in queries and mutations that accept the resource's ID. """ id: ID! """ The initiative entity, if this search result is of type Initiative. Null for other result types. """ initiative: Initiative """ The issue entity, if this search result is of type Issue. Null for other result types. """ issue: Issue """ The project entity, if this search result is of type Project. Null for other result types. """ project: Project """ The type of the semantic search result. """ type: SemanticSearchResultType! } """ The type of the semantic search result. """ enum SemanticSearchResultType { document initiative issue project } """ Whether to send notifications to connected desktop clients, push subscribers, or both. """ enum SendStrategy { desktop desktopAndPush desktopThenPush push } """ A custom domain that Linear can use to send Asks email on behalf of your workspace. Publish the returned dnsRecords in your domain’s DNS configuration, then wait for verification or request a refresh through the intake address. Domain ownership, DKIM, and MAIL FROM verification must all complete before canSendFromCustomDomain becomes true. A record may exist while setup is still pending. """ type SesDomainIdentity implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ Whether domain ownership, DKIM, and MAIL FROM verification are complete and the domain can send email. """ canSendFromCustomDomain: Boolean! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who configured the domain. Null if the creator is unavailable. """ creator: User """ The DNS records your domain needs for ownership verification, email signing, and delivery. Each record gives its type, name, and expected content. isVerified reports whether the latest DNS lookup confirmed that record; publishing records does not make verification immediate because DNS changes need time to become visible. """ dnsRecords: [SesDomainIdentityDnsRecord!]! """ The domain of the SES domain identity. """ domain: String! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The workspace of the SES domain identity. """ organization: Organization! """ The AWS region of the SES domain identity. """ region: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A DNS record required to verify a custom email sending domain. """ type SesDomainIdentityDnsRecord { """ The content of the DNS record. """ content: String! """ Whether the latest DNS check confirmed this record. False also covers failed or timed-out lookups. """ isVerified: Boolean! """ The name of the DNS record. """ name: String! """ The type of the DNS record. """ type: String! } """ Customer size sorting options. """ input SizeSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ An enabled SLA workflow that may apply to issues in the requested team. The rule either sets an SLA or removes one. Team and status conditions have been checked for the team, but other conditions still need to match an individual issue; this is configuration, not an issue's resolved deadline. """ type SlaConfiguration { """ The workflow conditions that determine when this SLA rule applies. """ conditions: JSONObject! """ The identifier of the SLA rule. """ id: String! """ The name of the SLA rule. """ name: String! """ Whether the rule removes an SLA instead of setting one. """ removesSla: Boolean! """ SLA duration: milliseconds for calendar days, or a count of business days. Null when the rule removes the SLA. """ sla: Float """ How the SLA duration is counted. Null when the rule removes the SLA. """ slaType: SLADayCountType """ When SLA timing begins. Defaults to ruleMatch when a stored rule does not specify a start mode. Null when the rule removes an SLA. """ startMode: SLAStartMode } """ An issue's SLA risk or outcome. Canceled issues and issues without an SLA have no status. """ enum SlaStatus { """ The issue is unfinished and its SLA deadline has passed. """ Breached """ The issue was completed before its SLA deadline. """ Completed """ The issue was completed at or after its SLA deadline. """ Failed """ The issue is unfinished and has reached its high-risk threshold. """ HighRisk """ The issue is unfinished and has not reached a risk threshold. """ LowRisk """ The issue is unfinished and has reached its medium-risk threshold. """ MediumRisk } """ Conditions on an issue’s SLA state, such as whether it is at risk or has breached. Use the SlaStatus values rather than comparing the display text. """ input SlaStatusComparator { """ Matches the given value. """ eq: SlaStatus """ Matches any value in the list. An empty list matches nothing. """ in: [SlaStatus!] """ Excludes the given value. """ neq: SlaStatus """ Excludes every value in the list, and includes null. An empty list adds no restriction. """ nin: [SlaStatus!] """ Set to true to match resources with no value, or false to require a value. For example, `{ null: true }` finds unset values; `{ eq: null }` is not a substitute. """ null: Boolean } """ Issue SLA status sorting options. """ input SlaStatusSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A Linear team offered as a destination for Asks created from a Slack channel. hasDefaultAsk controls whether that team's default Ask template is available in the channel; the team ID is a Linear UUID, not a Slack workspace ID. """ type SlackAsksTeamSettings { """ Whether the default Asks template is enabled in the given channel for this team. """ hasDefaultAsk: Boolean! """ The Linear team ID. """ id: String! } """ Connected Slack notification channel and any remaining setup steps. """ type SlackChannelConnectPayload { """ Whether the bot needs to be manually added to the channel. """ addBot: Boolean! """ GitHub-specific details for the operation. Populated by GitHub-related mutations only. """ gitHub: GitHubIntegrationConnectDetails """ The integration that was created or updated. """ integration: Integration """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the Slack workspace needs the main Linear Slack integration for full channel support. The notification connection was created, but an administrator should complete that workspace connection. """ nudgeToConnectMainSlackIntegration: Boolean """ Whether the main Linear Slack integration needs additional OAuth scopes for full channel support. Reauthorize that integration to grant the missing scopes. """ nudgeToUpdateMainSlackIntegration: Boolean """ Whether the operation was successful. """ success: Boolean! } """ An Asks intake destination in Slack, with the teams users can choose, automatic issue-creation settings, and updates posted back to the thread. The mapping may represent a connected channel or a built-in destination such as App home or all public channels. botAdded indicates whether the app has been added to the channel; creating a mapping does not always complete that step. """ type SlackChannelNameMapping { """ Whether or not to use AI to generate titles for Asks created in this channel. """ aiTitles: Boolean """ Whether or not @-mentioning the bot should automatically create an Ask with the message. """ autoCreateOnBotMention: Boolean """ Whether or not using the :ticket: emoji in this channel should automatically create Asks. """ autoCreateOnEmoji: Boolean """ Whether or not top-level messages in this channel should automatically create Asks. """ autoCreateOnMessage: Boolean """ The optional template ID to use for Asks auto-created in this channel. If not set, auto-created Asks won't use any template. """ autoCreateTemplateId: String """ Whether or not the Linear Asks bot has been added to this Slack channel. """ botAdded: Boolean """ The Slack channel ID. """ id: String! """ Whether or not the Slack channel is private. """ isPrivate: Boolean """ Whether or not the Slack channel is shared with an external org. """ isShared: Boolean """ The Slack channel name. """ name: String! """ Whether or not synced Slack threads should be updated with a message when their Ask is accepted from triage. """ postAcceptedFromTriageUpdates: Boolean """ Whether or not synced Slack threads should be updated with a message when their Ask has an updated assignee. """ postAssignmentUpdates: Boolean """ Whether or not synced Slack threads should be updated with a message and emoji when their Ask is canceled. """ postCancellationUpdates: Boolean """ Whether or not synced Slack threads should be updated with a message and emoji when their Ask is completed. """ postCompletionUpdates: Boolean """ Whether or not synced Slack threads should be updated with a message when their Ask's SLA is at risk or breached. """ postSlaUpdates: Boolean """ Which teams are connected to the channel and settings for those teams. """ teams: [SlackAsksTeamSettings!]! } """ Filters how an issue was created. Match an integration or intake service through `subType`, or a creating workflow through `workflowDefinitionId`. Supplied conditions are combined with AND. The `null` condition tests for an external integration or intake source, so API-created and workflow-created issues can match `{ null: true }`. """ input SourceMetadataComparator { """ Null constraint. When true, matches issues without an external source: issues with no source metadata and issues created through the API, an OAuth application, or a loop. When false, matches issues created by an integration or an intake source such as email. """ null: Boolean """ Filters the integration or intake service that created the issue, using its service identifier, such as `github` or `email`. """ subType: SubTypeComparator """ Filters the workflow definition that created the issue. Use its UUID; this does not match workflows that only modified the issue later. """ workflowDefinitionId: WorkflowDefinitionIdComparator } """ Filters an attachment's source using literal string comparisons. Matches its stored source type and, for API queries, the linked URL's domain or hostname. For example, a domain filter can match links even when no integration source type is stored. Matching is case-sensitive unless the operator says otherwise. """ input SourceTypeComparator { """ Matches strings containing this text. Case-sensitive. """ contains: String """ Matches strings containing this text, ignoring case. """ containsIgnoreCase: String """ Matches strings containing this text, ignoring case and accents. """ containsIgnoreCaseAndAccent: String """ Matches strings ending with this text. Case-sensitive. """ endsWith: String """ Matches the given value. """ eq: String """ Matches the full string, ignoring case. """ eqIgnoreCase: String """ Values to include in the match. For scalar comparisons, matches any listed value. An empty list matches nothing. """ in: [String!] """ Excludes the given value. """ neq: String """ Excludes the full string, ignoring case. """ neqIgnoreCase: String """ Values to exclude from the match. For scalar comparisons, an empty list adds no restriction. """ nin: [String!] """ Excludes strings containing this text. Case-sensitive. """ notContains: String """ Excludes strings containing this text, ignoring case. """ notContainsIgnoreCase: String """ Excludes strings ending with this text. Case-sensitive. """ notEndsWith: String """ Excludes strings starting with this text. Case-sensitive. """ notStartsWith: String """ Matches strings starting with this text, with case preserved. """ startsWith: String """ Matches strings starting with this text, ignoring case. """ startsWithIgnoreCase: String } """ The SAML sign-in destination found for an email address. Use samlSsoUrl to start the identity-provider flow; resolving this URL does not authenticate the user. """ type SsoUrlFromEmailResponse { """ SAML SSO sign-in URL. """ samlSsoUrl: String! """ Whether the operation was successful. """ success: Boolean! } """ Project start date sorting options. """ input StartDateSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Filters an array of strings by its length and contents. Combine `length` with either `some` or `every`; those two cannot be used together. Use `{ length: { eq: 0 } }` to find empty or missing arrays. See `StringItemComparator` for the set-based behavior of `in` and `nin`. """ input StringArrayComparator { """ Applies each string condition to every item. For example, `{ startsWith: "ENG" }` requires a nonempty array whose items all start with `ENG`. The `in` and `nin` operators compare whole sets of values. Cannot be combined with `some`. """ every: StringItemComparator """ Compares the number of items using nonnegative integers. Empty and missing arrays both have length zero. This condition must match alongside any `some` or `every` condition. """ length: NumberComparator """ Requires a matching item for each supplied string condition; different items may satisfy different conditions. For example, `{ eq: "ENG" }` requires an item equal to `ENG`. Use `nin` to exclude arrays containing any value from a list. Cannot be combined with `every`. """ some: StringItemComparator } """ Compares text literally, with all supplied conditions combined with AND. Matching is case-sensitive unless the operator says otherwise; `%` and `_` are ordinary characters, not wildcards. Use `eq` to match a full string or `containsIgnoreCase` to find text anywhere in it. Prefix, suffix, substring, and case-insensitive operators ignore empty strings. """ input StringComparator { """ Matches strings containing this text. Case-sensitive. """ contains: String """ Matches strings containing this text, ignoring case. """ containsIgnoreCase: String """ Matches strings containing this text, ignoring case and accents. """ containsIgnoreCaseAndAccent: String """ Matches strings ending with this text. Case-sensitive. """ endsWith: String """ Matches the given value. """ eq: String """ Matches the full string, ignoring case. """ eqIgnoreCase: String """ Values to include in the match. For scalar comparisons, matches any listed value. An empty list matches nothing. """ in: [String!] """ Excludes the given value. """ neq: String """ Excludes the full string, ignoring case. """ neqIgnoreCase: String """ Values to exclude from the match. For scalar comparisons, an empty list adds no restriction. """ nin: [String!] """ Excludes strings containing this text. Case-sensitive. """ notContains: String """ Excludes strings containing this text, ignoring case. """ notContainsIgnoreCase: String """ Excludes strings ending with this text. Case-sensitive. """ notEndsWith: String """ Excludes strings starting with this text. Case-sensitive. """ notStartsWith: String """ Matches strings starting with this text, with case preserved. """ startsWith: String """ Matches strings starting with this text, ignoring case. """ startsWithIgnoreCase: String } """ String conditions for array items. All conditions must pass, but `some` can match a different item for each. `some.in` tests overlap and `some.nin` requires none; `every.in` compares sets, ignoring order and duplicates, and `every.nin` rejects that set. Empty `in` or `nin` lists match nothing. Single-value conditions ignore empty strings. Empty arrays match `neq`, but no other equality or text condition. `containsIgnoreCaseAndAccent` has no effect on array items. """ input StringItemComparator { """ Matches strings containing this text. Case-sensitive. """ contains: String """ Matches strings containing this text, ignoring case. """ containsIgnoreCase: String """ Matches strings containing this text, ignoring case and accents. """ containsIgnoreCaseAndAccent: String """ Matches strings ending with this text. Case-sensitive. """ endsWith: String """ Matches the given value. """ eq: String """ Matches the full string, ignoring case. """ eqIgnoreCase: String """ Values to include in the match. For scalar comparisons, matches any listed value. An empty list matches nothing. """ in: [String!] """ Excludes the given value. """ neq: String """ Excludes the full string, ignoring case. """ neqIgnoreCase: String """ Values to exclude from the match. For scalar comparisons, an empty list adds no restriction. """ nin: [String!] """ Excludes strings containing this text. Case-sensitive. """ notContains: String """ Excludes strings containing this text, ignoring case. """ notContainsIgnoreCase: String """ Excludes strings ending with this text. Case-sensitive. """ notEndsWith: String """ Excludes strings starting with this text. Case-sensitive. """ notStartsWith: String """ Matches strings starting with this text, with case preserved. """ startsWith: String """ Matches strings starting with this text, ignoring case. """ startsWithIgnoreCase: String } """ Compares the integration or intake source recorded on an issue, such as `github`, `slack`, or `email`. Values are service identifiers, not display names. Use `{ null: true }` to find issues without an integration or intake subtype. """ input SubTypeComparator { """ Matches the given value. """ eq: String """ Matches any value in the list. An empty list matches nothing. """ in: [String!] """ Excludes the given value. """ neq: String """ Excludes every value in the list, and includes null. An empty list adds no restriction. """ nin: [String!] """ Set to true to match resources with no value, or false to require a value. For example, `{ null: true }` finds unset values; `{ eq: null }` is not a substitute. """ null: Boolean } type Subscription { """ Triggered when an agent activity is archived """ agentActivityArchived: AgentActivity! """ Triggered when an agent activity is created """ agentActivityCreated: AgentActivity! """ Triggered when an agent activity is updated """ agentActivityUpdated: AgentActivity! """ Triggered when an agent session is created """ agentSessionCreated: AgentSession! """ Triggered when an agent session is updated """ agentSessionUpdated: AgentSession! """ Triggered when a comment is archived """ commentArchived: Comment! """ Triggered when a comment is created """ commentCreated: Comment! """ Triggered when a comment is deleted """ commentDeleted: Comment! """ Triggered when a comment is unarchived """ commentUnarchived: Comment! """ Triggered when a comment is updated """ commentUpdated: Comment! """ Triggered when a cycle is archived """ cycleArchived: Cycle! """ Triggered when a cycle is created """ cycleCreated: Cycle! """ Triggered when a cycle is updated """ cycleUpdated: Cycle! """ Triggered when a document is archived """ documentArchived: Document! """ Triggered when a document content is created """ documentContentCreated: DocumentContent! """ Triggered when a document content draft is created """ documentContentDraftCreated: DocumentContentDraft! """ Triggered when a document content draft is deleted """ documentContentDraftDeleted: DocumentContentDraft! """ Triggered when a document content draft is updated """ documentContentDraftUpdated: DocumentContentDraft! """ Triggered when a document content revision is created """ documentContentRevisionCreated: DocumentContentRevision! """ Triggered when a document content revision is deleted """ documentContentRevisionDeleted: DocumentContentRevision! """ Triggered when a document content revision is updated """ documentContentRevisionUpdated: DocumentContentRevision! """ Triggered when a document content is updated """ documentContentUpdated: DocumentContent! """ Triggered when a document is created """ documentCreated: Document! """ Triggered when a document is unarchived """ documentUnarchived: Document! """ Triggered when a document is updated """ documentUpdated: Document! """ Triggered when a draft is created """ draftCreated: Draft! """ Triggered when a draft is deleted """ draftDeleted: Draft! """ Triggered when a draft is updated """ draftUpdated: Draft! """ Triggered when a favorite is created """ favoriteCreated: Favorite! """ Triggered when a favorite is deleted """ favoriteDeleted: Favorite! """ Triggered when a favorite is updated """ favoriteUpdated: Favorite! """ Triggered when an initiative is created """ initiativeCreated: Initiative! """ Triggered when an initiative is deleted """ initiativeDeleted: Initiative! """ Triggered when an initiative is updated """ initiativeUpdated: Initiative! """ Triggered when an issue is archived """ issueArchived: Issue! """ Triggered when an issue is created """ issueCreated( """ Optional filter for issue subscription events. """ filter: IssueSubscriptionFilter ): Issue! """ Triggered when an issue history is created """ issueHistoryCreated: IssueHistory! """ Triggered when an issue history is updated """ issueHistoryUpdated: IssueHistory! """ Triggered when an issue label is created """ issueLabelCreated: IssueLabel! """ Triggered when an issue label is deleted """ issueLabelDeleted: IssueLabel! """ Triggered when an issue label is updated """ issueLabelUpdated: IssueLabel! """ Triggered when an issue relation is created """ issueRelationCreated: IssueRelation! """ Triggered when an issue relation is deleted """ issueRelationDeleted: IssueRelation! """ Triggered when an issue relation is updated """ issueRelationUpdated: IssueRelation! """ Triggered when an issue is unarchived """ issueUnarchived: Issue! """ Triggered when an issue is updated """ issueUpdated( """ Optional filter for issue subscription events. """ filter: IssueSubscriptionFilter ): Issue! """ Triggered when a notification is archived """ notificationArchived: Notification! """ Triggered when a notification is created """ notificationCreated: Notification! """ Triggered when a notification is deleted """ notificationDeleted: Notification! """ Triggered when a notification is unarchived """ notificationUnarchived: Notification! """ Triggered when a notification is updated """ notificationUpdated: Notification! """ Triggered when an organization is updated """ organizationUpdated: Organization! """ Triggered when a project is archived """ projectArchived: Project! """ Triggered when a project is created """ projectCreated: Project! """ Triggered when a project label is created """ projectLabelCreated: ProjectLabel! """ Triggered when a project label is deleted """ projectLabelDeleted: ProjectLabel! """ Triggered when a project label is updated """ projectLabelUpdated: ProjectLabel! """ Triggered when a project is unarchived """ projectUnarchived: Project! """ Triggered when a project update is archived """ projectUpdateArchived: ProjectUpdate! """ Triggered when a project update is created """ projectUpdateCreated: ProjectUpdate! """ Triggered when a project update is deleted """ projectUpdateDeleted: ProjectUpdate! """ Triggered when a project update is updated """ projectUpdateUpdated: ProjectUpdate! """ Triggered when a project is updated """ projectUpdated: Project! """ Triggered when a roadmap is created """ roadmapCreated: Roadmap! """ Triggered when a roadmap is deleted """ roadmapDeleted: Roadmap! """ Triggered when a roadmap is updated """ roadmapUpdated: Roadmap! """ Triggered when a team is created """ teamCreated: Team! """ Triggered when a team is deleted """ teamDeleted: Team! """ Triggered when a team membership is created """ teamMembershipCreated: TeamMembership! """ Triggered when a team membership is deleted """ teamMembershipDeleted: TeamMembership! """ Triggered when a team membership is updated """ teamMembershipUpdated: TeamMembership! """ Triggered when a team is updated """ teamUpdated: Team! """ Triggered when an user is created """ userCreated: User! """ Triggered when an user settings is updated """ userSettingsUpdated: UserSettings! """ Triggered when an user is updated """ userUpdated: User! """ Triggered when a workflow state is archived """ workflowStateArchived: WorkflowState! """ Triggered when a workflow state is created """ workflowStateCreated: WorkflowState! """ Triggered when a workflow state is updated """ workflowStateUpdated: WorkflowState! } """ Result of an operation that returns a success flag. """ type SuccessPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ 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. """ type Summary implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The summary content as a ProseMirror document containing the AI-generated summary text. """ content: JSONObject! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The evaluation log ID for this summary generation, used for tracking and debugging AI output quality. Null if not available. """ evalLogId: String """ The time at which the summary content was generated or last regenerated. """ generatedAt: DateTime! """ The current generation status of the summary, indicating whether generation is in progress, completed, or failed. """ generationStatus: SummaryGenerationStatus! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The issue that this summary was generated for. """ issue: Issue! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ The generation status of a summary. """ enum SummaryGenerationStatus { completed failed pending } """ A Linear comment thread associated with an external conversation, issue, or message. Use url to open the source when a link is available, isConnected to check the retained sync relation, and the personal-integration fields to determine whether the current user needs to connect an account before replying. These fields describe stored connection state, not a live delivery test. """ type SyncedExternalThread { """ 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. """ displayName: String """ The external source ID, or the email message ID for email threads. Null when unavailable. """ id: ID """ Whether the thread retains its external connection and has not been explicitly disconnected. This does not guarantee that comment delivery succeeds. """ isConnected: Boolean! """ 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. """ isPersonalIntegrationConnected: Boolean! """ 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. """ isPersonalIntegrationRequired: Boolean! """ A human-readable display name for the external source (e.g., 'Slack', 'Jira', 'GitHub'). """ name: String """ 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. """ subType: String """ The source category, such as integration. subType identifies the external service. """ type: String! """ 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. """ url: String } """ Project target date sorting options. """ input TargetDateSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A group within a workspace that owns issues and defines their workflow. Teams have members, issue statuses, cycles, and settings, and can share projects with other teams. Sub-teams can inherit resources from a parent, while team visibility controls access. """ type Team implements Node { """ The cycle containing the current time. Null if the team has no active cycle. """ activeCycle: Cycle """ Whether to enable AI discussion summaries for issues in this team. """ aiDiscussionSummariesEnabled: Boolean! """ Whether to enable resolved thread AI summaries. """ aiThreadSummariesEnabled: Boolean! """ Whether all members in the workspace can join the team. Only used for public teams. """ allMembersCanJoin: Boolean """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ Months after which closed issues are automatically archived: 1, 3, 6, 9, or 12. """ autoArchivePeriod: Float! """ Whether child issues should automatically close when their parent issue is closed """ autoCloseChildIssues: Boolean """ Whether parent issues should automatically close when all child issues are closed """ autoCloseParentIssues: Boolean """ Period after which issues are automatically closed in months. Null/undefined means disabled. """ autoClosePeriod: Float """ The canceled workflow state which auto closed issues will be set to. Defaults to the first canceled state. """ autoCloseStateId: String """ The team's color. """ color: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Calendar feed URL (iCal) for cycles. """ cycleCalenderUrl: String! """ The number of weeks between consecutive cycles. A value of 0 schedules the next cycle immediately after the current one. """ cycleCooldownTime: Float! """ The length of each cycle, in weeks. Together with cycleCooldownTime, this determines the repeating cycle schedule. """ cycleDuration: Float! """ Whether completing an issue automatically adds it to the current cycle. """ cycleIssueAutoAssignCompleted: Boolean! """ Whether starting an issue automatically adds it to the current cycle. """ cycleIssueAutoAssignStarted: Boolean! """ Auto assign issues to current cycle if in active status. """ cycleLockToActive: Boolean! """ The day of the week that a new cycle starts (0 = Sunday, 1 = Monday, ..., 6 = Saturday). """ cycleStartDay: Float! """ Cycles associated with the team. """ cycles( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned cycles. """ filter: CycleFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): CycleConnection! """ Whether the team plans work in cycles. """ cyclesEnabled: Boolean! """ The estimate used in progress calculations for issues without an explicit estimate. A value of 1 makes unestimated issues contribute to scope; 0 excludes their weight from estimate-based totals. """ defaultIssueEstimate: Float! """ The default workflow state into which issues are set when they are opened by team members. """ defaultIssueState: WorkflowState """ The team’s default project template. Public API callers can apply it with ProjectCreateInput.useDefaultTemplate when this is the first supplied team. Null if no default is configured. """ defaultProjectTemplate: Template """ The default issue template for members of this team. Null if the team has no member template configured. """ defaultTemplateForMembers: Template """ The id of the default template to use for new issues created by members of the team. """ defaultTemplateForMembersId: String @deprecated(reason: "Use defaultTemplateForMembers instead") """ The default issue template for users who are not members of this team. Null if no non-member template is configured. """ defaultTemplateForNonMembers: Template """ The id of the default template to use for new issues created by non-members of the team. """ defaultTemplateForNonMembersId: String @deprecated(reason: "Use defaultTemplateForNonMembers instead") """ The team's description. """ description: String """ The name of the team including its parent team name if it has one. """ displayName: String! """ The workflow state into which issues are moved when a PR has been opened as draft. """ draftWorkflowState: WorkflowState @deprecated(reason: "Use team.gitAutomationStates instead.") """ Rules that change issue status in response to Git events. """ gitAutomationStates( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): GitAutomationStateConnection! """ Whether to group recent issue history entries. """ groupIssueHistory: Boolean! """ The icon of the team. """ icon: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Whether the team should inherit its estimation settings from its parent. Only applies to sub-teams. """ inheritIssueEstimation: Boolean! """ Whether the team should inherit its workflow statuses from its parent. Only applies to sub-teams. """ inheritWorkflowStatuses: Boolean! """ Whether team initiatives are enabled and shown in the team's sidebar. """ initiativesEnabled: Boolean! """ Settings for all integrations associated with that team. """ integrationsSettings: IntegrationsSettings """ [DEPRECATED] Unique hash for the team to be used in invite URLs. """ inviteHash: String! @deprecated(reason: "Not used anymore, simply returning an empty string.") """ The total number of issues in the team. By default excludes archived issues; use the includeArchived argument to include them. """ issueCount( """ Include archived issues in the count. """ includeArchived: Boolean = false ): Int! """ Whether to allow zeros in issues estimates. """ issueEstimationAllowZero: Boolean! """ Whether to add additional points to the estimate scale. """ issueEstimationExtended: Boolean! """ The issue estimation type to use. Must be one of "notUsed", "exponential", "fibonacci", "linear", "tShirt". """ issueEstimationType: String! """ [DEPRECATED] Whether issues without priority should be sorted first. """ issueOrderingNoPriorityFirst: Boolean! @deprecated(reason: "This setting is no longer in use.") """ [DEPRECATED] Whether to move issues to bottom of the column when changing state. """ issueSortOrderDefaultToBottom: Boolean! @deprecated(reason: "Use setIssueSortOrderOnStateChange instead.") """ Issues belonging to the team. Supports filtering and optional inclusion of sub-team issues. """ issues( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Include issues from sub-teams. """ includeSubTeams: Boolean = false """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueConnection! """ The team's unique key, used as a prefix in issue identifiers (e.g., 'ENG' in 'ENG-123') and in URLs. """ key: String! """ Labels associated with the team. """ labels( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issue labels. """ filter: IssueLabelFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueLabelConnection! """ The number of initiatives led by this team that would be deleted along with it. Counts every led initiative, including ones not otherwise visible to the caller, to mirror what deleting the team cascades. """ ledInitiativeCount: Int! """ Loops owned by the team that are visible to the requesting user. Includes enabled and disabled loops. """ loops( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): WorkflowDefinitionConnection! """ [DEPRECATED] No longer in use. Duplicates are now system-managed via the native duplicate state. """ markedAsDuplicateWorkflowState: WorkflowState @deprecated(reason: "Duplicates are now system-managed via the native duplicate state.") """ Users who are members of this team. Supports filtering and pagination. """ members( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned users. """ filter: UserFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Include disabled and suspended accounts. Defaults to false. """ includeDisabled: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned users. """ sort: [UserSortInput!] ): UserConnection! """ [ALPHA] The membership of the given user in the team. """ membership( """ The user ID. """ userId: String! ): TeamMembership """ Membership records linking users to this team. Use these when you need each user’s owner flag or personal team ordering; use members when you only need user profiles. """ memberships( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): TeamMembershipConnection! """ The workflow state into which issues are moved when a PR has been merged. """ mergeWorkflowState: WorkflowState @deprecated(reason: "Use team.gitAutomationStates instead.") """ The workflow state into which issues are moved when a PR is ready to be merged. """ mergeableWorkflowState: WorkflowState @deprecated(reason: "Use team.gitAutomationStates instead.") """ The team's name. """ name: String! """ The workspace that the team belongs to. """ organization: Organization! """ The team directly above this one in the hierarchy. A sub-team can inherit settings and resources from its parent. Null for a top-level team. """ parent: Team """ Whether the team is private. Private teams are only visible to their members and require an explicit invitation to join. """ private: Boolean! @deprecated(reason: "Use `Team.visibility` instead.") """ Projects associated with this team. Projects can be shared with other teams. Set includeSubTeams to true to include projects associated with descendant teams as well. """ projects( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned projects. """ filter: ProjectFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ Include projects from sub-teams. """ includeSubTeams: Boolean = false """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy """ Sort returned projects. """ sort: [ProjectSortInput!] ): ProjectConnection! """ Release pipelines associated with the team. """ releasePipelines( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned release pipelines. """ filter: ReleasePipelineFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): ReleasePipelineConnection! """ Whether an issue needs to have a priority set before leaving triage. """ requirePriorityToLeaveTriage: Boolean! """ The time the team was retired from active use. Retired teams retain their data but no longer accept new issues or members. Null when the team is active; retirement is separate from archiving a team for deletion. """ retiredAt: DateTime """ The workflow state into which issues are moved when a review has been requested for the PR. """ reviewWorkflowState: WorkflowState @deprecated(reason: "Use team.gitAutomationStates instead.") """ The SCIM group name for the team. """ scimGroupName: String """ Whether the team is managed by a SCIM integration. SCIM-managed teams have their membership controlled by the identity provider. """ scimManaged: Boolean! """ Security settings for the team, including role-based restrictions for issue sharing, label management, member management, template management, and agent skills. """ securitySettings: JSONObject! """ Where an issue is placed after a status change: first, last, or noAction to keep its position. """ setIssueSortOrderOnStateChange: String! """ Whether to send new issue comment notifications to Slack. """ slackIssueComments: Boolean! @deprecated(reason: "No longer in use") """ Whether to send new issue status updates to Slack. """ slackIssueStatuses: Boolean! @deprecated(reason: "No longer in use") """ Whether to send new issue notifications to Slack. """ slackNewIssue: Boolean! @deprecated(reason: "No longer is use") """ The workflow state into which issues are moved when a PR has been opened. """ startWorkflowState: WorkflowState @deprecated(reason: "Use team.gitAutomationStates instead.") """ Issue statuses available to the team, including inherited statuses. """ states( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned workflow states. """ filter: WorkflowStateFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): WorkflowStateConnection! """ Templates associated with the team. """ templates( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned templates. """ filter: NullableTemplateFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): TemplateConnection! """ The IANA time zone used for team schedules, such as Europe/Helsinki. Defaults to America/Los_Angeles. """ timezone: String! """ 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. """ triageEnabled: Boolean! """ The workflow state into which issues are set when they are opened by non-team members or integrations if triage is enabled. """ triageIssueState: WorkflowState """ The team’s triage assignment rules. Null if none are configured. """ triageResponsibility: TriageResponsibility """ How many upcoming cycles to create. """ upcomingCycleCount: Float! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ Whether the viewer can add themselves to the team. False when the viewer is already a member, the team is archived, retired, or SCIM-managed, the viewer lacks the plan access or permission to add themselves, or the viewer has reached their team membership limit. Runs the same checks `teamMembershipCreate` applies to a viewer joining on their own. """ viewerCanJoin: Boolean! """ Whether the viewer can remove themselves from the team. False when the viewer is not a member, the team is SCIM-managed, the viewer is an app user the team does not accept, or leaving would leave the viewer without an active team. Otherwise mirrors the checks `teamMembershipDelete` applies to a viewer leaving on their own. """ viewerCanLeave: Boolean! """ The viewer's membership in the team. Null when the viewer is not a member. """ viewerMembership: TeamMembership """ The visibility of the team. Returns public for teams visible to all workspace members, private for teams visible only to members, and restricted for non-private teams inside a private-team boundary. """ visibility: TeamVisibility! """ Webhooks associated with the team. """ webhooks( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): WebhookConnection! } """ The result of archiving or restoring a resource. """ type TeamArchivePayload implements ArchivePayload { """ The resource after the operation, when returned. This can be null when the mutation does not return a resource, including after deletion. Check `success` for the operation's result. """ entity: Team """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Certain properties of a team. """ type TeamChildWebhookPayload { """ The ID of the team. """ id: String! """ The key of the team. """ key: String! """ The name of the team. """ name: String! } """ Filters a related collection of teams. Use some or every to test its members and length to test its size, for example length: { eq: 0 } for an empty collection. Direct property filters act as some only when no collection clause is supplied. """ input TeamCollectionFilter { """ Filters that the team's ancestors must satisfy. """ ancestors: TeamCollectionFilter """ All of these collection conditions must match. Each can test a different member of the collection. """ and: [TeamCollectionFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters that needs to be matched by all teams. """ every: TeamFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ The number of related objects, before applying some or every. Use { eq: 0 } to find an empty collection. """ length: NumberComparator """ At least one of these collection conditions must match. """ or: [TeamCollectionFilter!] """ Conditions on a team’s immediate parent. Use { null: true } to require a top-level team. """ parent: NullableTeamFilter """ Filters that needs to be matched by some teams. """ some: TeamFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type TeamConnection { """ The page's results paired with their cursors. """ edges: [TeamEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Team!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The name and initial settings for a new team. Omitted settings use the team defaults. When teamCreate copies settings from another team, the copied settings replace the corresponding input values, except an explicit private value. The current user becomes a member and, for private teams or plans with team owners, an owner. """ input TeamCreateInput { """ Months after which closed issues are automatically archived: 1, 3, 6, 9, or 12. """ autoArchivePeriod: Float """ Months of inactivity before issues are automatically closed: 1, 3, 6, 9, or 12. Null disables automatic closing. """ autoClosePeriod: Float """ The canceled workflow state which auto closed issues will be set to. """ autoCloseStateId: String """ The color of the team. """ color: String """ The number of weeks between cycles, from 0 to 3. A value of 0 creates consecutive cycles and is the standard default. """ cycleCooldownTime: Int """ The cycle length in weeks, from 1 to 8. The standard default is 2 weeks; copying another team’s settings can supply a different value. """ cycleDuration: Int """ Whether completing an issue automatically adds it to the current cycle. """ cycleIssueAutoAssignCompleted: Boolean """ Whether starting an issue automatically adds it to the current cycle. """ cycleIssueAutoAssignStarted: Boolean """ Only allow issues with cycles in Active Issues. """ cycleLockToActive: Boolean """ The weekday on which cycles start, from 0 for Sunday to 6 for Saturday. The standard default is 1, Monday. Cycle boundaries use the team’s timezone. """ cycleStartDay: Float """ Whether the team uses cycles. """ cyclesEnabled: Boolean """ The estimate used in progress calculations for an issue without an explicit estimate: 0 or 1. The standard default is 1. This does not assign an estimate to the issue itself. """ defaultIssueEstimate: Float """ The identifier of the default project template of this team. """ defaultProjectTemplateId: String """ The identifier of the default template for members of this team. """ defaultTemplateForMembersId: String """ The identifier of the default template for non-members of this team. """ defaultTemplateForNonMembersId: String """ The description of the team. """ description: String """ Whether to group recent issue history entries. """ groupIssueHistory: Boolean """ The icon of the team. """ icon: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ Whether the team should inherit estimation settings from its parent. Only applies to sub-teams. """ inheritIssueEstimation: Boolean """ Whether initiatives are shown in the team's sidebar. """ initiativesEnabled: Boolean """ Whether to allow zeros in issues estimates. """ issueEstimationAllowZero: Boolean """ Whether to add additional points to the estimate scale. """ issueEstimationExtended: Boolean """ The issue estimation type to use. Must be one of "notUsed", "exponential", "fibonacci", "linear", "tShirt". """ issueEstimationType: String """ Whether issue sharing is enabled for this team. """ issueSharingEnabled: Boolean """ The prefix for issue identifiers, such as ENG in ENG-123. Generated from the team name if omitted. """ key: String """ The name of the team. """ name: String! """ The parent team ID. """ parentId: String """ Whether an issue needs to have a priority set before leaving triage. """ requirePriorityToLeaveTriage: Boolean """ Where an issue is placed after a status change: first, last, or noAction to keep its position. """ setIssueSortOrderOnStateChange: String """ The IANA time zone used for team schedules, such as Europe/Helsinki. The standard default is America/Los_Angeles; copied settings can supply another zone. """ timezone: String """ Whether triage mode is enabled for the team. """ triageEnabled: Boolean """ Number of future cycles to keep scheduled: 1, 2, 3, 4, 6, 8, 10, 12, or 15. """ upcomingCycleCount: Float } """ A result and its pagination cursor. """ type TeamEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Team! } """ Filters teams by name, key, visibility, retirement, people, hierarchy, issues, or release pipelines. Supplied conditions must match together; use and and or to combine nested filters. """ input TeamFilter { """ Conditions on the parent team and all teams above it in the hierarchy. The team itself is excluded. """ ancestors: TeamCollectionFilter """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [TeamFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Comparator for the team description. """ description: NullableStringComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Filters that the team's issues must satisfy. """ issues: IssueCollectionFilter """ The team key used as the prefix of its issue identifiers, such as ENG in ENG-123. """ key: StringComparator """ Filters that the team's members must satisfy. """ members: UserCollectionFilter """ Comparator for the team name. """ name: StringComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [TeamFilter!] """ Conditions on users who own this team. Team ownership is separate from the workspace owner role. """ owners: UserCollectionFilter """ Conditions on the immediate parent team. Use { null: true } to find top-level teams. """ parent: NullableTeamFilter """ [DEPRECATED] Comparator for the team privacy. """ private: BooleanComparator """ Conditions on release pipelines associated with the team. To combine tests, put each in a separate and entry: at one level, and takes precedence over or, then length, then every, then some or direct properties. """ releasePipelines: ReleasePipelineCollectionFilter """ Filters that the private team forming this team's visibility boundary must satisfy. Only relevant for non-public teams. """ restrictedBy: NullableTeamFilter """ The time the team was retired. Use { null: true } for teams that are not retired; retirement is separate from archiving for deletion. """ retiredAt: NullableDateComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator """ Filters that the team's members must satisfy. Alias of `members` matching the filter shape produced by the app; prefer `members`. """ users: UserCollectionFilter """ Comparator for the team visibility. """ visibility: TeamVisibilityComparator } """ The relationship between a user and a team. It records whether the user owns the team and where the team appears in that user’s personal list. Team ownership is separate from a workspace admin or owner role. """ type TeamMembership implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Whether the user is an owner of the team. Team owners have elevated permissions for managing team settings, members, and resources. """ owner: Boolean! """ The sort order of this team in the user's personal team list. Lower values appear first. """ sortOrder: Float! """ The team that the membership is associated with. """ team: Team! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user that the membership is associated with. """ user: User! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type TeamMembershipConnection { """ The page's results paired with their cursors. """ edges: [TeamMembershipEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [TeamMembership!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The user and team to connect with a new membership. The team must be active and the user must not already be a member. Regular workspace members also join ancestor teams; guest and application-user memberships do not propagate. """ input TeamMembershipCreateInput { """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The team’s position in this user’s team list. Lower values appear first. """ sortOrder: Float """ The identifier of the team associated with the membership. """ teamId: String! """ The identifier of the user associated with the membership. """ userId: String! } """ A result and its pagination cursor. """ type TeamMembershipEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: TeamMembership! } """ Team membership operation response. """ type TeamMembershipPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The team membership that was created or updated. """ teamMembership: TeamMembership } """ Changes to a membership’s personal team ordering. This input does not change the user, team, or ownership role; omit sortOrder to leave the position unchanged. """ input TeamMembershipUpdateInput { """ The team’s position in this user’s team list. Lower values appear first. """ sortOrder: Float } """ A notification subscription scoped to a specific team. The subscriber receives notifications for events related to issues and activity in this team. """ type TeamNotificationSubscription implements Entity & Node & NotificationSubscription { """ Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists. """ active: Boolean! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ 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. """ contextViewType: ContextViewType """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The custom view that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ customView: CustomView """ The customer that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ customer: Customer """ The cycle that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ cycle: Cycle """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Whether initiative update notifications also include updates from sub-initiatives. Applies only when initiative updates are enabled and the workspace supports sub-initiatives. """ includeSubInitiativeUpdates: Boolean! """ The initiative that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ initiative: Initiative """ The issue label that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ label: IssueLabel """ The notification event types that this subscription will deliver to the subscriber. """ notificationSubscriptionTypes: [String!]! """ The project that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ project: Project """ The user who will receive notifications from this subscription. """ subscriber: User! """ The team subscribed to. """ team: Team! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user that this notification subscription is scoped to, for user-specific view subscriptions. Null if the subscription targets a different entity type. """ user: User """ 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. """ userContextViewType: UserContextViewType } """ Team origin for guidance rules. """ type TeamOriginWebhookPayload { """ The team that the guidance was defined in. """ team: TeamWithParentWebhookPayload! """ The type of origin, always 'Team'. """ type: String! } """ Team operation response. """ type TeamPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The team that was created or updated. """ team: Team } """ References a document or external link pinned to a team home for quick access. Pinning does not move the underlying resource; the same resource may be pinned on multiple teams. """ type TeamPinnedResource implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the pin. Null if the user was deleted. """ creator: User """ The pinned document, when the pin targets a document. """ document: Document """ The pinned external link, when the pin targets a link. """ entityExternalLink: EntityExternalLink """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The section this pin is grouped under on the team home. Null if the pin is not inside a section. """ section: TeamResourceSection """ Sort order of this pin among pins with the same team and section (including pins without a section). """ sortOrder: Float! """ The team home where this pin appears. """ team: Team! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user who last updated the pin. Null if the user was deleted. """ updatedBy: User } """ A titled section on a team home that groups pinned resources (documents and external links). Sections are specific to the team home and do not change where resources live in their source team or project. """ type TeamResourceSection implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the section. Null if the creator was deleted. """ creator: User """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Sort order of this section among other sections on the same team home. """ sortOrder: Float! """ The team whose home page owns this section. """ team: Team! """ The section title shown on the team home. """ title: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user who last updated the section. Null if the user was deleted. """ updatedBy: User } """ All possible roles within a team in terms of access to team settings and operations. """ enum TeamRoleType { member owner } """ Minimum team roles required for specific actions. Omitted permissions retain their current settings. """ input TeamSecuritySettingsInput { """ The minimum team role required to manage agent skills in the team. """ agentSkillsManagement: TeamRoleType """ The minimum team role required to manage loops in the team. """ automationManagement: TeamRoleType """ The minimum team role required to share issues with non-team-members. """ issueSharing: TeamRoleType """ The minimum team role required to manage labels in the team. """ labelManagement: TeamRoleType """ The minimum team role required to manage full workspace members (non-guests) in the team. """ memberManagement: TeamRoleType """ The minimum team role required to pin views to the team's pages and to change the views pinned there. """ pinnedViewManagement: TeamRoleType """ The minimum team role required to manage team settings. """ teamManagement: TeamRoleType """ The minimum team role required to manage templates in the team. """ templateManagement: TeamRoleType } """ Issue team sorting options. """ input TeamSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Changes to a team’s identity, workflow, or settings. Omitted fields keep their current values. Permissions are checked for the settings being changed, and some settings require workspace-level administration. """ input TeamUpdateInput { """ Whether to enable AI discussion summaries for issues. """ aiDiscussionSummariesEnabled: Boolean """ Whether to enable resolved thread AI summaries. """ aiThreadSummariesEnabled: Boolean """ Whether all members in the workspace can join the team. Only used for public teams. """ allMembersCanJoin: Boolean """ Months after which closed issues are automatically archived: 1, 3, 6, 9, or 12. """ autoArchivePeriod: Float """ Whether to automatically close all sub-issues when a parent issue in this team is closed. """ autoCloseChildIssues: Boolean """ Whether to automatically close a parent issue in this team if all its sub-issues are closed. """ autoCloseParentIssues: Boolean """ Months of inactivity before issues are automatically closed: 1, 3, 6, 9, or 12. Null disables automatic closing. """ autoClosePeriod: Float """ The canceled workflow state which auto closed issues will be set to. """ autoCloseStateId: String """ The color of the team. """ color: String """ Weeks between cycles, from 0 to 3. Use 0 for consecutive cycles. """ cycleCooldownTime: Int """ Cycle length in weeks, from 1 to 8. """ cycleDuration: Int """ The time at which to begin cycles. """ cycleEnabledStartDate: DateTime """ Whether completing an issue automatically adds it to the current cycle. """ cycleIssueAutoAssignCompleted: Boolean """ Whether starting an issue automatically adds it to the current cycle. """ cycleIssueAutoAssignStarted: Boolean """ Only allow issues with cycles in Active Issues. """ cycleLockToActive: Boolean """ The day cycles start: 0 for Sunday through 6 for Saturday. """ cycleStartDay: Float """ Whether the team uses cycles. """ cyclesEnabled: Boolean """ The estimate used in progress calculations for an issue without an explicit estimate: 0 or 1. This changes its contribution to estimated scope, without assigning an estimate to the issue itself. """ defaultIssueEstimate: Float """ The issue status UUID used for new issues created by team members. It must belong to the team. """ defaultIssueStateId: String """ The identifier of the default project template of this team. """ defaultProjectTemplateId: String """ The identifier of the default template for members of this team. """ defaultTemplateForMembersId: String """ The identifier of the default template for non-members of this team. """ defaultTemplateForNonMembersId: String """ The description of the team. """ description: String """ Whether to group recent issue history entries. """ groupIssueHistory: Boolean """ The icon of the team. """ icon: String """ Whether the team should inherit estimation settings from its parent. Only applies to sub-teams. """ inheritIssueEstimation: Boolean """ Whether initiatives are shown in the team's sidebar. """ initiativesEnabled: Boolean """ Whether to allow zeros in issues estimates. """ issueEstimationAllowZero: Boolean """ Whether to add additional points to the estimate scale. """ issueEstimationExtended: Boolean """ The issue estimation type to use. Must be one of "notUsed", "exponential", "fibonacci", "linear", "tShirt". """ issueEstimationType: String """ Whether issue sharing is enabled for this team. """ issueSharingEnabled: Boolean """ Whether new users should join this team by default. Mutation restricted to workspace admins or owners! """ joinByDefault: Boolean """ The prefix for issue identifiers, such as ENG in ENG-123. """ key: String """ The name of the team. """ name: String """ The parent team ID. """ parentId: String """ Whether the team is private or not. """ private: Boolean """ Whether an issue needs to have a priority set before leaving triage. """ requirePriorityToLeaveTriage: Boolean """ Set a timestamp to retire the team, or null to restore it. Retired teams retain their data but do not accept new issues or members. Send this field separately from other changes. Through the public API, move or retire active sub-teams before retiring their parent. You must have permission to manage the team; restore a retired parent before its sub-teams. """ retiredAt: DateTime """ The SCIM group name for the team. """ scimGroupName: String """ Whether the team is managed by SCIM integration. Mutation restricted to workspace admins or owners and only unsetting is allowed! """ scimManaged: Boolean """ The security settings for the team. """ securitySettings: TeamSecuritySettingsInput """ Where an issue is placed after a status change: first, last, or noAction to keep its position. """ setIssueSortOrderOnStateChange: String """ Whether to send new issue comment notifications to Slack. """ slackIssueComments: Boolean """ Whether to send issue status update notifications to Slack. """ slackIssueStatuses: Boolean """ Whether to send new issue notifications to Slack. """ slackNewIssue: Boolean """ The IANA time zone for team schedules, such as Europe/Helsinki. """ timezone: String """ Whether triage mode is enabled for the team. """ triageEnabled: Boolean """ Number of future cycles to keep scheduled: 1, 2, 3, 4, 6, 8, 10, 12, or 15. """ upcomingCycleCount: Float } """ The visibility of a team. A team can be public, private, or restricted within an enclosing private-team boundary. """ enum TeamVisibility { private public restricted } """ Filters teams by visibility: `public` teams have no private-team boundary, `restricted` teams inherit one from a parent, and `private` teams define their own. All supplied conditions must match. Filtering does not grant access to teams you cannot view. """ input TeamVisibilityComparator { """ Matches teams with this visibility. """ eq: TeamVisibility """ Matches any visibility in the list. An empty list matches no teams. """ in: [TeamVisibility!] """ Excludes teams with this visibility. """ neq: TeamVisibility """ Excludes every visibility in the list. An empty list adds no restriction. """ nin: [TeamVisibility!] } """ Team properties including parent information for guidance rules. """ type TeamWithParentWebhookPayload { """ The team's display name including parent team names if applicable. """ displayName: String! """ The ID of the team. """ id: String! """ The key of the team. """ key: String! """ The name of the team. """ name: String! """ The parent team's unique identifier, if any. """ parentId: String } """ Reusable defaults for creating issues, projects, documents, and other resources. The template’s name and description help people choose it; templateData holds the fields and content it applies. Templates can belong to the workspace, a team, or a release pipeline, and team templates can be inherited. """ type Template implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The hex color of the template icon. Null if no custom color has been set. """ color: String """ The body that the template applies, converted to Markdown. Form fields appear as placeholders so you can preview the template without interpreting its configuration. Null if the template has no body content. """ content: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the template. Null if the creator's account has been deleted. """ creator: User """ A description of what the template is used for. """ description: String """ Whether the template contains form fields. This does not indicate whether those fields have values. """ hasFormFields: Boolean! """ The icon of the template, either a decorative icon type or an emoji string. Null if no icon has been set. """ icon: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The parent team template this template was inherited from. Null for original (non-inherited) templates. """ inheritedFrom: Template """ The time the template was most recently applied to a resource. Null if it has never been applied; this is usage history, not the time its definition was last edited. """ lastAppliedAt: DateTime """ The user who last updated the template. Null if the user's account has been deleted. """ lastUpdatedBy: User """ The name of the template. """ name: String! """ The workspace that owns this template. """ organization: Organization! """ The release pipeline this template is bound to. Required when the template type is 'releaseNote' and forbidden otherwise. The pipeline owns at most one release note template, which defines the format AI follows when generating release notes. """ pipeline: ReleasePipeline """ Position in the template list. Lower values appear first. """ sortOrder: Float! """ The team that owns the template. Null for workspace templates and release-note templates scoped to a pipeline. """ team: Team """ The template’s configuration as a JSON-encoded string. Its structure depends on type and can contain field defaults, rich-text content, and nested issue definitions. Use content when you only need the body in Markdown rather than the full configuration. """ templateData: JSON! """ The template type: issue, document, project, recurringIssue, releaseNote, or loop. The type determines the structure of templateData. """ type: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type TemplateConnection { """ The page's results paired with their cursors. """ edges: [TemplateEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Template!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The name, type, and configuration for a new template. Omit teamId to make it available across the workspace, or choose a team for a team template. Release-note templates instead require a release pipeline and are limited to one per pipeline. """ input TemplateCreateInput { """ Icon color as a hexadecimal CSS color, such as #5E6AD2. """ color: String """ Description of when to use the template. The content it applies belongs in templateData. """ description: String """ Emoji or decorative icon identifier for the template. """ icon: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The template name. """ name: String! """ The identifier of the release pipeline this template is bound to. Required when the template type is 'releaseNote' and rejected otherwise. Each pipeline can have at most one release note template. """ pipelineId: String """ Position in the template list. Lower values appear first. """ sortOrder: Float """ UUID of the team that owns the template. Omit for a workspace template. Release-note templates use pipelineId instead and cannot belong to a team. """ teamId: String """ The defaults for the selected type, supplied as a JSON object or a JSON-encoded string. For an issue template, fields can include title, description in Markdown, priority, labelIds, and children. Linear validates and normalizes the data for the template type. """ templateData: JSON! """ The template type: issue, document, project, recurringIssue, releaseNote, or loop. The configuration in templateData must match the type. Loop templates require the feature to be available in the workspace. """ type: String! } """ A result and its pagination cursor. """ type TemplateEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Template! } """ Conditions used to select templates. Supplied fields are combined with AND; use `or` to accept alternatives and `and` to group conditions. """ input TemplateFilter { """ Conditions that the template must all match. These are combined with the other fields in this filter. """ and: [TemplateFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Conditions on the UUID of the template inherited from a parent team. This matches the immediate source template. """ inheritedFromId: IDComparator """ Conditions on the template’s name, not the titles of resources created from it. """ name: StringComparator """ Alternative conditions; the template must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [TemplateFilter!] """ Conditions on the team that owns the template. Use null: true for templates without a team, including workspace and pipeline-scoped release-note templates. """ team: NullableTeamFilter """ Conditions on the template’s type, such as issue, project, or document. This selects what the template creates, not the scope where the template is available. """ type: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The result of a template mutation. """ type TemplatePayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The template that was created or updated. """ template: Template! } """ The changes to a template’s metadata, scope, or saved defaults. Omitted fields keep their values, but templateData replaces the whole configuration when supplied. The template’s type cannot be changed through this input. """ input TemplateUpdateInput { """ Icon color as a hexadecimal CSS color. Null clears the color. """ color: String """ Description of when to use the template. The content it applies belongs in templateData. Pass null to clear this description, or omit to keep it. """ description: String """ Emoji or decorative icon identifier. Null clears the icon. """ icon: String """ The template name. """ name: String """ Position in the template list. Lower values appear first. """ sortOrder: Float """ UUID of the team that owns the template. Null moves a team template to the workspace; omit to keep its scope. Changing scope requires permission to manage templates at both the source and destination. Release-note templates remain scoped to their pipeline. """ teamId: String """ The complete replacement configuration for the template’s existing type, supplied as a JSON object or a JSON-encoded string. Include the fields and nested content you want to keep; this does not merge individual keys with the old configuration. Omit it to leave the configuration unchanged; null is not accepted. """ templateData: JSON } """ Customer tier sorting options. """ input TierSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ An on-call schedule that a team’s triage responsibility can use to choose who handles incoming issues. entries contains the actual shifts and determines who is on call now; config can describe upcoming shifts for display. A schedule can be maintained through the API or synced from an integration. Creating a schedule alone does not connect it to a team—reference it from the team’s triage responsibility. """ type TimeSchedule implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ [ALPHA] The schedule configuration. """ config: TimeScheduleConfig """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Non-overlapping shifts used to determine the current on-call user. Null if no entries are stored. """ entries: [TimeScheduleEntry!] """ Schedule identifier in the external service. Unique within the workspace; null for a schedule without an external reference. """ externalId: String """ URL of the schedule in its source service. Null if not set. """ externalUrl: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The integration that syncs this schedule. Null for a schedule managed directly through the API. """ integration: Integration """ The name of the schedule. """ name: String! """ The workspace of the schedule. """ organization: Organization! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ [ALPHA] The configuration of a time schedule. """ type TimeScheduleConfig { """ Record of the next on-call shift keyed by Linear user id, e.g. `{ "": { "startsAt": "X", "endsAt": "Y" } }`. """ nextShiftByUserId: JSONObject! } """ [ALPHA] Upcoming shifts for displaying when each Linear user is next on call. nextShiftByUserId maps user UUIDs to startsAt and endsAt values. Each user must be accessible, and startsAt must be in the future, allowing one minute for request processing. This is display information; entries remains the source for current triage responsibility. """ input TimeScheduleConfigInput { """ Record of the next on-call shift keyed by Linear user id, e.g. `{ "": { "startsAt": "X", "endsAt": "Y" } }`. """ nextShiftByUserId: JSONObject! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type TimeScheduleConnection { """ The page's results paired with their cursors. """ edges: [TimeScheduleEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [TimeSchedule!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A name and complete shift list for an API-managed on-call schedule. Provide at most 200 non-overlapping entries. If your system has its own schedule ID, store it in externalId so later calls can use timeScheduleUpsertExternal. The schedule can then be referenced by a team’s triage responsibility. """ input TimeScheduleCreateInput { """ [ALPHA] The schedule configuration. """ config: TimeScheduleConfigInput """ The complete shift list, with at most 200 entries. Each shift needs startsAt, endsAt, and userId or userEmail. Shifts must not overlap; adjacent entries with the same user and override must be combined. On update, this replaces the previous list rather than appending to it. An empty list leaves nobody scheduled. """ entries: [TimeScheduleEntryInput!]! """ Schedule identifier in the external service, unique within the workspace. """ externalId: String """ The URL to the external schedule. """ externalUrl: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ Schedule name, from 1 to 60 characters. """ name: String! } """ A result and its pagination cursor. """ type TimeScheduleEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: TimeSchedule! } """ A single entry in a time schedule, defining a time range and the user responsible during that period. """ type TimeScheduleEntry { """ The end time of the schedule entry in ISO 8601 date-time format. """ endsAt: DateTime! """ [ALPHA] The user this entry replaced, set when the entry is an override. """ overriddenUser: TimeScheduleUser """ The start time of the schedule entry in ISO 8601 date-time format. """ startsAt: DateTime! """ The external email, name or reference text for the user when the reference cannot be mapped to a Linear user id. """ userEmail: String """ The Linear user id of the referenced user. If the reference cannot be mapped to a Linear user then `userEmail` can be used instead. """ userId: String } """ One shift with a start time, end time, and responsible user. Provide userId when the person is known in Linear, or userEmail as an external reference. The end cannot be earlier than the start, and shifts in the schedule must not overlap. Combine adjacent shifts for the same user and override into one entry. """ input TimeScheduleEntryInput { """ The end time of the schedule entry in ISO 8601 date-time format. """ endsAt: DateTime! """ [ALPHA] The user this entry replaced, set when the entry is an override. """ overriddenUser: TimeScheduleUserInput """ The start time of the schedule entry in ISO 8601 date-time format. """ startsAt: DateTime! """ The external email, name or reference text for the user when the reference cannot be mapped to a Linear user id. """ userEmail: String """ The Linear user id of the referenced user. If the reference cannot be mapped to a Linear user then `userEmail` can be used instead. """ userId: String } """ The result of a time schedule mutation. """ type TimeSchedulePayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The time schedule that was created or updated. """ timeSchedule: TimeSchedule! } """ Changes to an API-managed schedule. Omitted fields remain unchanged, while entries replaces the complete shift list; use an empty list to clear all shifts. name, entries, externalId, and externalUrl do not accept null. config can be cleared with null. Integration-managed schedules must be refreshed from their integration instead. """ input TimeScheduleUpdateInput { """ [ALPHA] The schedule configuration. Pass null to clear it. """ config: TimeScheduleConfigInput """ The complete shift list, with at most 200 entries. Each shift needs startsAt, endsAt, and userId or userEmail. Shifts must not overlap; adjacent entries with the same user and override must be combined. On update, this replaces the previous list rather than appending to it. An empty list leaves nobody scheduled. """ entries: [TimeScheduleEntryInput!] """ Schedule identifier in the external service, unique within the workspace. """ externalId: String """ The URL to the external schedule. """ externalUrl: String """ Schedule name, from 1 to 60 characters. """ name: String } """ A reference to a user on a time schedule. """ type TimeScheduleUser { """ The external email, name or reference text for the user when the reference cannot be mapped to a Linear user id. """ userEmail: String """ The Linear user id of the referenced user. If the reference cannot be mapped to a Linear user then `userEmail` can be used instead. """ userId: String } """ A schedule participant identified by userId or an external userEmail reference. """ input TimeScheduleUserInput { """ The external email, name or reference text for the user when the reference cannot be mapped to a Linear user id. """ userEmail: String """ The Linear user id of the referenced user. If the reference cannot be mapped to a Linear user then `userEmail` can be used instead. """ userId: String } """ A calendar date as a YYYY-MM-DD string, such as `2026-11-06`, with no time of day or timezone. Inputs also accept ISO 8601 durations relative to today: `P7D` is seven days ahead and `-P7D` is seven days ago. Relative inputs are resolved when the request is processed. """ scalar TimelessDate """ A YYYY-MM-DD calendar date or an ISO 8601 duration relative to today, such as `-P7D` for seven days ago. Durations stay relative in saved filters and are resolved each time the filter runs. Use a fixed date when the boundary should stay unchanged. """ scalar TimelessDateOrDuration """ Issue title sorting options. """ input TitleSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Credentials for completing an email or SAML sign-in flow. For email sign-in, send the token from the email and the clientAuthCode used to request it. SAML sign-in uses the token issued by its own flow and does not use clientAuthCode. """ input TokenUserAccountAuthInput { """ The clientAuthCode UUID sent when requesting the email login. Required for email token login; unused for SAML. """ clientAuthCode: String """ Email address associated with the authentication token. """ email: String! """ An optional invite link for a workspace. """ inviteLink: String """ Browser timezone. Required by the input type but currently unused by this operation. """ timezone: String! """ One-time authentication token from the email or SAML sign-in flow. """ token: String! } """ The rule that chooses who handles issues entering a team’s triage queue. action either notifies responsible users or assigns the issue. Each team has at most one rule, with responsibility supplied by exactly one manual user list or time schedule. Eligible users must be active, available, and able to access the team’s issues. """ type TriageResponsibility implements Node { """ The action to take when an issue is added to triage. """ action: TriageResponsibilityAction! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user selected by the current manual rotation position or active schedule shift, if that user is eligible. Reading this field does not advance the rotation. Null can mean no active shift, an unavailable or ineligible selected user, or a workspace plan without triage responsibility. For a notify rule, this field does not enumerate every notification recipient. """ currentUser: User """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Manually selected users. Null when responsibility is determined by timeSchedule. """ manualSelection: TriageResponsibilityManualSelection """ The team to which the triage responsibility belongs to. """ team: Team! """ On-call schedule that determines the responsible user. Null when manualSelection is used. """ timeSchedule: TimeSchedule """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ Which action should be taken after an issue is added to triage. """ enum TriageResponsibilityAction { assign notify } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type TriageResponsibilityConnection { """ The page's results paired with their cursors. """ edges: [TriageResponsibilityEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [TriageResponsibility!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A rule for handling new triage issues in one team. Provide the team UUID, choose notify or assign, and supply exactly one of manualSelection or timeScheduleId. The team must not already have a triage responsibility, and the caller must have permission to manage it. """ input TriageResponsibilityCreateInput { """ Action when an issue enters triage: notify or assign. """ action: String! """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ Users responsible for triage. Setting this replaces any time schedule; cannot be combined with timeScheduleId. """ manualSelection: TriageResponsibilityManualSelectionInput """ The identifier of the team associated with the triage responsibility. """ teamId: String! """ UUID of the on-call schedule. Cannot be combined with manualSelection """ timeScheduleId: String } """ A result and its pagination cursor. """ type TriageResponsibilityEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: TriageResponsibility! } """ Manual triage responsibility configuration specifying a set of users to assign triaged issues to, with optional round-robin rotation. """ type TriageResponsibilityManualSelection { """ Ordered user UUIDs. Notification rules notify eligible users; assignment rules rotate through them, skipping inactive, unavailable, or inaccessible users. """ userIds: [String!]! } """ The ordered set of Linear users responsible for triage. With assign, Linear rotates through eligible users; with notify, it notifies eligible users in the selection. Supply user UUIDs, not email addresses. Invalid UUIDs are rejected, and IDs that do not resolve to users are removed; a nonempty list with no valid users is rejected. """ input TriageResponsibilityManualSelectionInput { """ Ordered user UUIDs. Notification rules notify eligible users; assignment rules rotate through them, skipping inactive, unavailable, or inaccessible users. """ userIds: [String!]! } """ The result of a triage responsibility mutation. """ type TriageResponsibilityPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The triage responsibility that was created or updated. """ triageResponsibility: TriageResponsibility! } """ Changes to a team’s triage rule. Omitted fields remain unchanged. Supplying manualSelection replaces the current time schedule; supplying timeScheduleId replaces the manual selection. Do not supply both. The team cannot be changed through this input. """ input TriageResponsibilityUpdateInput { """ Action when an issue enters triage: notify or assign. """ action: String """ Users responsible for triage. Setting this replaces any time schedule; cannot be combined with timeScheduleId. """ manualSelection: TriageResponsibilityManualSelectionInput """ UUID of the on-call schedule. Cannot be combined with manualSelection. """ timeScheduleId: String } """ An RFC 4122 UUID string, such as `550e8400-e29b-41d4-a716-446655440000`. Accepts versions 1 through 5 in the standard hyphenated form and normalizes letters to lowercase. Human-readable identifiers such as `ENG-123` are not UUIDs. """ scalar UUID """ Issue update date sorting options. """ input UpdatedAtSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ Instructions for uploading one file directly to Linear’s storage. Send the raw file bytes in an HTTP PUT to uploadUrl, with every returned header and a Content-Type matching contentType. After that request succeeds, use assetUrl to reference the file in Linear. Preparing these instructions does not upload the file or attach it to an issue. """ type UploadFile { """ URL to reference in issue descriptions, comments, or attachments after the upload succeeds. """ assetUrl: String! """ MIME type to send in the upload request's Content-Type header. """ contentType: String! """ The generated storage path. The original filename is preserved in the download headers. """ filename: String! """ Headers required by the PUT request, in addition to Content-Type matching contentType. """ headers: [UploadFileHeader!]! """ Optional metadata associated with the upload, such as the related issue or comment ID. """ metaData: JSONObject """ The exact number of bytes expected in the upload request. """ size: Int! """ Signed URL for an HTTP PUT of the file bytes. The request must start within one minute of generating the URL. """ uploadUrl: String! } """ An HTTP header required by the signed upload request. """ type UploadFileHeader { """ Upload file header key. """ key: String! """ Upload file header value. """ value: String! } """ The result of preparing a direct upload. success confirms that an upload destination was prepared, not that file bytes have reached storage. Read uploadFile, perform its PUT request, and only then use the asset URL in content or an attachment. """ type UploadPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The upload file details including signed URL, asset URL, and required headers. Null if the upload could not be prepared. """ uploadFile: UploadFile } """ A usage alert triggered when a workspace crosses a billing or consumption threshold. """ type UsageAlert implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Type-specific snapshot captured when the alert was triggered, keyed by the alert type — for example the credit balance and threshold for a lowBalance alert. A resolution entry is added once new usage credits have landed and cleared the alert's condition. """ metadata: JSONObject! """ The time when the usage alert was resolved or archived. Null if the alert is still active. """ resolvedAt: DateTime """ The kind of usage alert that was triggered. """ type: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type UsageAlertConnection { """ The page's results paired with their cursors. """ edges: [UsageAlertEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [UsageAlert!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A result and its pagination cursor. """ type UsageAlertEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: UsageAlert! } """ Filters recorded usage alerts by the condition that triggered them and common entity fields. Filtering by type does not indicate whether the condition is still active; inspect resolvedAt on each result. """ input UsageAlertFilter { """ Compound filters, all of which need to be matched by the alert. An empty list adds no constraint. """ and: [UsageAlertFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Compound filters, at least one of which needs to be matched by the alert. An empty list adds no constraint. """ or: [UsageAlertFilter!] """ Comparator for the condition the alert was triggered by. """ type: UsageAlertTypeComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ A notification related to a usage alert, sent to workspace billing admins. """ type UsageAlertNotification implements Entity & Node & Notification { """ 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. """ actor: User """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The bot that caused the notification. """ botActor: ActorBot """ The category of the notification. """ category: NotificationCategory! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent. """ emailedAt: DateTime """ 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. """ externalUserActor: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The time at which the user marked the notification as read. Null if the notification is unread. """ readAt: DateTime """ 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. """ snoozedUntilAt: DateTime """ Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated. """ type: String! """ The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed. """ unsnoozedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The usage alert related to the notification. """ usageAlert: UsageAlert! """ Related usage alert. """ usageAlertId: String! """ The recipient user of this notification. """ user: User! } """ The condition a usage alert was triggered by. """ enum UsageAlertType { """ Usage credits ran out. """ exhausted """ A promotional usage credit grant is nearing its expiration. """ expiringPromoCredit """ Prepaid usage credits crossed below the low-balance threshold. """ lowBalance } """ Comparator for the condition a usage alert was triggered by. """ input UsageAlertTypeComparator { """ Matches the given value. """ eq: UsageAlertType """ Values to include in the match. For scalar comparisons, matches any listed value. An empty list matches nothing. """ in: [UsageAlertType!] """ Excludes the given value. """ neq: UsageAlertType """ Values to exclude from the match. For scalar comparisons, an empty list adds no restriction. """ nin: [UsageAlertType!] } """ A person or application account in a workspace. Workspace roles and team memberships determine which data the account can access; guests are limited to teams they join. Use viewer to identify the account making the current request, including application accounts. """ type User implements Node { """ Whether the account is currently active in the workspace. False for suspended or otherwise disabled accounts; disableReason explains the recorded reason. Inactive user records can still appear on historical work. """ active: Boolean! """ Whether the user is a workspace administrator. On Free plans, all members are treated as admins. """ admin: Boolean! """ Whether this account represents an installed application rather than a person. """ app: Boolean! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ Issues assigned to the user. """ assignedIssues( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueConnection! """ The background color of the avatar for users without set avatar. """ avatarBackgroundColor: String! """ The avatar image URL. Null if no avatar has been set. """ avatarUrl: String """ [DEPRECATED] Hash for the user to be used in calendar URLs. """ calendarHash: String """ Whether this user can access any public team in the workspace. True for non-guest members and app users with public team access. """ canAccessAnyPublicTeam: Boolean! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Number of issues created. """ createdIssueCount: Int! """ Issues created by the user. """ createdIssues( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueConnection! """ Issues delegated to this user. """ delegatedIssues( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueConnection! """ A short description of the user, such as their title or a brief bio. """ description: String """ 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. """ disableReason: String """ The user's display (nick) name. Must be unique within the workspace. """ displayName: String! """ The user's saved drafts. """ drafts( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): DraftConnection! """ The user's email address. """ email: String! """ The user's GitHub user ID. """ gitHubUserId: String """ Whether the user is a guest in the workspace and limited to accessing a subset of teams. """ guest: Boolean! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The initials of the user. """ initials: String! """ [DEPRECATED] Unique hash for the user to be used in invite URLs. """ inviteHash: String! @deprecated(reason: "This hash is not in use anymore, this value will always be empty.") """ Whether the user can be assigned to issues. Active app users require the assignments capability. The Linear agent also requires coding sessions to be enabled. """ isAssignable: Boolean! """ Whether the user is the currently authenticated user. """ isMe: Boolean! """ Whether the user can be mentioned. Active app users require the mentions capability. """ isMentionable: Boolean! """ The last time the user was seen online. Updated based on user activity. Null if the user has never been seen. """ lastSeen: DateTime """ The user's full name. """ name: String! """ The workspace that the user belongs to. """ organization: Organization! """ Whether the user is a workspace owner, which is the highest permission level. """ owner: Boolean! """ The emoji representing the user's current status. Null if no status is set. """ statusEmoji: String """ The text label of the user's current status. Null if no status is set. """ statusLabel: String """ The time at which the current status is cleared. Null if the status has no expiration. """ statusUntilAt: DateTime """ Whether this agent user supports agent sessions. """ supportsAgentSessions( """ Whether to require an active webhook for sessions started by the current user. """ forCurrentUser: Boolean! = false ): Boolean! """ The user’s team membership records that are visible to you. Each record includes team ownership and personal ordering. Use teams when you only need the associated teams. """ teamMemberships( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): TeamMembershipConnection! """ Teams the user is a member of. Supports filtering by team properties. """ teams( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned teams. """ filter: TeamFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): TeamConnection! """ The user’s IANA time zone, such as Europe/Helsinki. This is used for user-specific schedules and reminders. Null if no time zone has been recorded. """ timezone: String """ The user's job title. """ title: String """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ User's profile URL. """ url: String! } """ User actor payload for webhooks. """ type UserActorWebhookPayload { """ The avatar URL of the user. """ avatarUrl: String """ The email of the user. """ email: String! """ The ID of the user. """ id: String! """ The name of the user. """ name: String! """ The type of actor. """ type: String! """ The URL of the user. """ url: String! } """ User admin operation response. """ type UserAdminPayload { """ Whether the operation was successful. """ success: Boolean! } """ Certain properties of a user. """ type UserChildWebhookPayload { """ The avatar URL of the user. """ avatarUrl: String """ The email of the user. """ email: String! """ The ID of the user. """ id: String! """ The name of the user. """ name: String! """ The URL of the user. """ url: String! } """ Filters a related collection of users. Use some or every to test its members and length to test its size, for example length: { eq: 0 } for an empty collection. Direct property filters act as some only when no collection clause is supplied. """ input UserCollectionFilter { """ Whether the user is active in the workspace. This is account membership state, not whether the user is currently online. """ active: BooleanComparator """ Whether the user has the workspace admin role. Workspace owners have a separate role; use owner to test for them. """ admin: BooleanComparator """ All of these collection conditions must match. Each can test a different member of the collection. """ and: [UserCollectionFilter!] """ Whether the user represents an installed application rather than a person. """ app: BooleanComparator """ Conditions on issues assigned to the user. Use some to find a user with a matching issue, or length to test the number of assigned issues. """ assignedIssues: IssueCollectionFilter """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Comparator for the user's display name. """ displayName: StringComparator """ Comparator for the user's email. """ email: StringComparator """ Filters that needs to be matched by all users. """ every: UserFilter """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for the user's invited status. """ invited: BooleanComparator """ Comparator for the user's invited status. """ isInvited: BooleanComparator """ Use { eq: true } for the authenticated user or { eq: false } for other users. The value is a BooleanComparator, not a bare boolean. """ isMe: BooleanComparator """ The number of related objects, before applying some or every. Use { eq: 0 } to find an empty collection. """ length: NumberComparator """ Comparator for the user's name. """ name: StringComparator """ At least one of these collection conditions must match. """ or: [UserCollectionFilter!] """ Whether the user has the workspace owner role. This does not test ownership of a team. """ owner: BooleanComparator """ Filters that needs to be matched by some users. """ some: UserFilter """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type UserConnection { """ The page's results paired with their cursors. """ edges: [UserEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [User!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A built-in user view used by notification subscriptions. """ enum UserContextViewType { assigned } """ User display name sorting options. """ input UserDisplayNameSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ A result and its pagination cursor. """ type UserEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: User! } """ Filters users by identity, workspace role, active or invited state, or assigned issues. Supplied conditions must match together; use and and or to combine nested filters. """ input UserFilter { """ Whether the user is active in the workspace. This is account membership state, not whether the user is currently online. """ active: BooleanComparator """ Whether the user has the workspace admin role. Workspace owners have a separate role; use owner to test for them. """ admin: BooleanComparator """ All of these nested filters must match, in addition to the other conditions on this filter. """ and: [UserFilter!] """ Whether the user represents an installed application rather than a person. """ app: BooleanComparator """ Conditions on issues assigned to the user. Use some to find a user with a matching issue, or length to test the number of assigned issues. """ assignedIssues: IssueCollectionFilter """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Comparator for the user's display name. """ displayName: StringComparator """ Comparator for the user's email. """ email: StringComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Comparator for the user's invited status. """ invited: BooleanComparator """ Comparator for the user's invited status. """ isInvited: BooleanComparator """ Use { eq: true } for the authenticated user or { eq: false } for other users. The value is a BooleanComparator, not a bare boolean. """ isMe: BooleanComparator """ Comparator for the user's name. """ name: StringComparator """ At least one of these nested filters must match, in addition to the other conditions on this filter. An empty list is ignored. """ or: [UserFilter!] """ Whether the user has the workspace owner role. This does not test ownership of a team. """ owner: BooleanComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The types of flags that the user can have. """ enum UserFlagType { agentExamplesDismissed agentHomeHeadlineSeen agentHomePageNotice agentLoopsPromoShown agentSharedSkillsPromoDismissed agentSharedSkillsSplashAnimationSeen all analyticsWelcomeDismissed canPlaySnake canPlayTetris commandMenuClearShortcutTip completedOnboarding cycleWelcomeDismissed desktopDownloadToastDismissed desktopInstalled desktopTabsOnboardingDismissed dueDateShortcutMigration editorSlashCommandUsed emptyActiveIssuesDismissed emptyBacklogDismissed emptyCustomViewsDismissed emptyMyIssuesDismissed emptyParagraphSlashCommandTip figmaPluginBannerDismissed figmaPromptDismissed helpIslandFeatureInsightsDismissed importBannerDismissed initiativesBannerDismissed insightsHelpDismissed insightsWelcomeDismissed issueLabelSuggestionUsed issueMovePromptCompleted joinTeamIntroductionDismissed listSelectionTip loopEditRestrictionSpeedbumpShown migrateThemePreference milestoneOnboardingIsSeenAndDismissed pinnedDocumentsEmptyStateDismissed projectBacklogWelcomeDismissed projectBoardOnboardingIsSeenAndDismissed projectUpdatesWelcomeDismissed projectWelcomeDismissed pulseWelcomeDismissed reviewsPromptToConnectGithubDismissed rewindBannerDismissed slackAgentPromoFromCreateNewIssueShown slackAiFeedbackAcknowledgementShown slackBotWelcomeMessageShown slackCommentReactionTipShown slackProjectChannelsPromoDismissed slackProjectChannelsPromoShown teamsBotWelcomeMessageShown teamsPageIntroductionDismissed threadedCommentsNudgeIsSeen triageWelcomeDismissed tryCodexDismissed tryCursorDismissed tryCyclesDismissed tryGithubDismissed tryInvitePeopleDismissed tryRoadmapsDismissed tryTriageDismissed updatedSlackThreadSyncIntegration workspaceSetupCompletedHidden } """ Operations that can be applied to UserFlagType. """ enum UserFlagUpdateOperation { clear decr incr lock } """ User name sorting options. """ input UserNameSort { """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder } """ 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. """ type UserNotificationSubscription implements Entity & Node & NotificationSubscription { """ Whether the subscription is active. When inactive, no notifications are generated from this subscription even though it still exists. """ active: Boolean! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ 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. """ contextViewType: ContextViewType """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The custom view that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ customView: CustomView """ The customer that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ customer: Customer """ The cycle that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ cycle: Cycle """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ Whether initiative update notifications also include updates from sub-initiatives. Applies only when initiative updates are enabled and the workspace supports sub-initiatives. """ includeSubInitiativeUpdates: Boolean! """ The initiative that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ initiative: Initiative """ The issue label that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ label: IssueLabel """ The notification event types that this subscription will deliver to the subscriber. """ notificationSubscriptionTypes: [String!]! """ The project that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ project: Project """ The user who will receive notifications from this subscription. """ subscriber: User! """ The team that this notification subscription is scoped to. Null if the subscription targets a different entity type. """ team: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user subscribed to. """ user: User! """ 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. """ userContextViewType: UserContextViewType } """ User operation response. """ type UserPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The user that was created or updated. """ user: User } """ The different permission roles available to users in a workspace. """ enum UserRoleType { admin app guest owner user } """ A user’s preferences for notifications and the Linear app within a workspace. Channel preferences enable delivery methods, category preferences choose which events use them, and delivery preferences control scheduling. These are separate from billing subscriptions. """ type UserSettings implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ Whether to auto-assign newly created issues to the current user by default. """ autoAssignToSelf: Boolean! """ A unique hash for the user, used to construct secure calendar subscription URLs. """ calendarHash: String """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user's last seen time for the pulse feed. """ feedLastSeenTime: DateTime """ 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. """ feedSummarySchedule: FeedSummarySchedule """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The user's notification category preferences, indicating which notification categories are enabled or disabled per notification channel. """ notificationCategoryPreferences: NotificationCategoryPreferences! """ The user's notification channel preferences, indicating which notification delivery channels (email, in-app, mobile push, Slack) are enabled. """ notificationChannelPreferences: NotificationChannelPreferences! """ Mobile notification delivery schedule. Use notificationChannelPreferences to enable or disable a channel. """ notificationDeliveryPreferences: NotificationDeliveryPreferences! """ Whether to show line numbers in code blocks. """ showCodeBlockLineNumbers: Boolean! """ Whether to show full user names instead of display names. """ showFullUserNames: Boolean! """ Whether this user is subscribed to receive changelog emails about Linear product updates. """ subscribedToChangelog: Boolean! """ Whether this user is subscribed to receive Data Processing Agreement (DPA) related emails. """ subscribedToDPA: Boolean! """ Whether this user is subscribed to receive email notifications when their workspace invitations are accepted. """ subscribedToInviteAccepted: Boolean! """ Whether this user is subscribed to receive emails about privacy policy and legal updates. """ subscribedToPrivacyLegalUpdates: Boolean! """ 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. """ theme( """ The device type. """ deviceType: UserSettingsThemeDeviceType = desktop """ The theme color mode. """ mode: UserSettingsThemeMode = light ): UserSettingsTheme """ The email types the user has unsubscribed from. """ unsubscribedFrom: [String!]! @deprecated(reason: "Use individual subscription fields instead. This field's value is now outdated.") """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user that these settings belong to. """ user: User! } """ Custom sidebar theme definition with accent, base colors and contrast. """ type UserSettingsCustomSidebarTheme { """ The accent color in LCH format. """ accent: [Float!]! """ The base color in LCH format. """ base: [Float!]! """ The contrast value. """ contrast: Int! } """ Custom theme definition with accent, base colors, contrast, and optional sidebar theme. """ type UserSettingsCustomTheme { """ The accent color in LCH format. """ accent: [Float!]! """ The base color in LCH format. """ base: [Float!]! """ The contrast value. """ contrast: Int! """ Optional sidebar theme colors. """ sidebar: UserSettingsCustomSidebarTheme } """ User settings flag update response. """ type UserSettingsFlagPayload { """ The flag key which was updated. """ flag: String """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The flag value after update. """ value: Int } """ User settings flags reset response. """ type UserSettingsFlagsResetPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ User settings operation response. """ type UserSettingsPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The user's settings. """ userSettings: UserSettings! } """ The user's resolved theme configuration for a specific color mode and device type. """ type UserSettingsTheme { """ The custom theme definition, only present when preset is 'custom'. """ custom: UserSettingsCustomTheme """ The theme preset. """ preset: UserSettingsThemePreset! } """ Device type for theme """ enum UserSettingsThemeDeviceType { desktop mobileWeb } """ Theme color mode """ enum UserSettingsThemeMode { dark light } """ Theme preset options """ enum UserSettingsThemePreset { classicDark custom dark light magicBlue pureLight system } """ Changes to notification and app preferences. Omitted fields keep their values. General settings merge by key, notification categories and channels merge with existing preferences, and delivery schedules use the replacement rules described on that field. """ input UserSettingsUpdateInput { """ Category and channel preferences to change. Merged with existing preferences; omitted values remain unchanged. """ notificationCategoryPreferences: NotificationCategoryPreferencesInput """ Delivery channels to enable or disable. Omitted channels remain unchanged. """ notificationChannelPreferences: PartialNotificationChannelPreferencesInput """ Replacement delivery schedules. Mobile delivery uses one shared time range across enabled days. Supplying mobile also enables mobile notifications unless its notificationsDisabled is true; an explicitly supplied notificationChannelPreferences.mobile takes precedence. """ notificationDeliveryPreferences: NotificationDeliveryPreferencesInput """ The user's settings. Merged key by key into the existing settings: keys missing from the object are left unchanged, and a key set to null is removed. """ settings: JSONObject """ Whether this user is subscribed to changelog email or not. """ subscribedToChangelog: Boolean """ Whether this user is subscribed to DPA emails or not. """ subscribedToDPA: Boolean """ Whether this user is subscribed to general marketing communications or not. """ subscribedToGeneralMarketingCommunications: Boolean """ Whether this user is subscribed to invite accepted emails or not. """ subscribedToInviteAccepted: Boolean """ Whether this user is subscribed to privacy and legal update emails or not. """ subscribedToPrivacyLegalUpdates: Boolean } """ User sorting options. """ input UserSortInput { """ Sort by user display name """ displayName: UserDisplayNameSort """ Sort by user name """ name: UserNameSort } """ Changes to a user’s profile. Omitted fields keep their values. You can update your own profile; changing another user requires member-management permission. Identity-provider rules can prevent name changes, and application accounts only accept name and displayName. """ input UserUpdateInput { """ An HTTP or HTTPS URL for the avatar image. Null removes the avatar. """ avatarUrl: String """ The user description or a short bio. """ description: String """ The user’s workspace username, using letters, numbers, hyphens, underscores, and periods. It must be unique within the workspace. Identity-provider rules can prevent changes to this value. """ displayName: String """ The user’s full name. Name changes can be blocked when the account is managed by an identity provider that does not allow them. """ name: String """ The emoji part of the user status. """ statusEmoji: String """ The label part of the user status. """ statusLabel: String """ The time at which the status is cleared. Null removes its expiration. """ statusUntilAt: DateTime """ The user’s IANA time zone, such as Europe/Helsinki. """ timezone: String """ The user's job title. """ title: String } """ Payload for a user webhook. """ type UserWebhookPayload { """ Whether the user is active. """ active: Boolean! """ Whether the user is an admin. """ admin: Boolean! """ Whether the user is an app. """ app: Boolean! """ The time at which the entity was archived. """ archivedAt: String """ The avatar URL of the user. """ avatarUrl: String """ The time at which the entity was created. """ createdAt: String! """ The description of the user. """ description: String """ The reason the user is disabled. """ disableReason: String """ The display name of the user. """ displayName: String! """ The email of the user. """ email: String! """ Whether the user is a guest. """ guest: Boolean! """ The ID of the entity. """ id: String! """ The name of the user. """ name: String! """ Whether the user is an owner. """ owner: Boolean """ The local timezone of the user. """ timezone: String """ The time at which the entity was updated. """ updatedAt: String! """ The URL of the user. """ url: String! } """ A saved set of display settings for a particular view and scope. Workspace defaults and personal overrides are separate records; personal values take precedence when the view is displayed. These settings control presentation, while a custom view’s filters determine its matching items. """ type ViewPreferences implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The settings stored on this record, which may contain only a subset of the available fields. Unset values fall back to workspace or system defaults when the view is displayed; this field does not return that merged result. """ preferences: ViewPreferencesValues! """ The type of view preferences: "organization" for workspace-wide defaults or "user" for personal overrides. """ type: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The kind of view these settings apply to, such as board, cycle, project, or customView. """ viewType: String! } """ The view, scope, and display settings to save. Use type user for your personal overrides or organization for defaults shared in that scope. Entity-specific views require the corresponding ID, such as teamId for cycle views or customViewId for saved views. """ input ViewPreferencesCreateInput { """ UUID of the custom view whose display settings are being saved. """ customViewId: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ UUID of the initiative label whose view these settings apply to. """ initiativeLabelId: String """ The default parameters for the insight on that view. """ insights: JSONObject """ UUID of the issue label whose view these settings apply to. """ labelId: String """ The display settings to store. Supply the values you want this record to override; omitted fields use the next available workspace or system default when the view is displayed. """ preferences: JSONObject! """ UUID of the project whose view these settings apply to. """ projectId: String """ UUID of the project label whose view these settings apply to. """ projectLabelId: String """ UUID of the release pipeline whose view these settings apply to. """ releasePipelineId: String """ UUID of the team whose view these settings apply to. """ teamId: String """ Whether to save personal overrides for the current user or workspace defaults. """ type: ViewPreferencesType! """ UUID of the user whose profile view these settings apply to. This is not the owner of the preferences. """ userId: String """ The kind of view these settings apply to. """ viewType: ViewType! } """ A label group column configuration for the initiative list view. """ type ViewPreferencesInitiativeLabelGroupColumn { """ Whether to show this label group’s column. """ active: Boolean! """ The identifier of the label group. """ id: String! } """ The result of a view preferences mutation. """ type ViewPreferencesPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The view preferences entity being mutated. """ viewPreferences: ViewPreferences! } """ A label group column configuration for the project list view. """ type ViewPreferencesProjectLabelGroupColumn { """ Whether to show this label group’s column. """ active: Boolean! """ The identifier of the label group. """ id: String! } """ The type of view preferences (either user or workspace level preferences). """ enum ViewPreferencesType { organization user } """ The settings to replace on an existing preferences record. Omit preferences or insights to keep that whole object unchanged. When supplying either object, include the existing values you want to retain; its individual keys are not merged. """ input ViewPreferencesUpdateInput { """ The default parameters for the insight on that view. """ insights: JSONObject """ The complete replacement set of display overrides. Include existing keys you want to keep. An empty object removes the record’s display overrides so the view can use its fallback defaults. """ preferences: JSONObject } """ Display settings shared by several kinds of views. Use the fields relevant to the viewType you are configuring; unrelated fields may have no effect there. A missing or null value is unset, so the displayed view can fall back to workspace or system defaults. These settings affect presentation, not the underlying records. """ type ViewPreferencesValues { """ Whether to show the loop last executed field. """ automationFieldLastExecuted: Boolean """ Whether to show loop run statistics. """ automationFieldStats: Boolean """ Whether to show the loop team field. """ automationFieldTeam: Boolean """ Whether to show the loop trigger field. """ automationFieldTrigger: Boolean """ The loop grouping. Values: none, team, trigger, owner. """ automationGrouping: String """ The loop ordering. Values: name, lastExecuted, runs, trigger, team, owner, sortOrder. """ automationOrdering: String """ Whether to group consecutive runs with no changes in Loop run history. """ automationRunHistoryGroupNoChanges: Boolean """ Whether to show the number of recorded changes in Loop run history. """ automationRunHistoryShowChangeCount: Boolean """ Whether to show the run duration in Loop run history. """ automationRunHistoryShowDuration: Boolean """ Whether to show the initiative identifier in Loop run history. """ automationRunHistoryShowInitiativeIdentifier: Boolean """ Whether to show the issue identifier in Loop run history. """ automationRunHistoryShowIssueIdentifier: Boolean """ Whether to show the project identifier in Loop run history. """ automationRunHistoryShowProjectIdentifier: Boolean """ Whether to show sub-team loops. """ automationShowDescendants: Boolean """ Whether to show disabled loops. """ automationShowDisabled: Boolean """ Whether to show templates above the workspace loops list. """ automationShowTemplates: Boolean """ Period for loop statistics: day (24 hours), week (7 days), or month (30 days). """ automationStatsPeriod: String """ Whether issues in closed columns should be ordered by recency. """ closedIssuesOrderedByRecency: Boolean """ Group identifiers in the desired order for board columns. These reorder groups, not the issues within each group. """ columnOrderBoard: [String!] """ Group identifiers in the desired order for list groups. These reorder groups, not the issues within each group. """ columnOrderList: [String!] """ Whether to show the release date field for continuous pipeline releases. """ continuousPipelineReleaseFieldReleaseDate: Boolean """ Whether to show the release-note field for continuous pipeline releases. """ continuousPipelineReleaseFieldReleaseNote: Boolean """ Whether to show the version field for continuous pipeline releases. """ continuousPipelineReleaseFieldVersion: Boolean """ The continuous pipeline releases view grouping. Values: releaseDay, none. """ continuousPipelineReleasesViewGrouping: String """ Whether to show the custom view creation date field. """ customViewFieldDateCreated: Boolean """ Whether to show the custom view updated date field. """ customViewFieldDateUpdated: Boolean """ Whether to show the custom view owner field. """ customViewFieldOwner: Boolean """ Whether to show the custom view visibility field. """ customViewFieldVisibility: Boolean """ The custom views ordering. Values: name, owner, createdAt, updatedAt. """ customViewsOrdering: String """ Whether to show the customer domains field. """ customerFieldDomains: Boolean """ Whether to show the customer owner field. """ customerFieldOwner: Boolean """ Whether to show the customer request count field. """ customerFieldRequestCount: Boolean """ Whether to show the customer revenue field. """ customerFieldRevenue: Boolean """ Whether to show the customer size field. """ customerFieldSize: Boolean """ Whether to show the customer source field. """ customerFieldSource: Boolean """ Whether to show the customer status field. """ customerFieldStatus: Boolean """ Whether to show the customer tier field. """ customerFieldTier: Boolean """ Whether to show the issue identifier field in the customer page. """ customerPageNeedsFieldIssueIdentifier: Boolean """ Whether to show the issue priority field in the customer page. """ customerPageNeedsFieldIssuePriority: Boolean """ Whether to show the issue status field in the customer page. """ customerPageNeedsFieldIssueStatus: Boolean """ Whether to show the issue due date field in the customer page. """ customerPageNeedsFieldIssueTargetDueDate: Boolean """ Whether to show completed issues and projects in the customer page. Values: day, week, month, all, none. """ customerPageNeedsShowCompletedIssuesAndProjects: String """ Whether to show important customer needs first. """ customerPageNeedsShowImportantFirst: Boolean """ The customer page needs view grouping. Values: statusType, none. """ customerPageNeedsViewGrouping: String """ The customer page needs view ordering. Values: createdAt, statusType. """ customerPageNeedsViewOrdering: String """ The customers view ordering. Values: name, createdAt, owner, status, revenue, size, tier, approximateNeedCount. """ customersViewOrdering: String """ Whether to show the dashboard creation date field. """ dashboardFieldDateCreated: Boolean """ Whether to show the dashboard updated date field. """ dashboardFieldDateUpdated: Boolean """ Whether to show the dashboard owner field. """ dashboardFieldOwner: Boolean """ The dashboards ordering. Values: name, owner, createdAt, updatedAt. """ dashboardsOrdering: String """ Whether to show the creator field for documents. """ documentFieldCreator: Boolean """ Whether to show the created date field for documents. """ documentFieldDateCreated: Boolean """ Whether to show the updated date field for documents. """ documentFieldDateUpdated: Boolean """ Whether to show the owner field for documents. """ documentFieldOwner: Boolean """ Whether to show the parent field for documents. """ documentFieldParent: Boolean """ Whether to show important embedded customer needs first. """ embeddedCustomerNeedsShowImportantFirst: Boolean """ The embedded customer needs view ordering. Values: createdAt, customerName, customerRevenue. """ embeddedCustomerNeedsViewOrdering: String """ Whether to show the issue assignee field. """ fieldAssignee: Boolean """ Whether to show the customer request count field. """ fieldCustomerCount: Boolean """ Whether to show the customer revenue field. """ fieldCustomerRevenue: Boolean """ Whether to show the cycle field. """ fieldCycle: Boolean """ Whether to show the issue archived date field. """ fieldDateArchived: Boolean """ Whether to show the issue creation date field. """ fieldDateCreated: Boolean """ Whether to show the issue last activity date field. """ fieldDateMyActivity: Boolean """ Whether to show the issue updated date field. """ fieldDateUpdated: Boolean """ Whether to show the due date field. """ fieldDueDate: Boolean """ Whether to show the issue estimate field. """ fieldEstimate: Boolean """ Whether to show the issue identifier field. """ fieldId: Boolean """ Whether to show the labels field. """ fieldLabels: Boolean """ Whether to show the link count field. """ fieldLinkCount: Boolean """ Whether to show the milestone field. """ fieldMilestone: Boolean """ Whether to show preview links. """ fieldPreviewLinks: Boolean """ Whether to show the issue priority field. """ fieldPriority: Boolean """ Whether to show the project field. """ fieldProject: Boolean """ Whether to show the pull requests field. """ fieldPullRequests: Boolean """ Whether to show the release field. """ fieldRelease: Boolean """ Whether to show the Sentry issues field. """ fieldSentryIssues: Boolean """ Whether to show the SLA field. """ fieldSla: Boolean """ Whether to show the issue status field. """ fieldStatus: Boolean """ Whether to show the time in current status field. """ fieldTimeInCurrentStatus: Boolean """ Whether to show the avatars of the other people currently viewing an issue. """ fieldUserPresence: Boolean """ The focus view grouping. """ focusViewGrouping: String @deprecated(reason: "No longer available") """ The focus view ordering. """ focusViewOrdering: String @deprecated(reason: "No longer available") """ The focus view ordering direction. """ focusViewOrderingDirection: String @deprecated(reason: "No longer available") """ The ordering mode for groups. Supersedes projectGroupOrdering. Values: custom, default, asc, desc, name, targetDate, status, priority, stage, releaseDate, version. """ groupOrderingMode: String """ The identifiers of groups to hide as board columns. These identify the values of the active grouping, such as status or assignee IDs, rather than issue IDs. """ hiddenColumns: [String!] """ The identifiers of groups to hide in the list layout. The identifiers depend on the active grouping, such as status IDs when grouping by status. """ hiddenGroupsList: [String!] """ The identifiers of groups to hide as board rows. These correspond to the active sub-grouping, rather than the individual issues in a row. """ hiddenRows: [String!] """ The inbox view grouping. Values: none, focus. """ inboxViewGrouping: String """ The inbox view ordering. Values: movedToInboxAt, reverseMovedToInboxAt, priority. """ inboxViewOrdering: String """ Whether to show the initiative activity field. """ initiativeFieldActivity: Boolean """ Whether to show the initiative completed date field. """ initiativeFieldDateCompleted: Boolean """ Whether to show the initiative created date field. """ initiativeFieldDateCreated: Boolean """ Whether to show the initiative updated date field. """ initiativeFieldDateUpdated: Boolean """ Whether to show the initiative description field. """ initiativeFieldDescription: Boolean """ Whether to show the initiative active projects health field. """ initiativeFieldHealth: Boolean """ Whether to show the initiative identifier field. """ initiativeFieldId: Boolean """ Whether to show the initiative health field. """ initiativeFieldInitiativeHealth: Boolean """ Whether to show the initiative labels field. """ initiativeFieldLabels: Boolean """ Whether to show the initiative lead team field. """ initiativeFieldLeadTeam: Boolean """ Whether to show the initiative owner field. """ initiativeFieldOwner: Boolean """ Whether to show the initiative priority field. """ initiativeFieldPriority: Boolean """ Whether to show the initiative projects field. """ initiativeFieldProjects: Boolean """ Whether to show the initiative start date field. """ initiativeFieldStartDate: Boolean """ Whether to show the initiative status field. """ initiativeFieldStatus: Boolean """ Whether to show the initiative target date field. """ initiativeFieldTargetDate: Boolean """ Whether to show the initiative teams field. """ initiativeFieldTeams: Boolean """ The initiative grouping. Values: none, team, leadTeam, owner, health, status, priority, activity, label, labelGroup. """ initiativeGrouping: String """ The UUID of the initiative-label group to use when initiativeGrouping is labelGroup. Its child labels define the groups. """ initiativeGroupingLabelGroupId: String """ The initiative-label groups to expose as columns in an initiative list. Each entry identifies a group and whether its column is active. """ initiativeLabelGroupColumns: [ViewPreferencesInitiativeLabelGroupColumn!] """ The initiative ordering. Values: sortOrder, name, status, targetDate, updatedAt, healthUpdatedAt, priority, activity. """ initiativesViewOrdering: String """ The issue grouping. Values: sla, focus, assignee, delegate, workflowState, workflowStateType, priority, project, projectMilestone, cycle, team, rootIssue, label, labelGroup, customer, release, releaseDay, activityDate, none. """ issueGrouping: String """ The UUID of the label group to use when issueGrouping is labelGroup. The group’s child labels become the groups in the view. """ issueGroupingLabelGroupId: String """ How sub-issues appear in the hierarchy: none displays issues without nesting, showAll includes all sub-issues, and showMatching includes only sub-issues matching the view’s filters. This controls presentation rather than changing parent relationships. """ issueNesting: String """ The issue sub-grouping. Values: sla, focus, assignee, delegate, workflowState, workflowStateType, priority, project, projectMilestone, cycle, team, rootIssue, label, labelGroup, customer, release, releaseDay, activityDate, none. """ issueSubGrouping: String """ The UUID of the label group to use when issueSubGrouping is labelGroup. It determines the second level of grouping within each primary group. """ issueSubGroupingLabelGroupId: String """ The issue layout: list for rows, board for columns, or split for a list with a detail panel. Layout-specific settings, such as empty-group visibility, apply only in that layout. """ layout: String """ Whether to show the member joined date field. """ memberFieldJoined: Boolean """ Whether to show the member status field. """ memberFieldStatus: Boolean """ Whether to show the member teams field. """ memberFieldTeams: Boolean """ Whether clicking an item in a board or list opens it in a split view panel. """ openInSplitView: Boolean """ Whether to show completed issues last in project customer needs. """ projectCustomerNeedsShowCompletedIssuesLast: Boolean """ Whether to show important project customer needs first. """ projectCustomerNeedsShowImportantFirst: Boolean """ The project customer needs view grouping. Values: issue, customerOwner, customerStatus, customerTier, none. """ projectCustomerNeedsViewGrouping: String """ The project customer needs view ordering. Values: createdAt, customerName, customerRevenue. """ projectCustomerNeedsViewOrdering: String """ Whether to show the project activity field. """ projectFieldActivity: Boolean """ Whether to show the project customer count field. """ projectFieldCustomerCount: Boolean """ Whether to show the project customer revenue field. """ projectFieldCustomerRevenue: Boolean """ Whether to show the project completion date field. """ projectFieldDateCompleted: Boolean """ Whether to show the project creation date field. """ projectFieldDateCreated: Boolean """ Whether to show the project updated date field. """ projectFieldDateUpdated: Boolean """ Whether to show the project description field. """ projectFieldDescription: Boolean """ Whether to show the project description field on the board. """ projectFieldDescriptionBoard: Boolean """ Whether to show the project health field. """ projectFieldHealth: Boolean """ Whether to show the project health field on the timeline. """ projectFieldHealthTimeline: Boolean """ Whether to show the project identifier field. """ projectFieldId: Boolean """ Whether to show the project initiatives field. """ projectFieldInitiatives: Boolean """ Whether to show the project issue count field. """ projectFieldIssues: Boolean """ Whether to show the project labels field. """ projectFieldLabels: Boolean """ Whether to show the project lead field. """ projectFieldLead: Boolean """ Whether to show the project lead field on the timeline. """ projectFieldLeadTimeline: Boolean """ Whether to show the project members field. """ projectFieldMembers: Boolean """ Whether to show the project members field on the board. """ projectFieldMembersBoard: Boolean """ Whether to show the project members field on the list. """ projectFieldMembersList: Boolean """ Whether to show the project members field on the timeline. """ projectFieldMembersTimeline: Boolean """ Whether to show the project milestone field. """ projectFieldMilestone: Boolean """ Whether to show the project milestone field on the timeline. """ projectFieldMilestoneTimeline: Boolean """ Whether to show the project predictions field. """ projectFieldPredictions: Boolean """ Whether to show the project predictions field on the timeline. """ projectFieldPredictionsTimeline: Boolean """ Whether to show the project priority field. """ projectFieldPriority: Boolean """ Whether to show the project relations field. """ projectFieldRelations: Boolean """ Whether to show the project relations field on the timeline. """ projectFieldRelationsTimeline: Boolean """ Whether to show the project roadmaps field. """ projectFieldRoadmaps: Boolean """ Whether to show the project roadmaps field on the board. """ projectFieldRoadmapsBoard: Boolean """ Whether to show the project roadmaps field on the list. """ projectFieldRoadmapsList: Boolean """ Whether to show the project roadmaps field on the timeline. """ projectFieldRoadmapsTimeline: Boolean """ Whether to show the project rollout stage field. """ projectFieldRolloutStage: Boolean """ Whether to show the project start date field. """ projectFieldStartDate: Boolean """ Whether to show the project status field. """ projectFieldStatus: Boolean """ Whether to show the project status field on the timeline. """ projectFieldStatusTimeline: Boolean """ Whether to show the project target date field. """ projectFieldTargetDate: Boolean """ Whether to show the project teams field. """ projectFieldTeams: Boolean """ Whether to show the project teams field on the board. """ projectFieldTeamsBoard: Boolean """ Whether to show the project teams field on the list. """ projectFieldTeamsList: Boolean """ Whether to show the project teams field on the timeline. """ projectFieldTeamsTimeline: Boolean """ The ordering of project groups. """ projectGroupOrdering: String @deprecated(reason: "Use groupOrderingMode instead.") """ The project grouping. Values: statusType, activity, leadTeam, lead, member, health, none, status, priority, label, labelGroup, roadmap, initiative, subInitiative, team, startDate, targetDate, rolloutStage. """ projectGrouping: String """ Date grouping interval: month, quarter, halfYear, or year. """ projectGroupingDateResolution: String """ The UUID of the project-label group to use when projectGrouping is labelGroup. Its child labels define the groups. """ projectGroupingLabelGroupId: String """ The project-label groups to expose as columns in a project list. Each entry identifies a group and whether its column is active. """ projectLabelGroupColumns: [ViewPreferencesProjectLabelGroupColumn!] """ The project layout type. Values: list, timeline, board. """ projectLayout: String """ How to show empty project groups. Values: all, none, upcoming. """ projectShowEmptyGroups: String """ How to show empty project groups on the board layout. Values: all, none, upcoming. """ projectShowEmptyGroupsBoard: String """ How to show empty project groups on the list layout. Values: all, none, upcoming. """ projectShowEmptyGroupsList: String """ How to show empty project groups on the timeline layout. Values: all, none, upcoming. """ projectShowEmptyGroupsTimeline: String """ How to show empty project sub-groups. Values: all, none, upcoming. """ projectShowEmptySubGroups: String """ How to show empty project sub-groups on the board layout. Values: all, none, upcoming. """ projectShowEmptySubGroupsBoard: String """ How to show empty project sub-groups on the list layout. Values: all, none, upcoming. """ projectShowEmptySubGroupsList: String """ How to show empty project sub-groups on the timeline layout. Values: all, none, upcoming. """ projectShowEmptySubGroupsTimeline: String """ The project sub-grouping. Values: statusType, activity, leadTeam, lead, member, health, none, status, priority, label, labelGroup, roadmap, initiative, subInitiative, team, startDate, targetDate, rolloutStage. """ projectSubGrouping: String """ The UUID of the project-label group to use when projectSubGrouping is labelGroup. Its child labels define the second level of grouping. """ projectSubGroupingLabelGroupId: String """ The project ordering. Values: sortOrder, name, createdAt, updatedAt, healthUpdatedAt, startDate, targetDate, status, priority, customerCount, customerImportantCount, customerRevenue, activity. """ projectViewOrdering: String """ Timeline interval: year, quarter, month, or week. Use timelineZoomScale for new settings. """ projectZoomLevel: String @deprecated(reason: "Use timelineZoomScale instead.") """ Whether to show the latest release field for release pipelines. """ releasePipelineFieldLatestRelease: Boolean """ Whether to show the releases field for release pipelines. """ releasePipelineFieldReleases: Boolean """ Whether to show the teams field for release pipelines. """ releasePipelineFieldTeams: Boolean """ Whether to show the type field for release pipelines. """ releasePipelineFieldType: Boolean """ The release pipeline grouping. Values: none, team. """ releasePipelineGrouping: String """ The release pipelines view ordering. Values: title, type, releases, latestRelease. """ releasePipelinesViewOrdering: String """ Whether to show the review avatar field. """ reviewFieldAvatar: Boolean """ No longer used. Previously controlled the review checks field. """ reviewFieldChecks: Boolean """ Whether to show the review GitHub team field. """ reviewFieldGithubTeam: Boolean """ Whether to show the review identifier field. """ reviewFieldIdentifier: Boolean """ Whether to show GitHub labels on review list items. Null if the preference is unset. """ reviewFieldLabels: Boolean """ Whether to show the pull request opened timestamp. """ reviewFieldOpenedAt: Boolean """ No longer used. Previously controlled the review preview links field. """ reviewFieldPreviewLinks: Boolean """ Whether to show the quick-to-review badge on review list items. Null if the preference is unset. """ reviewFieldQuickToReview: Boolean """ Whether to show the review repository field. """ reviewFieldRepository: Boolean """ Whether to show reviewer avatars on review list items. Null if the preference is unset. """ reviewFieldReviewers: Boolean """ Whether to show the most pressing SLA from connected issues on review list items. Null if the preference is unset. """ reviewFieldSla: Boolean """ Whether to show review status details on a second line. """ reviewFieldStatusDetails: Boolean """ The review grouping. Values: responsibility, creator, status, repository, none. """ reviewGrouping: String """ The review view ordering. Values: closestToMerge, linkedIssuePriority, title, status, openedAt, updatedAt, diffSize, creator, manual. """ reviewViewOrdering: String """ Whether to show the completion field for scheduled pipeline releases. """ scheduledPipelineReleaseFieldCompletion: Boolean """ Whether to show the description field for scheduled pipeline releases. """ scheduledPipelineReleaseFieldDescription: Boolean """ Whether to show the release date field for scheduled pipeline releases. """ scheduledPipelineReleaseFieldReleaseDate: Boolean """ Whether to show the release-note field for scheduled pipeline releases. """ scheduledPipelineReleaseFieldReleaseNote: Boolean """ Whether to show the version field for scheduled pipeline releases. """ scheduledPipelineReleaseFieldVersion: Boolean """ The scheduled pipeline releases view grouping. Values: stage, none. """ scheduledPipelineReleasesViewGrouping: String """ The scheduled pipeline releases view ordering. Values: version, stage, releaseDate. """ scheduledPipelineReleasesViewOrdering: String """ Result type filter: All, Issue, Project, Document, PullRequest, or Initiative. """ searchResultType: String """ The search view ordering. Values: relevance, createdAt, updatedAt. """ searchViewOrdering: String """ Whether the view displays archived items. This is a saved display preference; pass includeArchived on a GraphQL connection when you also need that query to return archived records. """ showArchivedItems: Boolean """ Whether completed agent sessions are shown and for how long. Values: day, week, month, all, none. """ showCompletedAgentSessions: String """ Which completed issues remain visible: all, none, or those completed within the last day, week, or month. currentCycle uses the team’s previous cycle completion time, falling back to the active cycle’s start. These options also apply to canceled issues based on when they were closed. """ showCompletedIssues: String """ Whether completed projects are shown and for how long. Values: week, month, all, none, 3months, 6months. """ showCompletedProjects: String """ Whether completed reviews are shown and for how long. Values: day, week, month, all, none. """ showCompletedReviews: String """ Whether to show draft reviews. """ showDraftReviews: Boolean """ Whether to show empty groups. """ showEmptyGroups: Boolean """ Whether to show empty groups on the board layout. """ showEmptyGroupsBoard: Boolean """ Whether to show empty groups on the list layout. """ showEmptyGroupsList: Boolean """ Whether to show empty sub-groups. """ showEmptySubGroups: Boolean """ Whether to show empty sub-groups on the board layout. """ showEmptySubGroupsBoard: Boolean """ Whether to show empty sub-groups on the list layout. """ showEmptySubGroupsList: Boolean """ Whether to show sub-initiatives nested. """ showNestedInitiatives: Boolean """ Whether a team's project views show only the projects that team leads. When true, projects the team only contributes to are hidden. Null if the preference is unset. """ showOnlyLeadTeamProjects: Boolean """ Whether to show only snoozed items. """ showOnlySnoozedItems: Boolean """ Whether to show parent issues for sub-issues. """ showParents: Boolean """ Whether to show read items. """ showReadItems: Boolean """ Whether to show snoozed items. """ showSnoozedItems: Boolean """ Whether to show sub-initiative projects. """ showSubInitiativeProjects: Boolean """ Whether to show sub-issues. """ showSubIssues: Boolean """ Whether to show sub-team issues. """ showSubTeamIssues: Boolean """ Whether to show sub-team projects. """ showSubTeamProjects: Boolean """ Whether to show supervised issues. """ showSupervisedIssues: Boolean """ Whether to show team-level initiatives in the workspace. """ showTeamInitiatives: Boolean """ Whether team reviews are shown in the reviews list. """ showTeamReviews: Boolean """ Whether to show triage issues. """ showTriageIssues: Boolean """ Whether to show unread items first. """ showUnreadItemsFirst: Boolean """ Whether to show the team cycle field. """ teamFieldCycle: Boolean """ Whether to show the team creation date field. """ teamFieldDateCreated: Boolean """ Whether to show the team updated date field. """ teamFieldDateUpdated: Boolean """ Whether to show the team identifier field. """ teamFieldIdentifier: Boolean """ Whether to show the team members field. """ teamFieldMembers: Boolean """ Whether to show the team membership field. """ teamFieldMembership: Boolean """ Whether to show the team owner field. """ teamFieldOwner: Boolean """ Whether to show the team projects field. """ teamFieldProjects: Boolean """ The team view ordering. Values: name, createdAt, updatedAt. """ teamViewOrdering: String """ UUIDs of teams whose cycles appear above the timeline. """ timelineChronologyShowCycleTeamIds: [String!] """ Whether to show week numbers in timeline chronology bar. """ timelineChronologyShowWeekNumbers: Boolean """ Whether to show the projects aside panel on the timeline. """ timelineShowProjectsAside: Boolean """ Timeline zoom scale. Higher values show fewer days across the same width; the interface uses values from 0.5 to 100. """ timelineZoomScale: Float """ The triage view ordering. Values: startedTriage, priority, dueDate, dateCreated, reverseDateCreated. """ triageViewOrdering: String """ The issue ordering. Values: manual, title, priority, dateCreated, dateUpdated, dateMyActivity, dueDate, linkCount, estimate, workflowState, assignee, delegate, customerCount, customerImportantCount, customerRevenue, accumulatedStateUpdatedAt. """ viewOrdering: String """ Sort direction: asc for ascending or desc for descending. """ viewOrderingDirection: String """ The workspace members view ordering. Values: title, status, joined. """ workspaceMembersViewOrdering: String } """ The client view this custom view is targeting. """ enum ViewType { activeIssues agents """ [Internal] The All tab of the documents page. """ allDocuments allIssues archive automationRunHistory automations backlog board completedCycle continuousPipelineReleases createdReviews customView customViews customer customers cycle dashboards embeddedCustomerNeeds feedAll feedCreated feedFollowing feedPopular focus @deprecated(reason: "No longer available") inbox inboxOther inboxPriority initiative initiativeLabel initiativeOverview initiativeOverviewSubInitiatives initiatives initiativesAll initiativesCanceled initiativesCompleted initiativesPlanned initiativesProposed issueIdentifiers label """ [Internal] The My documents tab of the documents page. """ myDocuments myIssues myIssuesActivity myIssuesCreatedByMe myIssuesSharedWithMe myIssuesSubscribedTo myReviews project projectCustomerNeeds projectDocuments projectLabel projects projectsAll projectsBacklog projectsClosed quickView """ [Internal] The Recent tab of the documents page. """ recentDocuments release releaseOverviewIssues releasePipelines reviews roadmap roadmapAll roadmapBacklog roadmapClosed roadmaps scheduledPipelineReleases search """ [Internal] The Shared with me tab of the documents page. """ sharedDocuments splitSearch """ [Internal] The sub-documents list of a document. """ subDocuments subIssues """ [Internal] The documents list of a team. """ teamDocuments teams triage upcomingCycle userProfile userProfileCreatedByUser userProfileDiffs userProfileProjects """ [Internal] The documents list of the workspace. """ workspaceDocuments workspaceMembers } """ A subscription that delivers Linear events to your HTTPS endpoint as signed HTTP POST requests. resourceTypes selects the event streams, while the team settings limit which team events are included. Manually created webhooks have their own URL and signing secret; OAuth application webhooks use the application’s configuration. Verify payload signatures before processing events, and use enabled to pause delivery without deleting the subscription. """ type Webhook implements Node { """ Whether to receive events from all public teams in the workspace, including public teams created later. """ allPublicTeams: Boolean! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the webhook. Null if the creator is unavailable or it was created for an OAuth application. """ creator: User """ Whether the webhook is enabled. When disabled, no payloads will be delivered even if matching events occur. """ enabled: Boolean! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ A human-readable label for the webhook, used for identification in the UI. Null if no label has been set. """ label: String """ 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. """ resourceTypes: [String!]! """ The secret used to sign webhook payloads with HMAC-SHA256. Your receiver uses it to verify that a request came from Linear and that the body has not changed. Keep it private and update your receiver when rotating it. Null means the secret is unavailable on this record, as with an OAuth webhook whose signing configuration belongs to the application. """ secret: String """ The team whose events this webhook receives. Null when the subscription is not limited to one team. """ team: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ 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. """ url: String } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type WebhookConnection { """ The page's results paired with their cursors. """ edges: [WebhookEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [Webhook!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The destination, event streams, and team scope for a new webhook. Provide a public HTTPS URL and at least one resource type. Choose a single teamId or set allPublicTeams to true; when allPublicTeams is true, teamId is ignored. Delivery is enabled by default, and Linear generates a signing secret if you omit one. """ input WebhookCreateInput { """ Receive events from every public team, including teams created later. If true, teamId is ignored. """ allPublicTeams: Boolean """ Whether matching events are delivered. Defaults to true on create. """ enabled: Boolean = true """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ Display label, up to 64 characters. Must not contain a URL. """ label: String """ Event streams to subscribe to. Accepted values are Attachment, AuditEntry, Comment, Customer, CustomerNeed, Cycle, Document, Initiative, InitiativeUpdate, Issue, IssueLabel, IssueSLA, Project, ProjectLabel, ProjectUpdate, Reaction, Release, ReleaseNote, and User. Names are case-sensitive. AuditEntry must be the only value and requires audit log permission and plan access; other streams may also require access to their feature. """ resourceTypes: [String!]! """ Signing secret, up to 256 characters. A secret is generated when omitted on create. """ secret: String """ UUID of the team whose events to deliver. Required unless allPublicTeams is true. """ teamId: String """ Public HTTPS endpoint that receives webhook POST requests, up to 1,000 characters. """ url: String! } """ A result and its pagination cursor. """ type WebhookEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: Webhook! } """ The result of a webhook mutation. """ type WebhookPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The webhook entity being mutated. """ webhook: Webhook! } """ A webhook event stream resource type that an OAuth application can subscribe to. """ enum WebhookResourceType { AgentSessionEvent AppUserNotification Attachment Comment Customer CustomerNeed Cycle Document Initiative InitiativeUpdate Issue IssueLabel IssueSLA OAuthAuthorization PermissionChange Project ProjectLabel ProjectUpdate Reaction Release ReleaseNote User } """ The result of a webhook secret rotation mutation. """ type WebhookRotateSecretPayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ The new webhook signing secret. """ secret: String! """ Whether the operation was successful. """ success: Boolean! } """ Changes to an existing webhook’s destination, event streams, delivery state, or signing secret. Omitted fields keep their current values. resourceTypes replaces the whole subscription list. The team scope cannot be changed through this input; create a separate webhook when you need a different scope. """ input WebhookUpdateInput { """ Whether matching events are delivered. Set false to pause delivery, or omit to keep the current setting. """ enabled: Boolean """ Display label, up to 64 characters. Must not contain a URL. """ label: String """ Event streams to subscribe to. Accepted values are Attachment, AuditEntry, Comment, Customer, CustomerNeed, Cycle, Document, Initiative, InitiativeUpdate, Issue, IssueLabel, IssueSLA, Project, ProjectLabel, ProjectUpdate, Reaction, Release, ReleaseNote, and User. Names are case-sensitive. AuditEntry must be the only value and requires audit log permission and plan access; other streams may also require access to their feature. """ resourceTypes: [String!] """ Replacement signing secret, up to 256 characters. Omit to keep the current secret. Update your receiver to verify later deliveries with the replacement. """ secret: String """ Public HTTPS endpoint that receives webhook POST requests, up to 1,000 characters. """ url: String } """ The workspace’s welcome notification configuration. When enabled, new members see the custom message; otherwise they see the default welcome message. """ type WelcomeMessage implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Whether new members receive the custom welcome message. False uses the default message. """ enabled: Boolean! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The custom welcome notification title. Null or an empty string uses 'Welcome to Linear'. """ title: String """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The user who last updated the welcome message configuration. Null if the user's account has been deleted. """ updatedBy: User } """ A notification containing a workspace welcome message, sent to newly joined users. """ type WelcomeMessageNotification implements Entity & Node & Notification { """ 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. """ actor: User """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The bot that caused the notification. """ botActor: ActorBot """ The category of the notification. """ category: NotificationCategory! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent. """ emailedAt: DateTime """ 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. """ externalUserActor: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The time at which the user marked the notification as read. Null if the notification is unread. """ readAt: DateTime """ 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. """ snoozedUntilAt: DateTime """ Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated. """ type: String! """ The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed. """ unsnoozedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The recipient user of this notification. """ user: User! """ Related welcome message. """ welcomeMessageId: String! } """ How an update activates a workflow after its condition filters are evaluated. """ enum WorkflowActivationMode { """ Run on any update while the conditions match. """ anyUpdate """ Run when a configured item is added to or removed from a collection and the conditions match. """ collectionChanged """ Run when the entity changes from not matching to matching the conditions. """ conditionsStartedMatching """ Run when a watched property changes and the conditions match. """ watchedPropertyChanged } """ A time-triggered automation workflow definition that executes on a recurring schedule. Cron job definitions are scoped to a team and contain a set of activities (actions) that run automatically according to the configured cron schedule, such as periodically assigning issues or sending notifications. """ type WorkflowCronJobDefinition implements Node { """ An array of activities that will be executed as part of the workflow cron job. """ activities: JSONObject! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the workflow cron job. """ creator: User! """ The description of the workflow cron job. """ description: String """ Whether the workflow cron job is enabled and will execute on its schedule. """ enabled: Boolean! """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The name of the workflow cron job. """ name: String! """ Recurring schedule which is used to execute the workflow cron job. """ schedule: JSONObject! """ The sort order of the workflow cron job definition within its siblings. """ sortOrder: String! """ The team associated with the workflow cron job. """ team: Team """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ The saved configuration for an automation, including Loops, triage rules, SLAs, release automations, and view notification subscriptions. triggerType and trigger describe what can start it; conditions and activationMode decide which events qualify; activities describe what it does. The enabled flag controls execution. Scope relations, such as team or project, determine where the workflow belongs and who can access it. """ type WorkflowDefinition implements Node { """ When an entity update should start the workflow. conditionsStartedMatching runs when the entity begins matching, anyUpdate runs while it matches, and watchedPropertyChanged or collectionChanged require the configured change. Null means the mode is inferred from the trigger and condition configuration. """ activationMode: WorkflowActivationMode """ The ordered list of activities (actions) that are executed when the workflow triggers, such as updating issue properties, sending notifications, or calling webhooks. """ activities: JSONObject! """ Whether the trigger’s team scope includes descendant teams. """ applyToSubTeams: Boolean! """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The color of the workflow as a HEX string. Used in the UI to visually identify the workflow. """ color: String """ A JSON array of conditions evaluated against the triggering entity. A condition uses the filter for that entity type, such as issueFilter or projectFilter; all applicable filters must match. Conditions can also specify watched properties or collection changes for the activation mode. Null means no condition filters are configured, but the trigger and access scope still apply. """ conditions: JSONObject """ The team view this workflow subscribes to. Null for workflows without a team view context. """ contextViewType: ContextViewType """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The user who created the workflow. """ creator: User! """ The context custom view associated with the workflow. """ customView: CustomView """ The contextual cycle view associated with the workflow. """ cycle: Cycle """ A summary of what the workflow does. Null when none is set. """ description: String """ Who can edit this workflow within its existing access scope. When unset, no additional owner-based restriction applies; callers still need the permissions required to manage the workflow. """ editAccess: WorkflowDefinitionEditAccess """ Whether the workflow is enabled and will execute when its trigger conditions are met. """ enabled: Boolean! """ The workflow’s display group. Null when it is ungrouped. """ groupName: String """ The icon of the workflow. Can be an emoji or a decorative icon type. """ icon: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The contextual initiative view associated with the workflow. """ initiative: Initiative """ The intelligence level used to run the workflow. When null, Auto is used. """ intelligence: WorkflowIntelligence """ The contextual label view associated with the workflow. """ label: IssueLabel """ The time the workflow last ran. Null if it has never run. """ lastExecutedAt: DateTime """ The user who last edited the workflow. Null if no editor is recorded or the user was deleted. """ lastUpdatedBy: User """ The name of the workflow. """ name: String! """ The user who owns the workflow. If not defined, it means the creator should be considered as the owner. """ owner: User """ Whether an issue-triggered workflow posts its results as a comment on the triggering issue. When false, results stay in the run. Approval requests and questions are still posted. """ postResultsToEntity: Boolean! """ The contextual project view associated with the workflow. """ project: Project """ Whether editAccess is more restrictive than everyone. Use editAccess to distinguish owner-only access from admin or team-owner access. """ restrictEditing: Boolean! @deprecated(reason: "Use editAccess instead.") """ Whether this workflow may run only once for each entity. When true, later matching events for an entity are skipped after a run has been recorded for it. This does not limit the workflow to one run across the workspace. """ runOnce: Boolean! """ The recurring schedule used by a scheduled trigger. startAt is a local calendar date; hour and optional minute are interpreted in the IANA timezone. type selects hours, days, weeks, months, or years, and interval gives the number of those units between runs. Weekly schedules may include daysOfWeek. Execution progress may be recorded in lastRecurredAt and lastRecurredAtTimestamp. Null means no schedule is stored. """ schedule: JSONObject """ The workflow definition's unique URL slug. """ slugId: String! """ The workflow’s position among workflows of the same type. Lower values sort first; returned as a string. """ sortOrder: String! """ A snapshot of this workflow’s run statistics. periods contains day, week, and month entries, each with the number of runs and their recorded cost; updatedAt is the computation time in Unix milliseconds. Statistics are computed separately from execution and can lag recent runs. Null means no statistics have been stored yet. """ stats: JSONObject """ The team that owns this workflow and provides its team access scope. applyToSubTeams can extend the trigger’s team scope to descendants. Null does not by itself mean every workspace event qualifies: the workflow may belong to a project or another view, and its conditions still apply. """ team: Team """ A flag that indicates whether the automation is in the trash. Trashed automations are archived and can be restored. Null when the automation is not trashed. """ trashed: Boolean """ The event that triggers the workflow, such as entity creation, update, or a specific state change. """ trigger: WorkflowTrigger! """ The event source: an entity type, recurring schedule, webhook, chat, or pull request. """ triggerType: WorkflowTriggerType! """ The workflow’s purpose: a Loop, triage rule, SLA, release automation, or view subscription. """ type: WorkflowType! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The contextual user view associated with the workflow. """ user: User """ The user view this workflow subscribes to. Null for workflows without a user view context. """ userContextViewType: UserContextViewType } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type WorkflowDefinitionConnection { """ The page's results paired with their cursors. """ edges: [WorkflowDefinitionEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [WorkflowDefinition!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ A result and its pagination cursor. """ type WorkflowDefinitionEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: WorkflowDefinition! } """ Who can edit a workflow within its existing access scope. """ enum WorkflowDefinitionEditAccess { """ Anyone with permission to manage the workflow. """ everyone """ Only the workflow owner. """ owner """ The workflow owner, team owners, and workspace administrators. """ teamOwners """ The workflow owner and workspace administrators. """ workspaceAdmins } """ Filters the workflow that created an issue, using its workflow definition ID. This describes creation provenance, not workflows that later updated the issue. `neq` and `nin` also match issues without a workflow source; use `{ null: false }` to require one. """ input WorkflowDefinitionIdComparator { """ Matches the given value. """ eq: ID """ Matches any value in the list. An empty list matches nothing. """ in: [ID!] """ Excludes the given value. """ neq: ID """ Excludes every value in the list, and includes null. An empty list adds no restriction. """ nin: [ID!] """ Set to true to match resources with no value, or false to require a value. For example, `{ null: true }` finds unset values; `{ eq: null }` is not a substitute. """ null: Boolean } """ A notification related to an automation workflow definition (loop), such as runs that failed to start. """ type WorkflowDefinitionNotification implements Entity & Node & Notification { """ 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. """ actor: User """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The bot that caused the notification. """ botActor: ActorBot """ The category of the notification. """ category: NotificationCategory! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent. """ emailedAt: DateTime """ 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. """ externalUserActor: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The time at which the user marked the notification as read. Null if the notification is unread. """ readAt: DateTime """ 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. """ snoozedUntilAt: DateTime """ Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated. """ type: String! """ The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed. """ unsnoozedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The recipient user of this notification. """ user: User! """ The workflow definition (loop) related to the notification. """ workflowDefinition: WorkflowDefinition! """ Identifier of the associated workflow definition (loop). """ workflowDefinitionId: String! } """ The intelligence level used for a workflow run. auto lets Linear choose. """ enum WorkflowIntelligence { auto high low medium } """ An issue status in a team’s workflow, such as Backlog, In Progress, or Done. Names and colors can be customized, while the status type determines behavior such as whether an issue is open or completed. Each team has its own status IDs, including when its workflow is inherited from a parent team. """ type WorkflowState implements Node { """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ Status color as a hexadecimal CSS color, such as #5E6AD2. """ color: String! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ Description of when to use the status. Null if none is set. """ description: String """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The parent team's workflow state that this state was inherited from. Null if the state is not inherited from a parent team. """ inheritedFrom: WorkflowState """ Issues currently in this status, with cursor pagination and optional filters. """ issues( """ Returns results after this cursor. Pair with `first` and the previous page's `endCursor` to fetch the next page. Keep the filters and ordering unchanged between pages. Cannot be combined with `last` or `before`. """ after: String """ Returns results before this cursor. Pair with `last` to paginate backward, using a cursor returned by the same connection. Keep the filters and ordering unchanged between pages. Cannot be combined with `first` or `after`. """ before: String """ Filter returned issues. """ filter: IssueFilter """ The maximum number of results to return, starting after `after` if supplied. Between 1 and 250. Defaults to 50 when neither `first` nor `last` is supplied. Cannot be combined with `last` or `before`. """ first: Int """ Includes archived resources alongside active ones. Defaults to false, which returns only active resources. This does not include deleted resources. """ includeArchived: Boolean """ The maximum number of results to return, ending before `before` if supplied. Between 1 and 250. Cannot be combined with `first` or `after`. """ last: Int """ Orders results by creation time or last meaningful update time. Defaults to `createdAt`. Results are newest first with `first` and oldest first with `last`; use the returned `endCursor` as `before` to continue backward. Cannot be combined with custom `sort` options on fields that support them. """ orderBy: PaginationOrderBy ): IssueConnection! """ The state's human-readable name (e.g., 'In Progress', 'Done', 'Backlog'). """ name: String! """ The status’s display position within its type group, with lower values first. The type determines the group; changing position does not move a status from one type to another. """ position: Float! """ The team whose issues can use this status. """ team: Team! """ The type of the state. One of "triage", "backlog", "unstarted", "started", "completed", "canceled", "duplicate". """ type: String! """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! } """ The result of archiving or restoring a resource. """ type WorkflowStateArchivePayload implements ArchivePayload { """ The resource after the operation, when returned. This can be null when the mutation does not return a resource, including after deletion. Check `success` for the operation's result. """ entity: WorkflowState """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! } """ Certain properties of a workflow state. """ type WorkflowStateChildWebhookPayload { """ The color of the workflow state. """ color: String! """ The ID of the workflow state. """ id: String! """ The name of the workflow state. """ name: String! """ The type of the workflow state. """ type: String! } """ A page of results. Read `nodes` for the resources, or `edges` if you also need a cursor for each result. Use `pageInfo` to fetch further pages; a connection may contain fewer results than the requested page size. """ type WorkflowStateConnection { """ The page's results paired with their cursors. """ edges: [WorkflowStateEdge!]! """ The resources on this page, in the same order as `edges`. Empty when no results match or no more results remain in the requested direction. """ nodes: [WorkflowState!]! """ Cursors and availability of pages before and after this one. """ pageInfo: PageInfo! } """ The name, color, and category of a new issue status for a team. Choose the type carefully: it cannot be changed after creation. The name must be unique among active statuses of that type in the team. """ input WorkflowStateCreateInput { """ Status color as a hexadecimal CSS color, such as #5E6AD2. """ color: String! """ A short explanation of when your team should use this status. Omit it when the name already provides enough context. """ description: String """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String """ The name of the state. """ name: String! """ Display position within the status type, with lower values first. Defaults to the end of that type; collisions are adjusted. """ position: Float """ UUID of the team that owns the status. """ teamId: String! """ The workflow category: backlog, unstarted, started, completed, or canceled. This controls issue lifecycle behavior and cannot be changed later. Triage and duplicate are reserved categories and cannot be created through this mutation. """ type: String! } """ A result and its pagination cursor. """ type WorkflowStateEdge { """ An opaque cursor for this result. Pass it unchanged to `before` or `after`. """ cursor: String! """ The resource at this position in the result list. """ node: WorkflowState! } """ Conditions used to select issue statuses. Supplied fields are combined with AND; use `or` to accept alternatives and `and` to group conditions. """ input WorkflowStateFilter { """ Conditions that the issue status must all match. These are combined with the other fields in this filter. """ and: [WorkflowStateFilter!] """ Filters by creation time. Use a fixed timestamp or a relative duration, such as `{ gte: "-P7D" }` for resources created in the last seven days. """ createdAt: DateComparator """ Conditions on the status’s explanatory text. """ description: StringComparator """ Filters by the resource's stable UUID. Use `eq` for one ID or `in` for a list of IDs. """ id: IDComparator """ Conditions on issues currently in this status. For example, length: { eq: 0 } selects statuses with no issues included by the query’s archive settings. """ issues: IssueCollectionFilter """ Conditions on the status name shown in Linear. Use type when you want the same workflow category across teams with different names. """ name: StringComparator """ Alternative conditions; the issue status must match at least one. Other fields at this level must still match. An empty list adds no condition. """ or: [WorkflowStateFilter!] """ Conditions on the status’s order within its workflow category. Lower values appear earlier. """ position: NumberComparator """ Conditions on the team that owns the status. """ team: TeamFilter """ Comparator for the workflow state type. Possible values are "triage", "backlog", "unstarted", "started", "completed", "canceled", "duplicate". """ type: StringComparator """ Filters by the last meaningful update time. Some background changes do not advance it. Use `gte` and `lt` together to select a time window. """ updatedAt: DateComparator } """ The result of a workflow state mutation, containing the created or updated state and a success indicator. """ type WorkflowStatePayload { """ Synchronization cursor used by Linear clients. External integrations can ignore this field. """ lastSyncId: Float! """ Whether the operation was successful. """ success: Boolean! """ The state that was created or updated. """ workflowState: WorkflowState! } """ Issue workflow state sorting options. """ input WorkflowStateSort { """ Whether to sort closed issues by recency """ closedIssuesOrderedByRecency: Boolean = false """ Whether nulls should be sorted first or last """ nulls: PaginationNulls = last """ The order for the individual sort """ order: PaginationSortOrder """ Whether to sort by status type without ordering individual statuses within each type. """ typeOnly: Boolean = false } """ Changes to an issue status. Omitted fields keep their values. The status type and team cannot be changed. """ input WorkflowStateUpdateInput { """ Status color as a hexadecimal CSS color, such as #5E6AD2. """ color: String """ The explanation of when to use this status. Pass null to clear it, or omit the field to keep the current description. """ description: String """ The name of the state. """ name: String """ Display position within the status type, with lower values first. Collisions are adjusted. """ position: Float } """ The event that starts a workflow, subject to its conditions and activation mode. """ enum WorkflowTrigger { addedToMergeQueue chatMessagePosted chatReactionAdded commentAdded commentResolved customerRequestAdded cycleEnded cycleStarted entityCreated entityCreatedOrUpdated entityRemoved entityUnarchived entityUpdated removedFromMergeQueue reviewSubmitted updateDue updatePosted webhookReceived } """ The entity or external source that supplies workflow events. """ enum WorkflowTriggerType { agentSession aiConversation chat cycle document initiative issue project pullRequest release schedule team webhook } """ The purpose of an automation workflow. """ enum WorkflowType { automation release sla triage triageAutomation viewSubscription } """ A workspace announcement delivered to a member's inbox. """ type WorkspaceAnnouncementNotification implements Entity & Node & Notification { """ 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. """ actor: User """ When the resource was archived, in UTC. Null while active, including after unarchiving. Archived resources still exist but are normally excluded from lists unless `includeArchived` is true. """ archivedAt: DateTime """ The bot that caused the notification. """ botActor: ActorBot """ The category of the notification. """ category: NotificationCategory! """ The resource’s recorded creation time, in UTC. Imports may preserve an earlier creation time. """ createdAt: DateTime! """ The time at which an email reminder for this notification was sent to the user. Null if no email reminder has been sent. """ emailedAt: DateTime """ 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. """ externalUserActor: ExternalUser """ The resource's unique UUID. This stays unchanged when the resource is renamed or moved; use it for stored references and mutations. """ id: ID! """ The time at which the user marked the notification as read. Null if the notification is unread. """ readAt: DateTime """ 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. """ snoozedUntilAt: DateTime """ Notification type. Determines the kind of event that triggered this notification and which associated entity fields will be populated. """ type: String! """ The time at which a notification was unsnoozed. Null if the notification has not been unsnoozed. """ unsnoozedAt: DateTime """ When the resource was last meaningfully updated, in UTC. Some background or housekeeping changes do not advance this timestamp. """ updatedAt: DateTime! """ The recipient user of this notification. """ user: User! """ Related workspace announcement. """ workspaceAnnouncementId: String! }