diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fb4812..a0356b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## 0.2.5 + +### Enhancements +* Add `allow_members_to_invite` to workspace settings + +### Bug Fixes +* Fix issues with API token +* Fix issues with updating workspace settings + ## 0.2.3 ### Enhancements diff --git a/docs/resources/workspace_settings.md b/docs/resources/workspace_settings.md index 82d2fdf..a4f6913 100644 --- a/docs/resources/workspace_settings.md +++ b/docs/resources/workspace_settings.md @@ -23,6 +23,7 @@ resource "linear_workspace_settings" "example" { ### Optional +- `allow_members_to_invite` (Boolean) Allow members to invite new members to the workspace. **Default** `true`. - `enable_git_linkback_messages` (Boolean) Enable git linkbacks for private repositories. **Default** `true`. - `enable_git_linkback_messages_public` (Boolean) Enable git linkbacks for public repositories. **Default** `false`. - `enable_roadmap` (Boolean) Enable roadmap for the workspace. **Default** `false`. diff --git a/internal/provider/client.go b/internal/provider/client.go index 7fdcc16..c3fcc63 100644 --- a/internal/provider/client.go +++ b/internal/provider/client.go @@ -8,7 +8,7 @@ type authedTransport struct { } func (t *authedTransport) RoundTrip(req *http.Request) (*http.Response, error) { - req.Header.Set("Authorization", "bearer "+t.token) + req.Header.Set("Authorization", t.token) return t.wrapped.RoundTrip(req) } diff --git a/internal/provider/generated.go b/internal/provider/generated.go index eec24a9..835ecb8 100644 --- a/internal/provider/generated.go +++ b/internal/provider/generated.go @@ -37,7 +37,7 @@ type IssueLabel struct { Color *string `json:"color"` // The parent label. Parent *IssueLabelParentIssueLabel `json:"parent"` - // The team that the label is associated with. If null, the label is associated with the global workspace.. + // The team that the label is associated with. If null, the label is associated with the global workspace. Team *IssueLabelTeam `json:"team"` } @@ -146,6 +146,8 @@ func (v *IssueLabelUpdateInput) GetColor() *string { return v.Color } type Organization struct { // The unique identifier of the entity. Id string `json:"id"` + // Whether member users are allowed to send invites + AllowMembersToInvite bool `json:"allowMembersToInvite"` // Whether the organization is using a roadmap. RoadmapEnabled bool `json:"roadmapEnabled"` // Whether the Git integration linkback messages should be sent to private repositories. @@ -157,6 +159,9 @@ type Organization struct { // GetId returns Organization.Id, and is useful for accessing the field via an interface. func (v *Organization) GetId() string { return v.Id } +// GetAllowMembersToInvite returns Organization.AllowMembersToInvite, and is useful for accessing the field via an interface. +func (v *Organization) GetAllowMembersToInvite() bool { return v.AllowMembersToInvite } + // GetRoadmapEnabled returns Organization.RoadmapEnabled, and is useful for accessing the field via an interface. func (v *Organization) GetRoadmapEnabled() bool { return v.RoadmapEnabled } @@ -168,15 +173,126 @@ func (v *Organization) GetGitPublicLinkbackMessagesEnabled() bool { return v.GitPublicLinkbackMessagesEnabled } +type OrganizationUpdateInput struct { + // The name of the organization. + Name string `json:"name,omitempty"` + // The logo of the organization. + LogoUrl string `json:"logoUrl,omitempty"` + // The URL key of the organization. + UrlKey string `json:"urlKey,omitempty"` + // How git branches are formatted. If null, default formatting will be used. + GitBranchFormat string `json:"gitBranchFormat,omitempty"` + // Whether the Git integration linkback messages should be sent for private repositories. + GitLinkbackMessagesEnabled bool `json:"gitLinkbackMessagesEnabled"` + // Whether the Git integration linkback messages should be sent for public repositories. + GitPublicLinkbackMessagesEnabled bool `json:"gitPublicLinkbackMessagesEnabled"` + // Whether the organization is using roadmap. + RoadmapEnabled bool `json:"roadmapEnabled"` + // The frequency at which project updates are sent. + ProjectUpdatesReminderFrequency ProjectUpdateReminderFrequency `json:"projectUpdatesReminderFrequency,omitempty"` + // The day at which project updates are sent. + ProjectUpdateRemindersDay Day `json:"projectUpdateRemindersDay,omitempty"` + // The hour at which project updates are sent. + ProjectUpdateRemindersHour float64 `json:"projectUpdateRemindersHour,omitempty"` + // Whether the organization has opted for reduced customer support attachment information. + ReducedPersonalInformation bool `json:"reducedPersonalInformation,omitempty"` + // Whether the organization has opted for having to approve all OAuth applications for install. + OauthAppReview bool `json:"oauthAppReview,omitempty"` + // Linear Preview feature flags + LinearPreviewFlags map[string]interface{} `json:"linearPreviewFlags,omitempty"` + // List of services that are allowed to be used for login. + AllowedAuthServices []string `json:"allowedAuthServices,omitempty"` + // Internal. Whether SLAs have been enabled for the organization. + SlaEnabled bool `json:"slaEnabled,omitempty"` + // Which day count to use for SLA calculation. + SlaDayCount SLADayCountType `json:"slaDayCount,omitempty"` + // Whether member users are allowed to send invites. + AllowMembersToInvite bool `json:"allowMembersToInvite"` +} + +// GetName returns OrganizationUpdateInput.Name, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetName() string { return v.Name } + +// GetLogoUrl returns OrganizationUpdateInput.LogoUrl, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetLogoUrl() string { return v.LogoUrl } + +// GetUrlKey returns OrganizationUpdateInput.UrlKey, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetUrlKey() string { return v.UrlKey } + +// GetGitBranchFormat returns OrganizationUpdateInput.GitBranchFormat, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetGitBranchFormat() string { return v.GitBranchFormat } + +// GetGitLinkbackMessagesEnabled returns OrganizationUpdateInput.GitLinkbackMessagesEnabled, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetGitLinkbackMessagesEnabled() bool { + return v.GitLinkbackMessagesEnabled +} + +// GetGitPublicLinkbackMessagesEnabled returns OrganizationUpdateInput.GitPublicLinkbackMessagesEnabled, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetGitPublicLinkbackMessagesEnabled() bool { + return v.GitPublicLinkbackMessagesEnabled +} + +// GetRoadmapEnabled returns OrganizationUpdateInput.RoadmapEnabled, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetRoadmapEnabled() bool { return v.RoadmapEnabled } + +// GetProjectUpdatesReminderFrequency returns OrganizationUpdateInput.ProjectUpdatesReminderFrequency, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetProjectUpdatesReminderFrequency() ProjectUpdateReminderFrequency { + return v.ProjectUpdatesReminderFrequency +} + +// GetProjectUpdateRemindersDay returns OrganizationUpdateInput.ProjectUpdateRemindersDay, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetProjectUpdateRemindersDay() Day { + return v.ProjectUpdateRemindersDay +} + +// GetProjectUpdateRemindersHour returns OrganizationUpdateInput.ProjectUpdateRemindersHour, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetProjectUpdateRemindersHour() float64 { + return v.ProjectUpdateRemindersHour +} + +// GetReducedPersonalInformation returns OrganizationUpdateInput.ReducedPersonalInformation, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetReducedPersonalInformation() bool { + return v.ReducedPersonalInformation +} + +// GetOauthAppReview returns OrganizationUpdateInput.OauthAppReview, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetOauthAppReview() bool { return v.OauthAppReview } + +// GetLinearPreviewFlags returns OrganizationUpdateInput.LinearPreviewFlags, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetLinearPreviewFlags() map[string]interface{} { + return v.LinearPreviewFlags +} + +// GetAllowedAuthServices returns OrganizationUpdateInput.AllowedAuthServices, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetAllowedAuthServices() []string { return v.AllowedAuthServices } + +// GetSlaEnabled returns OrganizationUpdateInput.SlaEnabled, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetSlaEnabled() bool { return v.SlaEnabled } + +// GetSlaDayCount returns OrganizationUpdateInput.SlaDayCount, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetSlaDayCount() SLADayCountType { return v.SlaDayCount } + +// GetAllowMembersToInvite returns OrganizationUpdateInput.AllowMembersToInvite, and is useful for accessing the field via an interface. +func (v *OrganizationUpdateInput) GetAllowMembersToInvite() bool { return v.AllowMembersToInvite } + // The frequency at which to send project update reminders. type ProjectUpdateReminderFrequency string const ( ProjectUpdateReminderFrequencyWeek ProjectUpdateReminderFrequency = "week" ProjectUpdateReminderFrequencyTwoweeks ProjectUpdateReminderFrequency = "twoWeeks" + ProjectUpdateReminderFrequencyMonth ProjectUpdateReminderFrequency = "month" ProjectUpdateReminderFrequencyNever ProjectUpdateReminderFrequency = "never" ) +// Which day count to use for SLA calculations +type SLADayCountType string + +const ( + SLADayCountTypeAll SLADayCountType = "all" + SLADayCountTypeOnlybusinessdays SLADayCountType = "onlyBusinessDays" +) + // Team includes the GraphQL fields of Team requested by the fragment Team. // The GraphQL type's documentation follows. // @@ -224,9 +340,9 @@ type Team struct { CycleIssueAutoAssignStarted bool `json:"cycleIssueAutoAssignStarted"` // Auto assign completed issues to current cycle. CycleIssueAutoAssignCompleted bool `json:"cycleIssueAutoAssignCompleted"` - // Only allow issues issues with cycles in Active Issues. + // Auto assign issues to current cycle if in active status. CycleLockToActive bool `json:"cycleLockToActive"` - // The issue estimation type to use. + // The issue estimation type to use. Must be one of "notUsed", "exponential", "fibonacci", "linear", "tShirt". IssueEstimationType string `json:"issueEstimationType"` // Whether to allow zeros in issues estimates. IssueEstimationAllowZero bool `json:"issueEstimationAllowZero"` @@ -347,11 +463,13 @@ type TeamCreateInput struct { UpcomingCycleCount float64 `json:"upcomingCycleCount"` // Whether triage mode is enabled for the team. TriageEnabled bool `json:"triageEnabled"` + // Whether an issue needs to have a priority set before leaving triage. + RequirePriorityToLeaveTriage bool `json:"requirePriorityToLeaveTriage"` // The timezone of the team. Timezone string `json:"timezone"` // Whether issues without priority should be sorted first. IssueOrderingNoPriorityFirst bool `json:"issueOrderingNoPriorityFirst"` - // The issue estimation type to use. + // The issue estimation type to use. Must be one of "notUsed", "exponential", "fibonacci", "linear", "tShirt". IssueEstimationType string `json:"issueEstimationType"` // Whether to allow zeros in issues estimates. IssueEstimationAllowZero bool `json:"issueEstimationAllowZero"` @@ -367,6 +485,8 @@ type TeamCreateInput struct { DefaultTemplateForMembersId string `json:"defaultTemplateForMembersId,omitempty"` // The identifier of the default template for non-members of this team. DefaultTemplateForNonMembersId string `json:"defaultTemplateForNonMembersId,omitempty"` + // The identifier of the default project template of this team. + DefaultProjectTemplateId string `json:"defaultProjectTemplateId,omitempty"` // Internal. Whether the team is private or not. Private bool `json:"private"` // Period after which issues are automatically closed, in months. @@ -429,6 +549,11 @@ func (v *TeamCreateInput) GetUpcomingCycleCount() float64 { return v.UpcomingCyc // GetTriageEnabled returns TeamCreateInput.TriageEnabled, and is useful for accessing the field via an interface. func (v *TeamCreateInput) GetTriageEnabled() bool { return v.TriageEnabled } +// GetRequirePriorityToLeaveTriage returns TeamCreateInput.RequirePriorityToLeaveTriage, and is useful for accessing the field via an interface. +func (v *TeamCreateInput) GetRequirePriorityToLeaveTriage() bool { + return v.RequirePriorityToLeaveTriage +} + // GetTimezone returns TeamCreateInput.Timezone, and is useful for accessing the field via an interface. func (v *TeamCreateInput) GetTimezone() string { return v.Timezone } @@ -467,6 +592,9 @@ func (v *TeamCreateInput) GetDefaultTemplateForNonMembersId() string { return v.DefaultTemplateForNonMembersId } +// GetDefaultProjectTemplateId returns TeamCreateInput.DefaultProjectTemplateId, and is useful for accessing the field via an interface. +func (v *TeamCreateInput) GetDefaultProjectTemplateId() string { return v.DefaultProjectTemplateId } + // GetPrivate returns TeamCreateInput.Private, and is useful for accessing the field via an interface. func (v *TeamCreateInput) GetPrivate() bool { return v.Private } @@ -517,7 +645,7 @@ type TeamUpdateInput struct { Timezone string `json:"timezone"` // Whether issues without priority should be sorted first. IssueOrderingNoPriorityFirst bool `json:"issueOrderingNoPriorityFirst"` - // The issue estimation type to use. + // The issue estimation type to use. Must be one of "notUsed", "exponential", "fibonacci", "linear", "tShirt". IssueEstimationType string `json:"issueEstimationType"` // Whether to allow zeros in issues estimates. IssueEstimationAllowZero bool `json:"issueEstimationAllowZero"` @@ -533,6 +661,8 @@ type TeamUpdateInput struct { StartWorkflowStateId string `json:"startWorkflowStateId,omitempty"` // The workflow state into which issues are moved when a review has been requested for the PR. ReviewWorkflowStateId string `json:"reviewWorkflowStateId,omitempty"` + // The workflow state into which issues are moved when a PR is ready to be merged. + MergeableWorkflowStateId string `json:"mergeableWorkflowStateId,omitempty"` // The workflow state into which issues are moved when a PR has been merged. MergeWorkflowStateId string `json:"mergeWorkflowStateId,omitempty"` // Whether to send new issue notifications to Slack. @@ -547,10 +677,14 @@ type TeamUpdateInput struct { DefaultTemplateForMembersId string `json:"defaultTemplateForMembersId,omitempty"` // The identifier of the default template for non-members of this team. DefaultTemplateForNonMembersId string `json:"defaultTemplateForNonMembersId,omitempty"` + // The identifier of the default project template of this team. + DefaultProjectTemplateId string `json:"defaultProjectTemplateId,omitempty"` // Whether the team is private or not. Private bool `json:"private"` // Whether triage mode is enabled for the team. TriageEnabled bool `json:"triageEnabled"` + // Whether an issue needs to have a priority set before leaving triage. + RequirePriorityToLeaveTriage bool `json:"requirePriorityToLeaveTriage"` // Default status for newly created issues. DefaultIssueStateId string `json:"defaultIssueStateId,omitempty"` // Period after which issues are automatically closed, in months. @@ -641,6 +775,9 @@ func (v *TeamUpdateInput) GetStartWorkflowStateId() string { return v.StartWorkf // GetReviewWorkflowStateId returns TeamUpdateInput.ReviewWorkflowStateId, and is useful for accessing the field via an interface. func (v *TeamUpdateInput) GetReviewWorkflowStateId() string { return v.ReviewWorkflowStateId } +// GetMergeableWorkflowStateId returns TeamUpdateInput.MergeableWorkflowStateId, and is useful for accessing the field via an interface. +func (v *TeamUpdateInput) GetMergeableWorkflowStateId() string { return v.MergeableWorkflowStateId } + // GetMergeWorkflowStateId returns TeamUpdateInput.MergeWorkflowStateId, and is useful for accessing the field via an interface. func (v *TeamUpdateInput) GetMergeWorkflowStateId() string { return v.MergeWorkflowStateId } @@ -666,12 +803,20 @@ func (v *TeamUpdateInput) GetDefaultTemplateForNonMembersId() string { return v.DefaultTemplateForNonMembersId } +// GetDefaultProjectTemplateId returns TeamUpdateInput.DefaultProjectTemplateId, and is useful for accessing the field via an interface. +func (v *TeamUpdateInput) GetDefaultProjectTemplateId() string { return v.DefaultProjectTemplateId } + // GetPrivate returns TeamUpdateInput.Private, and is useful for accessing the field via an interface. func (v *TeamUpdateInput) GetPrivate() bool { return v.Private } // GetTriageEnabled returns TeamUpdateInput.TriageEnabled, and is useful for accessing the field via an interface. func (v *TeamUpdateInput) GetTriageEnabled() bool { return v.TriageEnabled } +// GetRequirePriorityToLeaveTriage returns TeamUpdateInput.RequirePriorityToLeaveTriage, and is useful for accessing the field via an interface. +func (v *TeamUpdateInput) GetRequirePriorityToLeaveTriage() bool { + return v.RequirePriorityToLeaveTriage +} + // GetDefaultIssueStateId returns TeamUpdateInput.DefaultIssueStateId, and is useful for accessing the field via an interface. func (v *TeamUpdateInput) GetDefaultIssueStateId() string { return v.DefaultIssueStateId } @@ -782,93 +927,6 @@ type TeamWorkflowStartWorkflowState struct { // GetId returns TeamWorkflowStartWorkflowState.Id, and is useful for accessing the field via an interface. func (v *TeamWorkflowStartWorkflowState) GetId() string { return v.Id } -type UpdateOrganizationInput struct { - // The name of the organization. - Name string `json:"name,omitempty"` - // The logo of the organization. - LogoUrl string `json:"logoUrl,omitempty"` - // The URL key of the organization. - UrlKey string `json:"urlKey,omitempty"` - // How git branches are formatted. If null, default formatting will be used. - GitBranchFormat string `json:"gitBranchFormat,omitempty"` - // Whether the Git integration linkback messages should be sent for private repositories. - GitLinkbackMessagesEnabled bool `json:"gitLinkbackMessagesEnabled"` - // Whether the Git integration linkback messages should be sent for public repositories. - GitPublicLinkbackMessagesEnabled bool `json:"gitPublicLinkbackMessagesEnabled"` - // Whether the organization is using roadmap. - RoadmapEnabled bool `json:"roadmapEnabled"` - // The frequency at which project updates are sent. - ProjectUpdatesReminderFrequency ProjectUpdateReminderFrequency `json:"projectUpdatesReminderFrequency,omitempty"` - // The day at which project updates are sent. - ProjectUpdateRemindersDay Day `json:"projectUpdateRemindersDay,omitempty"` - // The hour at which project updates are sent. - ProjectUpdateRemindersHour float64 `json:"projectUpdateRemindersHour,omitempty"` - // Whether the organization has opted for reduced customer support attachment information. - ReducedPersonalInformation bool `json:"reducedPersonalInformation,omitempty"` - // Whether the organization has opted for having to approve all OAuth applications for install. - OauthAppReview bool `json:"oauthAppReview,omitempty"` - // Linear Preview feature flags - LinearPreviewFlags map[string]interface{} `json:"linearPreviewFlags,omitempty"` - // List of services that are allowed to be used for login. - AllowedAuthServices []string `json:"allowedAuthServices,omitempty"` -} - -// GetName returns UpdateOrganizationInput.Name, and is useful for accessing the field via an interface. -func (v *UpdateOrganizationInput) GetName() string { return v.Name } - -// GetLogoUrl returns UpdateOrganizationInput.LogoUrl, and is useful for accessing the field via an interface. -func (v *UpdateOrganizationInput) GetLogoUrl() string { return v.LogoUrl } - -// GetUrlKey returns UpdateOrganizationInput.UrlKey, and is useful for accessing the field via an interface. -func (v *UpdateOrganizationInput) GetUrlKey() string { return v.UrlKey } - -// GetGitBranchFormat returns UpdateOrganizationInput.GitBranchFormat, and is useful for accessing the field via an interface. -func (v *UpdateOrganizationInput) GetGitBranchFormat() string { return v.GitBranchFormat } - -// GetGitLinkbackMessagesEnabled returns UpdateOrganizationInput.GitLinkbackMessagesEnabled, and is useful for accessing the field via an interface. -func (v *UpdateOrganizationInput) GetGitLinkbackMessagesEnabled() bool { - return v.GitLinkbackMessagesEnabled -} - -// GetGitPublicLinkbackMessagesEnabled returns UpdateOrganizationInput.GitPublicLinkbackMessagesEnabled, and is useful for accessing the field via an interface. -func (v *UpdateOrganizationInput) GetGitPublicLinkbackMessagesEnabled() bool { - return v.GitPublicLinkbackMessagesEnabled -} - -// GetRoadmapEnabled returns UpdateOrganizationInput.RoadmapEnabled, and is useful for accessing the field via an interface. -func (v *UpdateOrganizationInput) GetRoadmapEnabled() bool { return v.RoadmapEnabled } - -// GetProjectUpdatesReminderFrequency returns UpdateOrganizationInput.ProjectUpdatesReminderFrequency, and is useful for accessing the field via an interface. -func (v *UpdateOrganizationInput) GetProjectUpdatesReminderFrequency() ProjectUpdateReminderFrequency { - return v.ProjectUpdatesReminderFrequency -} - -// GetProjectUpdateRemindersDay returns UpdateOrganizationInput.ProjectUpdateRemindersDay, and is useful for accessing the field via an interface. -func (v *UpdateOrganizationInput) GetProjectUpdateRemindersDay() Day { - return v.ProjectUpdateRemindersDay -} - -// GetProjectUpdateRemindersHour returns UpdateOrganizationInput.ProjectUpdateRemindersHour, and is useful for accessing the field via an interface. -func (v *UpdateOrganizationInput) GetProjectUpdateRemindersHour() float64 { - return v.ProjectUpdateRemindersHour -} - -// GetReducedPersonalInformation returns UpdateOrganizationInput.ReducedPersonalInformation, and is useful for accessing the field via an interface. -func (v *UpdateOrganizationInput) GetReducedPersonalInformation() bool { - return v.ReducedPersonalInformation -} - -// GetOauthAppReview returns UpdateOrganizationInput.OauthAppReview, and is useful for accessing the field via an interface. -func (v *UpdateOrganizationInput) GetOauthAppReview() bool { return v.OauthAppReview } - -// GetLinearPreviewFlags returns UpdateOrganizationInput.LinearPreviewFlags, and is useful for accessing the field via an interface. -func (v *UpdateOrganizationInput) GetLinearPreviewFlags() map[string]interface{} { - return v.LinearPreviewFlags -} - -// GetAllowedAuthServices returns UpdateOrganizationInput.AllowedAuthServices, and is useful for accessing the field via an interface. -func (v *UpdateOrganizationInput) GetAllowedAuthServices() []string { return v.AllowedAuthServices } - // WorkflowState includes the GraphQL fields of WorkflowState requested by the fragment WorkflowState. // The GraphQL type's documentation follows. // @@ -882,7 +940,7 @@ type WorkflowState struct { Color string `json:"color"` // Description of the state. Description *string `json:"description"` - // The type of the state. + // The type of the state. One of "triage", "backlog", "unstarted", "started", "completed", "canceled". Type string `json:"type"` // The position of the state in the team flow. Position float64 `json:"position"` @@ -1166,11 +1224,11 @@ func (v *__updateWorkflowStateInput) GetId() string { return v.Id } // __updateWorkspaceSettingsInput is used internally by genqlient type __updateWorkspaceSettingsInput struct { - Input UpdateOrganizationInput `json:"input"` + Input OrganizationUpdateInput `json:"input"` } // GetInput returns __updateWorkspaceSettingsInput.Input, and is useful for accessing the field via an interface. -func (v *__updateWorkspaceSettingsInput) GetInput() UpdateOrganizationInput { return v.Input } +func (v *__updateWorkspaceSettingsInput) GetInput() OrganizationUpdateInput { return v.Input } // createLabelIssueLabelCreateIssueLabelPayload includes the requested fields of the GraphQL type IssueLabelPayload. type createLabelIssueLabelCreateIssueLabelPayload struct { @@ -1671,63 +1729,74 @@ func (v *createWorkflowStateWorkflowStateCreateWorkflowStatePayloadWorkflowState return &retval, nil } -// deleteLabelIssueLabelDeleteArchivePayload includes the requested fields of the GraphQL type ArchivePayload. -type deleteLabelIssueLabelDeleteArchivePayload struct { +// deleteLabelIssueLabelDeleteDeletePayload includes the requested fields of the GraphQL type DeletePayload. +// The GraphQL type's documentation follows. +// +// A generic payload return from entity deletion mutations. +type deleteLabelIssueLabelDeleteDeletePayload struct { // Whether the operation was successful. Success bool `json:"success"` } -// GetSuccess returns deleteLabelIssueLabelDeleteArchivePayload.Success, and is useful for accessing the field via an interface. -func (v *deleteLabelIssueLabelDeleteArchivePayload) GetSuccess() bool { return v.Success } +// GetSuccess returns deleteLabelIssueLabelDeleteDeletePayload.Success, and is useful for accessing the field via an interface. +func (v *deleteLabelIssueLabelDeleteDeletePayload) GetSuccess() bool { return v.Success } // deleteLabelResponse is returned by deleteLabel on success. type deleteLabelResponse struct { // Deletes an issue label. - IssueLabelDelete deleteLabelIssueLabelDeleteArchivePayload `json:"issueLabelDelete"` + IssueLabelDelete deleteLabelIssueLabelDeleteDeletePayload `json:"issueLabelDelete"` } // GetIssueLabelDelete returns deleteLabelResponse.IssueLabelDelete, and is useful for accessing the field via an interface. -func (v *deleteLabelResponse) GetIssueLabelDelete() deleteLabelIssueLabelDeleteArchivePayload { +func (v *deleteLabelResponse) GetIssueLabelDelete() deleteLabelIssueLabelDeleteDeletePayload { return v.IssueLabelDelete } // deleteTeamResponse is returned by deleteTeam on success. type deleteTeamResponse struct { // Deletes a team. - TeamDelete deleteTeamTeamDeleteArchivePayload `json:"teamDelete"` + TeamDelete deleteTeamTeamDeleteDeletePayload `json:"teamDelete"` } // GetTeamDelete returns deleteTeamResponse.TeamDelete, and is useful for accessing the field via an interface. -func (v *deleteTeamResponse) GetTeamDelete() deleteTeamTeamDeleteArchivePayload { return v.TeamDelete } +func (v *deleteTeamResponse) GetTeamDelete() deleteTeamTeamDeleteDeletePayload { return v.TeamDelete } -// deleteTeamTeamDeleteArchivePayload includes the requested fields of the GraphQL type ArchivePayload. -type deleteTeamTeamDeleteArchivePayload struct { +// deleteTeamTeamDeleteDeletePayload includes the requested fields of the GraphQL type DeletePayload. +// The GraphQL type's documentation follows. +// +// A generic payload return from entity deletion mutations. +type deleteTeamTeamDeleteDeletePayload struct { // Whether the operation was successful. Success bool `json:"success"` } -// GetSuccess returns deleteTeamTeamDeleteArchivePayload.Success, and is useful for accessing the field via an interface. -func (v *deleteTeamTeamDeleteArchivePayload) GetSuccess() bool { return v.Success } +// GetSuccess returns deleteTeamTeamDeleteDeletePayload.Success, and is useful for accessing the field via an interface. +func (v *deleteTeamTeamDeleteDeletePayload) GetSuccess() bool { return v.Success } // deleteWorkflowStateResponse is returned by deleteWorkflowState on success. type deleteWorkflowStateResponse struct { // Archives a state. Only states with issues that have all been archived can be archived. - WorkflowStateArchive deleteWorkflowStateWorkflowStateArchiveArchivePayload `json:"workflowStateArchive"` + WorkflowStateArchive deleteWorkflowStateWorkflowStateArchiveWorkflowStateArchivePayload `json:"workflowStateArchive"` } // GetWorkflowStateArchive returns deleteWorkflowStateResponse.WorkflowStateArchive, and is useful for accessing the field via an interface. -func (v *deleteWorkflowStateResponse) GetWorkflowStateArchive() deleteWorkflowStateWorkflowStateArchiveArchivePayload { +func (v *deleteWorkflowStateResponse) GetWorkflowStateArchive() deleteWorkflowStateWorkflowStateArchiveWorkflowStateArchivePayload { return v.WorkflowStateArchive } -// deleteWorkflowStateWorkflowStateArchiveArchivePayload includes the requested fields of the GraphQL type ArchivePayload. -type deleteWorkflowStateWorkflowStateArchiveArchivePayload struct { +// deleteWorkflowStateWorkflowStateArchiveWorkflowStateArchivePayload includes the requested fields of the GraphQL type WorkflowStateArchivePayload. +// The GraphQL type's documentation follows. +// +// A generic payload return from entity archive mutations. +type deleteWorkflowStateWorkflowStateArchiveWorkflowStateArchivePayload struct { // Whether the operation was successful. Success bool `json:"success"` } -// GetSuccess returns deleteWorkflowStateWorkflowStateArchiveArchivePayload.Success, and is useful for accessing the field via an interface. -func (v *deleteWorkflowStateWorkflowStateArchiveArchivePayload) GetSuccess() bool { return v.Success } +// GetSuccess returns deleteWorkflowStateWorkflowStateArchiveWorkflowStateArchivePayload.Success, and is useful for accessing the field via an interface. +func (v *deleteWorkflowStateWorkflowStateArchiveWorkflowStateArchivePayload) GetSuccess() bool { + return v.Success +} // findTeamLabelIssueLabelsIssueLabelConnection includes the requested fields of the GraphQL type IssueLabelConnection. type findTeamLabelIssueLabelsIssueLabelConnection struct { @@ -1814,7 +1883,7 @@ func (v *findWorkspaceLabelIssueLabelsIssueLabelConnection) GetNodes() []findWor type findWorkspaceLabelIssueLabelsIssueLabelConnectionNodesIssueLabel struct { // The unique identifier of the entity. Id string `json:"id"` - // The team that the label is associated with. If null, the label is associated with the global workspace.. + // The team that the label is associated with. If null, the label is associated with the global workspace. Team findWorkspaceLabelIssueLabelsIssueLabelConnectionNodesIssueLabelTeam `json:"team"` } @@ -2541,6 +2610,11 @@ type getWorkspaceSettingsOrganization struct { // GetId returns getWorkspaceSettingsOrganization.Id, and is useful for accessing the field via an interface. func (v *getWorkspaceSettingsOrganization) GetId() string { return v.Organization.Id } +// GetAllowMembersToInvite returns getWorkspaceSettingsOrganization.AllowMembersToInvite, and is useful for accessing the field via an interface. +func (v *getWorkspaceSettingsOrganization) GetAllowMembersToInvite() bool { + return v.Organization.AllowMembersToInvite +} + // GetRoadmapEnabled returns getWorkspaceSettingsOrganization.RoadmapEnabled, and is useful for accessing the field via an interface. func (v *getWorkspaceSettingsOrganization) GetRoadmapEnabled() bool { return v.Organization.RoadmapEnabled @@ -2584,6 +2658,8 @@ func (v *getWorkspaceSettingsOrganization) UnmarshalJSON(b []byte) error { type __premarshalgetWorkspaceSettingsOrganization struct { Id string `json:"id"` + AllowMembersToInvite bool `json:"allowMembersToInvite"` + RoadmapEnabled bool `json:"roadmapEnabled"` GitLinkbackMessagesEnabled bool `json:"gitLinkbackMessagesEnabled"` @@ -2603,6 +2679,7 @@ func (v *getWorkspaceSettingsOrganization) __premarshalJSON() (*__premarshalgetW var retval __premarshalgetWorkspaceSettingsOrganization retval.Id = v.Organization.Id + retval.AllowMembersToInvite = v.Organization.AllowMembersToInvite retval.RoadmapEnabled = v.Organization.RoadmapEnabled retval.GitLinkbackMessagesEnabled = v.Organization.GitLinkbackMessagesEnabled retval.GitPublicLinkbackMessagesEnabled = v.Organization.GitPublicLinkbackMessagesEnabled @@ -3258,6 +3335,11 @@ func (v *updateWorkspaceSettingsOrganizationUpdateOrganizationPayloadOrganizatio return v.Organization.Id } +// GetAllowMembersToInvite returns updateWorkspaceSettingsOrganizationUpdateOrganizationPayloadOrganization.AllowMembersToInvite, and is useful for accessing the field via an interface. +func (v *updateWorkspaceSettingsOrganizationUpdateOrganizationPayloadOrganization) GetAllowMembersToInvite() bool { + return v.Organization.AllowMembersToInvite +} + // GetRoadmapEnabled returns updateWorkspaceSettingsOrganizationUpdateOrganizationPayloadOrganization.RoadmapEnabled, and is useful for accessing the field via an interface. func (v *updateWorkspaceSettingsOrganizationUpdateOrganizationPayloadOrganization) GetRoadmapEnabled() bool { return v.Organization.RoadmapEnabled @@ -3301,6 +3383,8 @@ func (v *updateWorkspaceSettingsOrganizationUpdateOrganizationPayloadOrganizatio type __premarshalupdateWorkspaceSettingsOrganizationUpdateOrganizationPayloadOrganization struct { Id string `json:"id"` + AllowMembersToInvite bool `json:"allowMembersToInvite"` + RoadmapEnabled bool `json:"roadmapEnabled"` GitLinkbackMessagesEnabled bool `json:"gitLinkbackMessagesEnabled"` @@ -3320,6 +3404,7 @@ func (v *updateWorkspaceSettingsOrganizationUpdateOrganizationPayloadOrganizatio var retval __premarshalupdateWorkspaceSettingsOrganizationUpdateOrganizationPayloadOrganization retval.Id = v.Organization.Id + retval.AllowMembersToInvite = v.Organization.AllowMembersToInvite retval.RoadmapEnabled = v.Organization.RoadmapEnabled retval.GitLinkbackMessagesEnabled = v.Organization.GitLinkbackMessagesEnabled retval.GitPublicLinkbackMessagesEnabled = v.Organization.GitPublicLinkbackMessagesEnabled @@ -3979,6 +4064,7 @@ query getWorkspaceSettings { } fragment Organization on Organization { id + allowMembersToInvite roadmapEnabled gitLinkbackMessagesEnabled gitPublicLinkbackMessagesEnabled @@ -4219,12 +4305,12 @@ fragment WorkflowState on WorkflowState { func updateWorkspaceSettings( ctx context.Context, client graphql.Client, - input UpdateOrganizationInput, + input OrganizationUpdateInput, ) (*updateWorkspaceSettingsResponse, error) { req := &graphql.Request{ OpName: "updateWorkspaceSettings", Query: ` -mutation updateWorkspaceSettings ($input: UpdateOrganizationInput!) { +mutation updateWorkspaceSettings ($input: OrganizationUpdateInput!) { organizationUpdate(input: $input) { organization { ... Organization @@ -4233,6 +4319,7 @@ mutation updateWorkspaceSettings ($input: UpdateOrganizationInput!) { } fragment Organization on Organization { id + allowMembersToInvite roadmapEnabled gitLinkbackMessagesEnabled gitPublicLinkbackMessagesEnabled diff --git a/internal/provider/resource_team.graphql b/internal/provider/resource_team.graphql index e0edcdd..2cc69de 100644 --- a/internal/provider/resource_team.graphql +++ b/internal/provider/resource_team.graphql @@ -45,6 +45,7 @@ query getTeam($key: String!) { # @genqlient(for: "TeamCreateInput.organizationId", omitempty: true) # @genqlient(for: "TeamCreateInput.defaultTemplateForMembersId", omitempty: true) # @genqlient(for: "TeamCreateInput.defaultTemplateForNonMembersId", omitempty: true) +# @genqlient(for: "TeamCreateInput.defaultProjectTemplateId", omitempty: true) # @genqlient(for: "TeamCreateInput.markedAsDuplicateWorkflowStateId", omitempty: true) # @genqlient(for: "TeamCreateInput.autoCloseStateId", omitempty: true) mutation createTeam( @@ -67,12 +68,14 @@ mutation createTeam( # @genqlient(for: "TeamUpdateInput.draftWorkflowStateId", omitempty: true) # @genqlient(for: "TeamUpdateInput.startWorkflowStateId", omitempty: true) # @genqlient(for: "TeamUpdateInput.reviewWorkflowStateId", omitempty: true) +# @genqlient(for: "TeamUpdateInput.mergeableWorkflowStateId", omitempty: true) # @genqlient(for: "TeamUpdateInput.mergeWorkflowStateId", omitempty: true) # @genqlient(for: "TeamUpdateInput.defaultIssueStateId", omitempty: true) # @genqlient(for: "TeamUpdateInput.markedAsDuplicateWorkflowStateId", omitempty: true) # @genqlient(for: "TeamUpdateInput.autoCloseStateId", omitempty: true) # @genqlient(for: "TeamUpdateInput.defaultTemplateForMembersId", omitempty: true) # @genqlient(for: "TeamUpdateInput.defaultTemplateForNonMembersId", omitempty: true) +# @genqlient(for: "TeamUpdateInput.defaultProjectTemplateId", omitempty: true) mutation updateTeam( $input: TeamUpdateInput!, $id: String! diff --git a/internal/provider/resource_workspace_settings.go b/internal/provider/resource_workspace_settings.go index bcfbbc7..3002721 100644 --- a/internal/provider/resource_workspace_settings.go +++ b/internal/provider/resource_workspace_settings.go @@ -28,6 +28,7 @@ type WorkspaceSettingsResource struct { type WorkspaceSettingsResourceModel struct { Id types.String `tfsdk:"id"` + AllowMembersToInvite types.Bool `tfsdk:"allow_members_to_invite"` EnableRoadmap types.Bool `tfsdk:"enable_roadmap"` EnableGitLinkbackMessages types.Bool `tfsdk:"enable_git_linkback_messages"` EnableGitLinkbackMessagesPublic types.Bool `tfsdk:"enable_git_linkback_messages_public"` @@ -48,6 +49,12 @@ func (r *WorkspaceSettingsResource) Schema(ctx context.Context, req resource.Sch stringplanmodifier.UseStateForUnknown(), }, }, + "allow_members_to_invite": schema.BoolAttribute{ + MarkdownDescription: "Allow members to invite new members to the workspace. **Default** `true`.", + Optional: true, + Computed: true, + Default: booldefault.StaticBool(true), + }, "enable_roadmap": schema.BoolAttribute{ MarkdownDescription: "Enable roadmap for the workspace. **Default** `false`.", Optional: true, @@ -99,7 +106,8 @@ func (r *WorkspaceSettingsResource) Create(ctx context.Context, req resource.Cre return } - input := UpdateOrganizationInput{ + input := OrganizationUpdateInput{ + AllowMembersToInvite: data.AllowMembersToInvite.ValueBool(), RoadmapEnabled: data.EnableRoadmap.ValueBool(), GitLinkbackMessagesEnabled: data.EnableGitLinkbackMessages.ValueBool(), GitPublicLinkbackMessagesEnabled: data.EnableGitLinkbackMessagesPublic.ValueBool(), @@ -115,6 +123,7 @@ func (r *WorkspaceSettingsResource) Create(ctx context.Context, req resource.Cre organization := response.OrganizationUpdate.Organization data.Id = types.StringValue(organization.Id) + data.AllowMembersToInvite = types.BoolValue(organization.AllowMembersToInvite) data.EnableRoadmap = types.BoolValue(organization.RoadmapEnabled) data.EnableGitLinkbackMessages = types.BoolValue(organization.GitLinkbackMessagesEnabled) data.EnableGitLinkbackMessagesPublic = types.BoolValue(organization.GitPublicLinkbackMessagesEnabled) @@ -141,6 +150,7 @@ func (r *WorkspaceSettingsResource) Read(ctx context.Context, req resource.ReadR organization := response.Organization data.Id = types.StringValue(organization.Id) + data.AllowMembersToInvite = types.BoolValue(organization.AllowMembersToInvite) data.EnableRoadmap = types.BoolValue(organization.RoadmapEnabled) data.EnableGitLinkbackMessages = types.BoolValue(organization.GitLinkbackMessagesEnabled) data.EnableGitLinkbackMessagesPublic = types.BoolValue(organization.GitPublicLinkbackMessagesEnabled) @@ -157,7 +167,8 @@ func (r *WorkspaceSettingsResource) Update(ctx context.Context, req resource.Upd return } - input := UpdateOrganizationInput{ + input := OrganizationUpdateInput{ + AllowMembersToInvite: data.AllowMembersToInvite.ValueBool(), RoadmapEnabled: data.EnableRoadmap.ValueBool(), GitLinkbackMessagesEnabled: data.EnableGitLinkbackMessages.ValueBool(), GitPublicLinkbackMessagesEnabled: data.EnableGitLinkbackMessagesPublic.ValueBool(), @@ -175,6 +186,7 @@ func (r *WorkspaceSettingsResource) Update(ctx context.Context, req resource.Upd organization := response.OrganizationUpdate.Organization data.Id = types.StringValue(organization.Id) + data.AllowMembersToInvite = types.BoolValue(organization.AllowMembersToInvite) data.EnableRoadmap = types.BoolValue(organization.RoadmapEnabled) data.EnableGitLinkbackMessages = types.BoolValue(organization.GitLinkbackMessagesEnabled) data.EnableGitLinkbackMessagesPublic = types.BoolValue(organization.GitPublicLinkbackMessagesEnabled) @@ -191,9 +203,10 @@ func (r *WorkspaceSettingsResource) Delete(ctx context.Context, req resource.Del return } - input := UpdateOrganizationInput{ + input := OrganizationUpdateInput{ + AllowMembersToInvite: true, RoadmapEnabled: false, - GitLinkbackMessagesEnabled: false, + GitLinkbackMessagesEnabled: true, GitPublicLinkbackMessagesEnabled: false, } diff --git a/internal/provider/resource_workspace_settings.graphql b/internal/provider/resource_workspace_settings.graphql index 9ef07c9..bb5ecc7 100644 --- a/internal/provider/resource_workspace_settings.graphql +++ b/internal/provider/resource_workspace_settings.graphql @@ -1,5 +1,6 @@ fragment Organization on Organization { id + allowMembersToInvite roadmapEnabled gitLinkbackMessagesEnabled gitPublicLinkbackMessagesEnabled @@ -11,19 +12,21 @@ query getWorkspaceSettings { } } -# @genqlient(for: "UpdateOrganizationInput.name", omitempty: true) -# @genqlient(for: "UpdateOrganizationInput.urlKey", omitempty: true) -# @genqlient(for: "UpdateOrganizationInput.logoUrl", omitempty: true) -# @genqlient(for: "UpdateOrganizationInput.gitBranchFormat", omitempty: true) -# @genqlient(for: "UpdateOrganizationInput.projectUpdatesReminderFrequency", omitempty: true) -# @genqlient(for: "UpdateOrganizationInput.projectUpdateRemindersDay", omitempty: true) -# @genqlient(for: "UpdateOrganizationInput.projectUpdateRemindersHour", omitempty: true) -# @genqlient(for: "UpdateOrganizationInput.reducedPersonalInformation", omitempty: true) -# @genqlient(for: "UpdateOrganizationInput.linearPreviewFlags", omitempty: true) -# @genqlient(for: "UpdateOrganizationInput.allowedAuthServices", omitempty: true) -# @genqlient(for: "UpdateOrganizationInput.oauthAppReview", omitempty: true) +# @genqlient(for: "OrganizationUpdateInput.name", omitempty: true) +# @genqlient(for: "OrganizationUpdateInput.urlKey", omitempty: true) +# @genqlient(for: "OrganizationUpdateInput.logoUrl", omitempty: true) +# @genqlient(for: "OrganizationUpdateInput.gitBranchFormat", omitempty: true) +# @genqlient(for: "OrganizationUpdateInput.projectUpdatesReminderFrequency", omitempty: true) +# @genqlient(for: "OrganizationUpdateInput.projectUpdateRemindersDay", omitempty: true) +# @genqlient(for: "OrganizationUpdateInput.projectUpdateRemindersHour", omitempty: true) +# @genqlient(for: "OrganizationUpdateInput.reducedPersonalInformation", omitempty: true) +# @genqlient(for: "OrganizationUpdateInput.linearPreviewFlags", omitempty: true) +# @genqlient(for: "OrganizationUpdateInput.allowedAuthServices", omitempty: true) +# @genqlient(for: "OrganizationUpdateInput.oauthAppReview", omitempty: true) +# @genqlient(for: "OrganizationUpdateInput.slaDayCount", omitempty: true) +# @genqlient(for: "OrganizationUpdateInput.slaEnabled", omitempty: true) mutation updateWorkspaceSettings( - $input: UpdateOrganizationInput!, + $input: OrganizationUpdateInput!, ) { organizationUpdate(input: $input) { organization { diff --git a/internal/provider/resource_workspace_settings_test.go b/internal/provider/resource_workspace_settings_test.go index 9e142ff..79fd460 100644 --- a/internal/provider/resource_workspace_settings_test.go +++ b/internal/provider/resource_workspace_settings_test.go @@ -16,6 +16,7 @@ func TestAccWorkspaceSettingsResourceDefault(t *testing.T) { Config: testAccWorkspaceSettingsResourceConfigDefault(), Check: resource.ComposeAggregateTestCheckFunc( resource.TestMatchResourceAttr("linear_workspace_settings.test", "id", uuidRegex()), + resource.TestCheckResourceAttr("linear_workspace_settings.test", "allow_members_to_invite", "true"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_roadmap", "false"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_git_linkback_messages", "true"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_git_linkback_messages_public", "false"), @@ -32,6 +33,7 @@ func TestAccWorkspaceSettingsResourceDefault(t *testing.T) { Config: testAccWorkspaceSettingsResourceConfigDefault(), Check: resource.ComposeAggregateTestCheckFunc( resource.TestMatchResourceAttr("linear_workspace_settings.test", "id", uuidRegex()), + resource.TestCheckResourceAttr("linear_workspace_settings.test", "allow_members_to_invite", "true"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_roadmap", "false"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_git_linkback_messages", "true"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_git_linkback_messages_public", "false"), @@ -42,6 +44,7 @@ func TestAccWorkspaceSettingsResourceDefault(t *testing.T) { Config: testAccWorkspaceSettingsResourceConfigNonDefault(), Check: resource.ComposeAggregateTestCheckFunc( resource.TestMatchResourceAttr("linear_workspace_settings.test", "id", uuidRegex()), + resource.TestCheckResourceAttr("linear_workspace_settings.test", "allow_members_to_invite", "false"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_roadmap", "true"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_git_linkback_messages", "false"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_git_linkback_messages_public", "true"), @@ -68,6 +71,7 @@ func TestAccWorkspaceSettingsResourceNonDefault(t *testing.T) { Config: testAccWorkspaceSettingsResourceConfigNonDefault(), Check: resource.ComposeAggregateTestCheckFunc( resource.TestMatchResourceAttr("linear_workspace_settings.test", "id", uuidRegex()), + resource.TestCheckResourceAttr("linear_workspace_settings.test", "allow_members_to_invite", "false"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_roadmap", "true"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_git_linkback_messages", "false"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_git_linkback_messages_public", "true"), @@ -84,6 +88,7 @@ func TestAccWorkspaceSettingsResourceNonDefault(t *testing.T) { Config: testAccWorkspaceSettingsResourceConfigNonDefault(), Check: resource.ComposeAggregateTestCheckFunc( resource.TestMatchResourceAttr("linear_workspace_settings.test", "id", uuidRegex()), + resource.TestCheckResourceAttr("linear_workspace_settings.test", "allow_members_to_invite", "false"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_roadmap", "true"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_git_linkback_messages", "false"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_git_linkback_messages_public", "true"), @@ -94,6 +99,7 @@ func TestAccWorkspaceSettingsResourceNonDefault(t *testing.T) { Config: testAccWorkspaceSettingsResourceConfigDefault(), Check: resource.ComposeAggregateTestCheckFunc( resource.TestMatchResourceAttr("linear_workspace_settings.test", "id", uuidRegex()), + resource.TestCheckResourceAttr("linear_workspace_settings.test", "allow_members_to_invite", "true"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_roadmap", "false"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_git_linkback_messages", "true"), resource.TestCheckResourceAttr("linear_workspace_settings.test", "enable_git_linkback_messages_public", "false"), @@ -120,6 +126,7 @@ resource "linear_workspace_settings" "test" { func testAccWorkspaceSettingsResourceConfigNonDefault() string { return ` resource "linear_workspace_settings" "test" { + allow_members_to_invite = false enable_roadmap = true enable_git_linkback_messages = false enable_git_linkback_messages_public = true diff --git a/schema.graphql b/schema.graphql index 11a5128..4bf91aa 100644 --- a/schema.graphql +++ b/schema.graphql @@ -1,28 +1,43 @@ type PageInfo { - """Indicates if there are more results when paginating backward.""" + """ + Indicates if there are more results when paginating backward. + """ hasPreviousPage: Boolean! - """Indicates if there are more results when paginating forward.""" + """ + Indicates if there are more results when paginating forward. + """ hasNextPage: Boolean! - """Cursor representing the first result in the paginated results.""" + """ + Cursor representing the first result in the paginated results. + """ startCursor: String - """Cursor representing the last result in the paginated results.""" + """ + Cursor representing the last result in the paginated results. + """ endCursor: String } -"""An API key. Grants access to the user's resources.""" +""" +An API key. Grants access to the user's resources. +""" type ApiKey implements Node { - """The unique identifier of the entity.""" + """ + The unique identifier of the entity. + """ id: ID! - """The time at which the entity was created.""" + """ + The time at which the entity was created. + """ createdAt: DateTime! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. """ updatedAt: DateTime! @@ -31,7 +46,9 @@ type ApiKey implements Node { """ archivedAt: DateTime - """The label of the API key.""" + """ + The label of the API key. + """ label: String! } @@ -43,7 +60,9 @@ scalar DateTime type ApiKeyEdge { node: ApiKey! - """Used in `before` and `after` args""" + """ + Used in `before` and `after` args + """ cursor: String! } @@ -53,40 +72,24 @@ type ApiKeyConnection { pageInfo: PageInfo! } -type AuthResolverResponse { - """User account ID.""" - id: String! - - """JWT token for authentication of the account.""" - token: String - - """Email for the authenticated account.""" - email: String - - """Should the signup flow allow access for the domain.""" - allowDomainAccess: Boolean - - """Users belonging to this account.""" - users: [User!]! - - """Organizations this account has access to, but is not yet a member.""" - availableOrganizations: [Organization!] - - """ID of the organization last accessed by the user.""" - lastUsedOrganizationId: String -} - -"""A state in a team workflow.""" -type WorkflowState implements Node { - """The unique identifier of the entity.""" +""" +Join table between templates and integrations +""" +type IntegrationTemplate implements Node { + """ + The unique identifier of the entity. + """ id: ID! - """The time at which the entity was created.""" + """ + The time at which the entity was created. + """ createdAt: DateTime! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. """ updatedAt: DateTime! @@ -95,1735 +98,8663 @@ type WorkflowState implements Node { """ archivedAt: DateTime - """The state's name.""" - name: String! - - """The state's UI color as a HEX string.""" - color: String! - - """Description of the state.""" - description: String - - """The position of the state in the team flow.""" - position: Float! - - """The type of the state.""" - type: String! - - """The team to which this state belongs to.""" - team: Team! - - """Issues belonging in this state.""" - issues( - """Filter returned issues.""" - filter: IssueFilter - - """A cursor to be used with last for backward pagination.""" - before: String - - """A cursor to be used with first for forward pagination""" - after: String - - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int - - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int - - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + The template that the integration is associated with. + """ + template: Template! - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): IssueConnection! -} + """ + The integration that the template is associated with. + """ + integration: Integration! -"""By which field should the pagination order by""" -enum PaginationOrderBy { - createdAt - updatedAt + """ + ID of the foreign entity in the external integration this template is for, e.g., Slack channel ID. + """ + foreignEntityId: String } -type WorkflowStateEdge { - node: WorkflowState! +type IntegrationTemplateEdge { + node: IntegrationTemplate! - """Used in `before` and `after` args""" + """ + Used in `before` and `after` args + """ cursor: String! } -type WorkflowStateConnection { - edges: [WorkflowStateEdge!]! - nodes: [WorkflowState!]! +type IntegrationTemplateConnection { + edges: [IntegrationTemplateEdge!]! + nodes: [IntegrationTemplate!]! pageInfo: PageInfo! } -"""An import job for data from an external service""" -type IssueImport implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! - +""" +Tuple for mapping Slack channel IDs to names +""" +type SlackAsksTeamSettings { """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The Linear team ID. """ - updatedAt: DateTime! + id: String! """ - The time at which the entity was archived. Null if the entity has not been archived. + Whether the default Asks template is enabled in the given channel for this team """ - archivedAt: DateTime - - """New team's name in cases when teamId not set""" - teamName: String - - """The id for the user that started the job.""" - creatorId: String! - - """The service from which data will be imported.""" - service: String! - - """The status for the import job.""" - status: String! - - """The data mapping configuration for the import job.""" - mapping: JSONObject - - """User readable error message, if one has occurred during the import.""" - error: String - - """Current step progress in % (0-100).""" - progress: Float + hasDefaultAsk: Boolean! } """ -The `JSONObject` scalar type represents arbitrary values as *embedded* JSON +Object for mapping Slack channel IDs to names and other settings """ -scalar JSONObject - -"""An organizational unit that contains issues.""" -type Team implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! - +type SlackChannelNameMapping { """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The Slack channel ID. """ - updatedAt: DateTime! + id: String! """ - The time at which the entity was archived. Null if the entity has not been archived. + The Slack channel name. """ - archivedAt: DateTime - - """The team's name.""" name: String! - """The team's unique key. The key is used in URLs.""" - key: String! - - """The team's description.""" - description: String - - """The icon of the team.""" - icon: String - - """The team's color.""" - color: String - - """The organization that the team is associated with.""" - organization: Organization! - - """Whether the team uses cycles.""" - cyclesEnabled: Boolean! - - """The day of the week that a new cycle starts.""" - cycleStartDay: Float! - - """The duration of a cycle in weeks.""" - cycleDuration: Float! - - """The cooldown time after each cycle in weeks.""" - cycleCooldownTime: Float! - - """Auto assign started issues to current cycle.""" - cycleIssueAutoAssignStarted: Boolean! - - """Auto assign completed issues to current cycle.""" - cycleIssueAutoAssignCompleted: Boolean! - - """Only allow issues issues with cycles in Active Issues.""" - cycleLockToActive: Boolean! - - """How many upcoming cycles to create.""" - upcomingCycleCount: Float! - """ - The timezone of the team. Defaults to "America/Los_Angeles" + Whether or not the Slack channel is private """ - timezone: String! - - """Unique hash for the team to be used in invite URLs.""" - inviteHash: String! - - """The issue estimation type to use.""" - issueEstimationType: String! - - """Whether issues without priority should be sorted first.""" - issueOrderingNoPriorityFirst: Boolean! - - """Whether to allow zeros in issues estimates.""" - issueEstimationAllowZero: Boolean! - - """Whether to move issues to bottom of the column when changing state.""" - issueSortOrderDefaultToBottom: Boolean! - - """Whether to add additional points to the estimate scale.""" - issueEstimationExtended: Boolean! - - """What to use as an default estimate for unestimated issues.""" - defaultIssueEstimate: Float! - - """Whether triage mode is enabled for the team or not.""" - triageEnabled: Boolean! + isPrivate: Boolean """ - The default workflow state into which issues are set when they are opened by team members. + Which teams are connected to the channel and settings for those teams """ - defaultIssueState: WorkflowState + teams: [SlackAsksTeamSettings!]! """ - The default template to use for new issues created by members of the team. + Whether or not top-level messages in this channel should automatically create Asks """ - defaultTemplateForMembers: Template + autoCreateOnMessage: Boolean """ - The id of the default template to use for new issues created by members of the team. + Whether or not using the :ticket: emoji in this channel should automatically create Asks """ - defaultTemplateForMembersId: String @deprecated(reason: "Use defaultTemplateForMembers instead") + autoCreateOnEmoji: Boolean +} +""" +Slack Asks specific settings. +""" +type SlackAsksSettings { """ - The default template to use for new issues created by non-members of the team. + The mapping of Slack channel ID => Slack channel name for connected channels. """ - defaultTemplateForNonMembers: Template + slackChannelMapping: [SlackChannelNameMapping!] +} +""" +Intercom specific settings. +""" +type IntercomSettings { """ - The id of the default template to use for new issues created by non-members of the team. + Whether an internal message should be added when a Linear issue changes status (for status types except completed or canceled). """ - defaultTemplateForNonMembersId: String @deprecated(reason: "Use defaultTemplateForNonMembers instead") + sendNoteOnStatusChange: Boolean """ - The workflow state into which issues are set when they are opened by non-team members or integrations if triage is enabled. + Whether an internal message should be added when someone comments on an issue. """ - triageIssueState: WorkflowState - - """Whether the team is private or not.""" - private: Boolean! + sendNoteOnComment: Boolean """ - The workflow state into which issues are moved when a PR has been opened as draft. + Whether a ticket should be automatically reopened when its linked Linear issue is completed. """ - draftWorkflowState: WorkflowState + automateTicketReopeningOnCompletion: Boolean """ - The workflow state into which issues are moved when a PR has been opened. + Whether a ticket should be automatically reopened when its linked Linear issue is cancelled. """ - startWorkflowState: WorkflowState + automateTicketReopeningOnCancellation: Boolean """ - The workflow state into which issues are moved when a review has been requested for the PR. + Whether a ticket should be automatically reopened when a comment is posted on its linked Linear issue """ - reviewWorkflowState: WorkflowState + automateTicketReopeningOnComment: Boolean +} +""" +Front specific settings. +""" +type FrontSettings { """ - The workflow state into which issues are moved when a PR has been merged. + Whether an internal message should be added when a Linear issue changes status (for status types except completed or canceled). """ - mergeWorkflowState: WorkflowState - - """Whether to group recent issue history entries.""" - groupIssueHistory: Boolean! - - """Whether to send new issue notifications to Slack.""" - slackNewIssue: Boolean! - - """Whether to send new issue comment notifications to Slack.""" - slackIssueComments: Boolean! - - """Whether to send new issue status updates to Slack.""" - slackIssueStatuses: Boolean! + sendNoteOnStatusChange: Boolean """ - Period after which issues are automatically closed in months. Null/undefined means disabled. + Whether an internal message should be added when someone comments on an issue. """ - autoClosePeriod: Float + sendNoteOnComment: Boolean """ - The canceled workflow state which auto closed issues will be set to. Defaults to the first canceled state. + Whether a ticket should be automatically reopened when its linked Linear issue is completed. """ - autoCloseStateId: String + automateTicketReopeningOnCompletion: Boolean """ - Period after which automatically closed and completed issues are automatically archived in months. + Whether a ticket should be automatically reopened when its linked Linear issue is cancelled. """ - autoArchivePeriod: Float! + automateTicketReopeningOnCancellation: Boolean """ - The workflow state into which issues are moved when they are marked as a duplicate of another issue. Defaults to the first canceled state. + Whether a ticket should be automatically reopened when a comment is posted on its linked Linear issue """ - markedAsDuplicateWorkflowState: WorkflowState - - """Calendar feed URL (iCal) for cycles.""" - cycleCalenderUrl: String! - - """Issues associated with the team.""" - issues( - """Filter returned issues.""" - filter: IssueFilter - - """A cursor to be used with last for backward pagination.""" - before: String + automateTicketReopeningOnComment: Boolean +} - """A cursor to be used with first for forward pagination""" +""" +Slack notification specific settings. +""" +type SlackPostSettings { + channel: String! + channelId: String! + configurationUrl: String! +} + +""" +Metadata and settings for a GitHub integration. +""" +type GitHubSettings { + """ + The avatar URL for the GitHub organization + """ + orgAvatarUrl: String! + + """ + The GitHub organization's name + """ + orgLogin: String! + + """ + The names of the repositories connected for the GitHub integration + """ + repositories: [String!] +} + +""" +Metadata and settings for a GitHub Sync integration. +""" +type GitHubSyncSettings { + """ + The names of the repositories connected for the GitHub integration + """ + repositories: [GitHubSyncRepo!] + + """ + Mapping of team to repository for syncing + """ + teamRepoMap: [TeamRepoMapping!] +} + +""" +GitHub repos available to sync. +""" +type GitHubSyncRepo { + """ + The full name of the repository. + """ + fullName: String! + + """ + The GitHub repo id. + """ + id: Float! +} + +""" +Tuple for mapping Linear teams to GitHub repos. +""" +type TeamRepoMapping { + """ + The Linear team id to map to the given project. + """ + linearTeamId: String! + + """ + The GitHub repo id. + """ + gitHubRepoId: Float! +} + +""" +Metadata and settings for a GitLab integration. +""" +type GitLabSettings { + """ + The self-hosted URL of the GitLab instance + """ + url: String +} + +""" +Google Sheets specific settings. +""" +type GoogleSheetsSettings { + spreadsheetId: String! + spreadsheetUrl: String! + sheetId: Float! + updatedIssuesAt: DateTime! +} + +""" +Metadata about a Jira project. +""" +type JiraProjectData { + """ + The Jira id for this project. + """ + id: String! + + """ + The Jira key for this project, such as ENG. + """ + key: String! + + """ + The Jira name for this project, such as Engineering. + """ + name: String! +} + +""" +Tuple for mapping Jira projects to Linear teams. +""" +type JiraLinearMapping { + """ + The Jira id for this project. + """ + jiraProjectId: String! + + """ + The Linear team id to map to the given project. + """ + linearTeamId: String! +} + +""" +Jira specific settings. +""" +type JiraSettings { + """ + The mapping of Jira project id => Linear team id. + """ + projectMapping: [JiraLinearMapping!] + + """ + The Jira projects for the organization. + """ + projects: [JiraProjectData!]! +} + +""" +Notion specific settings. +""" +type NotionSettings { + """ + The ID of the Notion workspace being connected. + """ + workspaceId: String! + + """ + The name of the Notion workspace being connected. + """ + workspaceName: String! +} + +""" +Metadata about a PagerDuty schedule. +""" +type PagerDutyScheduleInfo { + """ + The PagerDuty schedule id. + """ + scheduleId: String! + + """ + The PagerDuty schedule name. + """ + scheduleName: String! + + """ + The URL of the schedule in PagerDuty's web app. + """ + url: String! +} + +""" +PagerDuty specific settings. +""" +type PagerDutySettings { + """ + Metadata about a PagerDuty schedule. + """ + scheduleMapping: [PagerDutyScheduleInfo!]! +} + +""" +Sentry specific settings. +""" +type SentrySettings { + """ + The slug of the Sentry organization being connected. + """ + organizationSlug: String! +} + +""" +Zendesk specific settings. +""" +type ZendeskSettings { + """ + Whether an internal message should be added when a Linear issue changes status (for status types except completed or canceled). + """ + sendNoteOnStatusChange: Boolean + + """ + Whether an internal message should be added when someone comments on an issue. + """ + sendNoteOnComment: 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 issue is cancelled. + """ + automateTicketReopeningOnCancellation: Boolean + + """ + Whether a ticket should be automatically reopened when a comment is posted on its linked Linear issue + """ + automateTicketReopeningOnComment: Boolean + + """ + The subdomain of the Zendesk organization being connected. + """ + subdomain: String! + + """ + The URL of the connected Zendesk organization. + """ + url: String! + + """ + The ID of the Linear bot user. + """ + botUserId: String +} + +""" +The integration resource's settings +""" +type IntegrationSettings { + slackAsks: SlackAsksSettings + slackPost: SlackPostSettings + slackProjectPost: SlackPostSettings + slackOrgProjectUpdatesPost: SlackPostSettings + googleSheets: GoogleSheetsSettings + gitHub: GitHubSettings + gitHubSync: GitHubSyncSettings + gitLab: GitLabSettings + sentry: SentrySettings + zendesk: ZendeskSettings + intercom: IntercomSettings + front: FrontSettings + jira: JiraSettings + notion: NotionSettings + pagerDuty: PagerDutySettings +} + +""" +An integration with an external service. +""" +type Integration implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The integration's type. + """ + service: String! + + """ + The organization that the integration is associated with. + """ + organization: Organization! + + """ + The team that the integration is associated with. + """ + team: Team + + """ + The user that added the integration. + """ + creator: User! +} + +type IntegrationEdge { + node: Integration! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type IntegrationConnection { + edges: [IntegrationEdge!]! + nodes: [Integration!]! + pageInfo: PageInfo! +} + +""" +A user that has access to the the resources of an organization. +""" +type User implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The user's full name. + """ + name: String! + + """ + The user's display (nick) name. Unique within each organization. + """ + displayName: String! + + """ + The user's email address. + """ + email: String! + + """ + An URL to the user's avatar image. + """ + avatarUrl: String + + """ + Reason why is the account disabled. + """ + disableReason: String + + """ + Unique hash for the user to be used in invite URLs. + """ + inviteHash: String! + + """ + [DEPRECATED] Hash for the user to be used in calendar URLs. + """ + calendarHash: String + + """ + A short description of the user, either its title or bio. + """ + description: String + + """ + The emoji to represent the user current status. + """ + statusEmoji: String + + """ + The label of the user current status. + """ + statusLabel: String + + """ + A date at which the user current status should be cleared. + """ + statusUntilAt: DateTime + + """ + The local timezone of the user. + """ + timezone: String + + """ + Organization the user belongs to. + """ + organization: Organization! + + """ + The last time the user was seen online. If null, the user is currently online. + """ + lastSeen: DateTime + + """ + Whether the user is a guest in the workspace and limited to accessing a subset of teams. + """ + guest: Boolean! + + """ + Whether the user account is active or disabled (suspended). + """ + active: Boolean! + + """ + User's profile URL. + """ + url: String! + + """ + Issues assigned to the user. + """ + assignedIssues( + """ + Filter returned issues. + """ + filter: IssueFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IssueConnection! + + """ + Issues created by the user. + """ + createdIssues( + """ + Filter returned issues. + """ + filter: IssueFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IssueConnection! + + """ + Number of issues created. + """ + createdIssueCount: Int! + + """ + Teams the user is part of. + """ + teams( + """ + Filter returned teams. + """ + filter: TeamFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): TeamConnection! + + """ + Memberships associated with the user. For easier access of the same data, use `teams` query. + """ + teamMemberships( + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): TeamMembershipConnection! + + """ + Whether the user is the currently authenticated user. + """ + isMe: Boolean! + + """ + Whether the user is an organization administrator. + """ + admin: Boolean! +} + +""" +By which field should the pagination order by +""" +enum PaginationOrderBy { + createdAt + updatedAt +} + +type UserEdge { + node: User! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type UserConnection { + edges: [UserEdge!]! + nodes: [User!]! + pageInfo: PageInfo! +} + +""" +Contains either the full serialized state of the application or delta packets that the requester can apply to the local data set in order to be up-to-date. +""" +type SyncResponse { + """ + The full state of the organization as a serialized JSON object. + Mutually exclusive with the delta property + """ + state: String + + """ + JSON serialized delta changes that the client can apply to its local state in order to catch up with the state of the world. + """ + delta: String + + """ + The sync groups that the user is subscribed to. + """ + subscribedSyncGroups: [String!]! + + """ + The last sync id covered by the response. + """ + lastSyncId: Float! + + """ + The version of the remote database. Incremented by 1 for each migration run on the database. + """ + databaseVersion: Float! +} + +""" +OAuth2 client application +""" +type OauthClient implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + OAuth application's client ID. + """ + clientId: String! + + """ + OAuth application's client name. + """ + name: String! + + """ + Information about the application. + """ + description: String + + """ + Name of the developer. + """ + developer: String! + + """ + Url of the developer. + """ + developerUrl: String! + + """ + Image of the application. + """ + imageUrl: String + + """ + OAuth application's client secret. + """ + clientSecret: String! + + """ + List of allowed redirect URIs for the application. + """ + redirectUris: [String!]! + + """ + Whether the OAuth application can be installed in other organizations. + """ + publicEnabled: Boolean! + + """ + The user who created the OAuth application. + """ + creator: User! + + """ + The organization that the OAuth application is associated with. + """ + organization: Organization! + + """ + The resource types to request when creating new webhooks. + """ + webhookResourceTypes: [String!]! + + """ + Webhook URL + """ + webhookUrl: String + + """ + Webhook secret token for verifying the origin on the recipient side. + """ + webhookSecret: String +} + +type OauthClientEdge { + node: OauthClient! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type OauthClientConnection { + edges: [OauthClientEdge!]! + nodes: [OauthClient!]! + pageInfo: PageInfo! +} + +""" +Issue attachment (e.g. support ticket, pull request). +""" +type Attachment implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + Content for the title line in the Linear attachment widget. + """ + title: String! + + """ + Content for the subtitle line in the Linear attachment widget. + """ + subtitle: String + + """ + Location of the attachment which is also used as an identifier. + """ + url: String! + + """ + The creator of the attachment. + """ + creator: User + + """ + The non-Linear user who created the attachment. + """ + externalUserCreator: ExternalUser + + """ + Custom metadata related to the attachment. + """ + metadata: JSONObject! + + """ + Information about the source which created the attachment. + """ + source: JSONObject + + """ + An accessor helper to source.type, defines the source type of the attachment. + """ + sourceType: String + + """ + Indicates if attachments for the same source application should be grouped in the Linear UI. + """ + groupBySource: Boolean! + + """ + The issue this attachment belongs to. + """ + issue: Issue! +} + +""" +The `JSONObject` scalar type represents arbitrary values as *embedded* JSON +""" +scalar JSONObject + +type AttachmentEdge { + node: Attachment! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type AttachmentConnection { + edges: [AttachmentEdge!]! + nodes: [Attachment!]! + pageInfo: PageInfo! +} + +""" +Workspace audit log entry object. +""" +type AuditEntry implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + type: String! + + """ + The organization the audit log belongs to. + """ + organization: Organization + + """ + 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 + + """ + IP from actor when entry was recorded. + """ + ip: String + + """ + Country code of request resulting to audit entry. + """ + countryCode: String + + """ + Additional metadata related to the audit entry. + """ + metadata: JSONObject + + """ + Additional information related to the request which performed the action. + """ + requestInformation: JSONObject +} + +""" +User authentication session. +""" +type AuthenticationSession { + id: String! + + """ + Type of application used to authenticate. + """ + type: AuthenticationSessionType! + + """ + IP address. + """ + ip: String + + """ + Location country name. + """ + locationCountry: String + + """ + Location country code. + """ + locationCountryCode: String + + """ + Country codes of all seen locations. + """ + countryCodes: [String!]! + + """ + Location city name. + """ + locationCity: String + + """ + Session's user-agent. + """ + userAgent: String + + """ + When was the session last seen + """ + lastActiveAt: DateTime + + """ + Date when the session was created. + """ + createdAt: DateTime! + + """ + Date when the session was last updated. + """ + updatedAt: DateTime! + + """ + Human readable location + """ + location: String + + """ + Operating system used for the session + """ + operatingSystem: String + + """ + Client used for the session + """ + client: String + + """ + Name of the session, derived from the client and operating system + """ + name: String! +} + +enum AuthenticationSessionType { + web + desktop + ios + android +} + +""" +A update associated with an project. +""" +type ProjectUpdate implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The update content in markdown format. + """ + body: String! + + """ + The project that the update is associated with. + """ + project: Project! + + """ + The health of the project at the time of the update. + """ + health: ProjectUpdateHealthType! + + """ + The user who wrote the update. + """ + user: User! + + """ + The time the project update was edited. + """ + editedAt: DateTime + + """ + [Internal] Serialized JSON representing current state of the project properties when posting the project update. + """ + infoSnapshot: JSONObject + + """ + The URL to the project update. + """ + url: String! + + """ + The diff between the current update and the previous one. + """ + diff: JSON + + """ + The diff between the current update and the previous one, formatted as markdown. + """ + diffMarkdown: String +} + +""" +The health type of a project when the update is created. +""" +enum ProjectUpdateHealthType { + onTrack + atRisk + offTrack +} + +""" +The `JSON` scalar type represents arbitrary values as *stringified* JSON +""" +scalar JSON + +type ProjectUpdateEdge { + node: ProjectUpdate! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type ProjectUpdateConnection { + edges: [ProjectUpdateEdge!]! + nodes: [ProjectUpdate!]! + pageInfo: PageInfo! +} + +""" +A project. +""" +type Project implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The project's name. + """ + name: String! + + """ + The project's description. + """ + description: String! + + """ + The project's unique URL slug. + """ + slugId: String! + + """ + The icon of the project. + """ + icon: String + + """ + The project's color. + """ + color: String! + + """ + The type of the state. + """ + state: String! + + """ + The user who created the project. + """ + creator: User! + + """ + The project lead. + """ + lead: User + + """ + The time until which project update reminders are paused. + """ + projectUpdateRemindersPausedUntilAt: DateTime + + """ + The estimated start date of the project. + """ + startDate: TimelessDate + + """ + The estimated completion date of the project. + """ + targetDate: TimelessDate + + """ + The time at which the project was moved into started state. + """ + startedAt: DateTime + + """ + The time at which the project was moved into completed state. + """ + completedAt: DateTime + + """ + The time at which the project was moved into canceled state. + """ + canceledAt: DateTime + + """ + The time at which the project was automatically archived by the auto pruning process. + """ + autoArchivedAt: DateTime + + """ + A flag that indicates whether the project is in the trash bin. + """ + trashed: Boolean + + """ + The sort order for the project within the organization. + """ + sortOrder: Float! + + """ + The project was created based on this issue. + """ + convertedFromIssue: Issue + + """ + The last template that was applied to this project. + """ + lastAppliedTemplate: Template + + """ + The total number of issues in the project after each week. + """ + issueCountHistory: [Float!]! + + """ + The number of completed issues in the project after each week. + """ + completedIssueCountHistory: [Float!]! + + """ + The total number of estimation points after each week. + """ + scopeHistory: [Float!]! + + """ + The number of completed estimation points after each week. + """ + completedScopeHistory: [Float!]! + + """ + The number of in progress estimation points after each week. + """ + inProgressScopeHistory: [Float!]! + + """ + Whether to send new issue notifications to Slack. + """ + slackNewIssue: Boolean! + + """ + Whether to send new issue comment notifications to Slack. + """ + slackIssueComments: Boolean! + + """ + Whether to send new issue status updates to Slack. + """ + slackIssueStatuses: Boolean! + + """ + Project URL. + """ + url: String! + + """ + Teams associated with this project. + """ + teams( + """ + Filter returned teams. + """ + filter: TeamFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): TeamConnection! + + """ + Users that are members of the project. + """ + members( + """ + Filter returned users. + """ + filter: UserFilter + + """ + Should query return disabled/suspended users (default: false). + """ + includeDisabled: Boolean + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): UserConnection! + + """ + Project updates associated with the project. + """ + projectUpdates( + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): ProjectUpdateConnection! + + """ + Documents associated with the project. + """ + documents( + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): DocumentConnection! + + """ + Milestones associated with the project. + """ + projectMilestones( + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): ProjectMilestoneConnection! + + """ + Issues associated with the project. + """ + issues( + """ + Filter returned issues. + """ + filter: IssueFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IssueConnection! + + """ + Links associated with the project. + """ + links( + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): ProjectLinkConnection! + + """ + The overall progress of the project. This is the (completed estimate points + 0.25 * in progress estimate points) / total estimate points. + """ + progress: Float! + + """ + The overall scope (total estimate points) of the project. + """ + scope: Float! + + """ + Settings for all integrations associated with that project. + """ + integrationsSettings: IntegrationsSettings + + """ + The project's content in markdown format. + """ + content: String +} + +""" +Represents a date in ISO 8601 format. Accepts shortcuts like `2021` to represent midnight Fri Jan 01 2021. Also accepts ISO 8601 durations strings which are added to the current date to create the represented date (e.g '-P2W1D' represents the date that was two weeks and 1 day ago) +""" +scalar TimelessDate + +type ProjectEdge { + node: Project! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type ProjectConnection { + edges: [ProjectEdge!]! + nodes: [Project!]! + pageInfo: PageInfo! +} + +""" +A reaction associated with a comment or a project update. +""" +type Reaction implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + Name of the reaction's emoji. + """ + emoji: String! + + """ + The user who reacted. + """ + user: User +} + +""" +A comment associated with an issue. +""" +type Comment implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The comment content in markdown format. + """ + body: String! + + """ + The issue that the comment is associated with. + """ + issue: Issue! + + """ + The document content that the comment is associated with. + """ + documentContent: DocumentContent! + + """ + [ALPHA] The project update that the comment is associated with. + """ + projectUpdate: ProjectUpdate! + + """ + The parent comment under which the current comment is nested. + """ + parent: Comment + + """ + The user that resolved the thread. + """ + resolvingUser: User + + """ + The time the resolvingUser resolved the thread. + """ + resolvedAt: DateTime + + """ + The comment that resolved the thread. + """ + resolvingComment: Comment + + """ + The user who wrote the comment. + """ + user: User + + """ + [ALPHA] The external user who wrote the comment. + """ + externalUser: ExternalUser + + """ + The time user edited the comment. + """ + editedAt: DateTime + + """ + The comment content as a Prosemirror document. + """ + bodyData: String! + + """ + Emoji reaction summary, grouped by emoji type + """ + reactionData: JSONObject! + + """ + Comment's URL. + """ + url: String! + + """ + The children of the comment. + """ + children( + """ + Filter returned comments. + """ + filter: CommentFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): CommentConnection! + + """ + The bot that created the comment + """ + botActor: ActorBot +} + +type CommentEdge { + node: Comment! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type CommentConnection { + edges: [CommentEdge!]! + nodes: [Comment!]! + pageInfo: PageInfo! +} + +""" +A company related to issue's origin. +""" +type Company implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + Company name. + """ + name: String! + + """ + Company ID in an external system. + """ + externalId: String! + + """ + Company website URL. + """ + websiteUrl: String + + """ + Company logo URL. + """ + logoUrl: String + + """ + The user who added the company. + """ + creator: User! + + """ + The organization of the customer. + """ + organization: Organization! + + """ + Custom company properties. + """ + companyProperties: JSONObject! +} + +type CompanyEdge { + node: Company! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type CompanyConnection { + edges: [CompanyEdge!]! + nodes: [Company!]! + pageInfo: PageInfo! +} + +""" +A custom view that has been saved by a user. +""" +type CustomView implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The name of the custom view. + """ + name: String! + + """ + The description of the custom view. + """ + description: String + + """ + The icon of the custom view. + """ + icon: String + + """ + The color of the icon of the custom view. + """ + color: String + + """ + The organization of the custom view. + """ + organization: Organization! + + """ + The team associated with the custom view. + """ + team: Team + + """ + The user who created the custom view. + """ + creator: User! + + """ + The user who owns the custom view. + """ + owner: User! + + """ + [ALPHA] The user who last updated the custom view. + """ + updatedBy: User! + + """ + The filters applied to issues in the custom view. + """ + filters: JSONObject! + @deprecated(reason: "Will be replaced by `filterData` in a future update") + + """ + The filter applied to issues in the custom view. + """ + filterData: JSONObject! + + """ + [ALPHA] The filter applied to projects in the custom view. + """ + projectFilterData: JSONObject + + """ + Whether the custom view is shared with everyone in the organization. + """ + shared: Boolean! +} + +type CustomViewEdge { + node: CustomView! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type CustomViewConnection { + edges: [CustomViewEdge!]! + nodes: [CustomView!]! + pageInfo: PageInfo! +} + +""" +An issue. +""" +type Issue implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The issue's unique number. + """ + number: Float! + + """ + The issue's title. + """ + title: String! + + """ + The priority of the issue. 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. + """ + priority: Float! + + """ + The estimate of the complexity of the issue.. + """ + estimate: Float + + """ + 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 order of the item in relation to other items in the organization. + """ + sortOrder: Float! + + """ + The time at which the issue was moved into started state. + """ + startedAt: DateTime + + """ + The time at which the issue was moved into completed state. + """ + completedAt: DateTime + + """ + The time at which the issue entered triage. + """ + startedTriageAt: DateTime + + """ + The time at which the issue left triage. + """ + triagedAt: DateTime + + """ + The time at which the issue was moved into canceled state. + """ + canceledAt: DateTime + + """ + The time at which the issue was automatically closed by the auto pruning process. + """ + autoClosedAt: DateTime + + """ + The time at which the issue was automatically archived by the auto pruning process. + """ + autoArchivedAt: DateTime + + """ + The date at which the issue is due. + """ + dueDate: TimelessDate + + """ + [Internal] The time at which the issue's SLA began. + """ + slaStartedAt: DateTime + + """ + [Internal] The time at which the issue's SLA will breach. + """ + slaBreachesAt: DateTime + + """ + A flag that indicates whether the issue is in the trash bin. + """ + trashed: Boolean + + """ + The time until an issue will be snoozed in Triage view. + """ + snoozedUntilAt: DateTime + + """ + The team that the issue is associated with. + """ + team: Team! + + """ + The cycle that the issue is associated with. + """ + cycle: Cycle + + """ + The project that the issue is associated with. + """ + project: Project + + """ + The projectMilestone that the issue is associated with. + """ + projectMilestone: ProjectMilestone + + """ + The last template that was applied to this issue. + """ + lastAppliedTemplate: Template + + """ + Previous identifiers of the issue if it has been moved between teams. + """ + previousIdentifiers: [String!]! + + """ + The user who created the issue. + """ + creator: User + + """ + [ALPHA] The external user who created the issue. + """ + externalUserCreator: ExternalUser + + """ + The user to whom the issue is assigned to. + """ + assignee: User + + """ + The user who snoozed the issue. + """ + snoozedBy: User + + """ + The workflow state that the issue is associated with. + """ + state: WorkflowState! + + """ + The order of the item in the sub-issue list. Only set if the issue has a parent. + """ + subIssueSortOrder: Float + + """ + Label for the priority. + """ + priorityLabel: String! + + """ + The users favorite associated with this issue. + """ + favorite: Favorite + + """ + Issue's human readable identifier (e.g. ENG-123). + """ + identifier: String! + + """ + Issue URL. + """ + url: String! + + """ + Suggested branch name for the issue. + """ + branchName: String! + + """ + Returns the number of Attachment resources which are created by customer support ticketing systems (e.g. Zendesk). + """ + customerTicketCount: Int! + + """ + Users who are subscribed to the issue. + """ + subscribers( + """ + Filter returned subscribers. + """ + filter: UserFilter + + """ + Should query return disabled/suspended users (default: false). + """ + includeDisabled: Boolean + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): UserConnection! + + """ + The parent of the issue. + """ + parent: Issue + + """ + Children of the issue. + """ + children( + """ + Filter returned issues. + """ + filter: IssueFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IssueConnection! + + """ + Comments associated with the issue. + """ + comments( + """ + Filter returned comments. + """ + filter: CommentFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): CommentConnection! + + """ + History entries associated with the issue. + """ + history( + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IssueHistoryConnection! + + """ + Labels associated with this issue. + """ + labels( + """ + Filter returned issue labels. + """ + filter: IssueLabelFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IssueLabelConnection! + + """ + Relations associated with this issue. + """ + relations( + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IssueRelationConnection! + + """ + Inverse relations associated with this issue. + """ + inverseRelations( + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IssueRelationConnection! + + """ + Attachments associated with the issue. + """ + attachments( + """ + Filter returned attachments. + """ + filter: AttachmentFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): AttachmentConnection! + + """ + The issue's description in markdown format. + """ + description: String + + """ + [Internal] The issue's description as a Prosemirror document. + """ + descriptionData: JSON @deprecated(reason: "Use description instead.") +} + +type IssueEdge { + node: Issue! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type IssueConnection { + edges: [IssueEdge!]! + nodes: [Issue!]! + pageInfo: PageInfo! +} + +""" +A set of issues to be resolved in a specified amount of time. +""" +type Cycle implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The number of the cycle. + """ + number: Float! + + """ + The custom name of the cycle. + """ + name: String + + """ + The cycle's description. + """ + description: String + + """ + The start time of the cycle. + """ + startsAt: DateTime! + + """ + The end time of the cycle. + """ + endsAt: DateTime! + + """ + The completion time of the cycle. If null, the cycle hasn't been completed. + """ + completedAt: DateTime + + """ + The time at which the cycle was automatically archived by the auto pruning process. + """ + autoArchivedAt: DateTime + + """ + The total number of issues in the cycle after each day. + """ + issueCountHistory: [Float!]! + + """ + The number of completed issues in the cycle after each day. + """ + completedIssueCountHistory: [Float!]! + + """ + The total number of estimation points after each day. + """ + scopeHistory: [Float!]! + + """ + The number of completed estimation points after each day. + """ + completedScopeHistory: [Float!]! + + """ + The number of in progress estimation points after each day. + """ + inProgressScopeHistory: [Float!]! + + """ + The team that the cycle is associated with. + """ + team: Team! + + """ + Issues associated with the cycle. + """ + issues( + """ + Filter returned issues. + """ + filter: IssueFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IssueConnection! + + """ + Issues that weren't completed when the cycle was closed. + """ + uncompletedIssuesUponClose( + """ + Filter returned issues. + """ + filter: IssueFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IssueConnection! + + """ + The overall progress of the cycle. This is the (completed estimate points + 0.25 * in progress estimate points) / total estimate points. + """ + progress: Float! +} + +type CycleEdge { + node: Cycle! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type CycleConnection { + edges: [CycleEdge!]! + nodes: [Cycle!]! + pageInfo: PageInfo! +} + +""" +A document for a project. +""" +type Document implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The document title. + """ + title: String! + + """ + The icon of the document. + """ + icon: String + + """ + The color of the icon. + """ + color: String + + """ + The user who created the document. + """ + creator: User! + + """ + The user who last updated the document. + """ + updatedBy: User! + + """ + The project that the document is associated with. + """ + project: Project! + + """ + The document's unique URL slug. + """ + slugId: String! + + """ + The last template that was applied to this document. + """ + lastAppliedTemplate: Template + + """ + The documents content in markdown format. + """ + content: String + + """ + The documents content as a Prosemirror document. + """ + contentData: JSON @deprecated(reason: "Use content instead.") +} + +type DocumentEdge { + node: Document! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type DocumentConnection { + edges: [DocumentEdge!]! + nodes: [Document!]! + pageInfo: PageInfo! +} + +""" +A document content history for a document +""" +type DocumentContentHistory implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The document content that this history item is associated with. + """ + documentContent: DocumentContent! + + """ + The document content as JSON. + """ + contentData: JSONObject + + """ + IDs of actors whose edits went into this history item. + """ + actorIds: [String!]! + + """ + The timestamp associated with the DocumentContent when it was originally saved + """ + contentDataSnapshotAt: DateTime! +} + +""" +A document content for a project. +""" +type DocumentContent implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The document content in markdown format. + """ + content: String + + """ + The document content as JSON. + """ + contentData: JSONObject + + """ + The document content state as a base64 encoded string. + """ + contentState: String + + """ + The issue that the content is associated with. + """ + issue: Issue + + """ + The project that the content is associated with. + """ + project: Project + + """ + The project milestone that the content is associated with. + """ + projectMilestone: ProjectMilestone + + """ + The document that the content is associated with. + """ + document: Document +} + +""" +A custom emoji. +""" +type Emoji implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The emoji's name. + """ + name: String! + + """ + The emoji image URL. + """ + url: String! + + """ + The source of the emoji. + """ + source: String! + + """ + The user who created the emoji. + """ + creator: User! + + """ + The organization that the emoji belongs to. + """ + organization: Organization! +} + +type EmojiEdge { + node: Emoji! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type EmojiConnection { + edges: [EmojiEdge!]! + nodes: [Emoji!]! + pageInfo: PageInfo! +} + +""" +A template object used for creating entities faster. +""" +type Template implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The entity type this template is for. + """ + type: String! + + """ + The name of the template. + """ + name: String! + + """ + Template description. + """ + description: String + + """ + Template data. + """ + templateData: JSON! + + """ + The organization that the template is associated with. If null, the template is associated with a particular team. + """ + organization: Organization + + """ + The team that the template is associated with. If null, the template is global to the workspace. + """ + team: Team + + """ + The user who created the template. + """ + creator: User + + """ + The user who last updated the template. + """ + lastUpdatedBy: User +} + +type TemplateEdge { + node: Template! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type TemplateConnection { + edges: [TemplateEdge!]! + nodes: [Template!]! + pageInfo: PageInfo! +} + +""" +The organization's SAML configuration +""" +type SamlConfigurationPayload { + """ + Sign in endpoint URL for the identity provider. + """ + ssoEndpoint: String + + """ + Binding method for authentication call. Can be either `post` (default) or `redirect`. + """ + ssoBinding: String + + """ + The algorithm of the Signing Certificate. Can be one of `sha1`, `sha256` (default), or `sha512`. + """ + ssoSignAlgo: String + + """ + The issuer's custom entity ID. + """ + issuerEntityId: String +} + +type SamlConfiguration { + """ + Sign in endpoint URL for the identity provider. + """ + ssoEndpoint: String + + """ + Binding method for authentication call. Can be either `post` (default) or `redirect`. + """ + ssoBinding: String + + """ + The algorithm of the Signing Certificate. Can be one of `sha1`, `sha256` (default), or `sha512`. + """ + ssoSignAlgo: String + + """ + The issuer's custom entity ID. + """ + issuerEntityId: String + + """ + X.509 Signing Certificate in string form. + """ + ssoSigningCert: String +} + +""" +An organization. Organizations are root-level objects that contain user accounts and teams. +""" +type Organization implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The organization's name. + """ + name: String! + + """ + The organization's unique URL key. + """ + urlKey: String! + + """ + The organization's logo URL. + """ + logoUrl: String + + """ + Rolling 30-day total upload volume for the organization, in megabytes. + """ + periodUploadVolume: Float! + + """ + How git branches are formatted. If null, default formatting will be used. + """ + gitBranchFormat: String + + """ + Whether the Git integration linkback messages should be sent to private repositories. + """ + gitLinkbackMessagesEnabled: Boolean! + + """ + Whether the Git integration linkback messages should be sent to public repositories. + """ + gitPublicLinkbackMessagesEnabled: Boolean! + + """ + Whether the organization is using a roadmap. + """ + roadmapEnabled: Boolean! + + """ + The frequency at which to prompt for project updates. + """ + projectUpdatesReminderFrequency: ProjectUpdateReminderFrequency! + + """ + The day at which to prompt for project updates. + """ + projectUpdateRemindersDay: Day! + + """ + The hour at which to prompt for project updates. + """ + projectUpdateRemindersHour: Float! + + """ + Whether SAML authentication is enabled for organization. + """ + samlEnabled: Boolean! + + """ + [INTERNAL] SAML settings + """ + samlSettings: JSONObject + + """ + Whether SCIM provisioning is enabled for organization. + """ + scimEnabled: Boolean! + + """ + Allowed authentication providers, empty array means all are allowed + """ + allowedAuthServices: [String!]! + + """ + The time at which deletion of the organization was requested. + """ + deletionRequestedAt: DateTime + + """ + The time at which the trial of the plus plan will end. + """ + trialEndsAt: DateTime + + """ + Previously used URL keys for the organization (last 3 are kept and redirected). + """ + previousUrlKeys: [String!]! + + """ + Whether member users are allowed to send invites + """ + allowMembersToInvite: Boolean + + """ + The feature release channel the organization belongs to. + """ + releaseChannel: ReleaseChannel! + + """ + Which day count to use for SLA calculations + """ + slaDayCount: SLADayCountType! + + """ + Users associated with the organization. + """ + users( + """ + Should query return disabled/suspended users (default: false). + """ + includeDisabled: Boolean + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): UserConnection! + + """ + Teams associated with the organization. + """ + teams( + """ + Filter returned teams. + """ + filter: TeamFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): TeamConnection! + + """ + Integrations associated with the organization. + """ + integrations( + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IntegrationConnection! + + """ + The organization's subscription to a paid plan. + """ + subscription: PaidSubscription + + """ + Number of active users in the organization. + """ + userCount: Int! + + """ + Number of issues in the organization. + """ + createdIssueCount: Int! + + """ + Templates associated with the organization. + """ + templates( + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): TemplateConnection! + + """ + Labels associated with the organization. + """ + labels( + """ + Filter returned issue labels. + """ + filter: IssueLabelFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IssueLabelConnection! +} + +""" +The frequency at which to send project update reminders. +""" +enum ProjectUpdateReminderFrequency { + week + twoWeeks + month + never +} + +""" +The day of the week. +""" +enum Day { + Sunday + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday +} + +""" +Features release channel +""" +enum ReleaseChannel { + internal + beta + preRelease + public +} + +""" +Which day count to use for SLA calculations +""" +enum SLADayCountType { + all + onlyBusinessDays +} + +""" +[ALPHA] An external authenticated (e.g., through Slack) user which doesn't have a Linear account, but can create and update entities in Linear from the external system that authenticated them. +""" +type ExternalUser implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The external user's full name. + """ + name: String! + + """ + The external user's display name. Unique within each organization. Can match the display name of an actual user. + """ + displayName: String! + + """ + The external user's email address. + """ + email: String + + """ + An URL to the external user's avatar image. + """ + avatarUrl: String + + """ + Organization the external user belongs to. + """ + organization: Organization! + + """ + The last time the external user was seen interacting with Linear. + """ + lastSeen: DateTime +} + +type ExternalUserEdge { + node: ExternalUser! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type ExternalUserConnection { + edges: [ExternalUserEdge!]! + nodes: [ExternalUser!]! + pageInfo: PageInfo! +} + +""" +User favorites presented in the sidebar. +""" +type Favorite implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The type of the favorite. + """ + type: String! + + """ + The parent folder of the favorite. + """ + parent: Favorite + + """ + The name of the folder. Only applies to favorites of type folder. + """ + folderName: String + + """ + The type of favorited predefined view. + """ + predefinedViewType: String + + """ + The owner of the favorite. + """ + owner: User! + + """ + The order of the item in the favorites list. + """ + sortOrder: Float! + + """ + Children of the favorite. Only applies to favorites of type folder. + """ + children( + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): FavoriteConnection! + + """ + The favorited issue. + """ + issue: Issue + + """ + The favorited project. + """ + project: Project + + """ + The favorited team of the project. + """ + projectTeam: Team + + """ + The favorited cycle. + """ + cycle: Cycle + + """ + The favorited custom view. + """ + customView: CustomView + + """ + The team of the favorited predefined view. + """ + predefinedViewTeam: Team + + """ + The favorited document. + """ + document: Document + + """ + The favorited roadmap. + """ + roadmap: Roadmap + + """ + The favorited label. + """ + label: IssueLabel + + """ + The favorited user. + """ + user: User +} + +type FavoriteEdge { + node: Favorite! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type FavoriteConnection { + edges: [FavoriteEdge!]! + nodes: [Favorite!]! + pageInfo: PageInfo! +} + +""" +Join table between projects and roadmaps +""" +type RoadmapToProject implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + 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! +} + +type RoadmapToProjectEdge { + node: RoadmapToProject! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type RoadmapToProjectConnection { + edges: [RoadmapToProjectEdge!]! + nodes: [RoadmapToProject!]! + pageInfo: PageInfo! +} + +""" +A roadmap for projects. +""" +type Roadmap implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The name of the roadmap. + """ + name: String! + + """ + The description of the roadmap. + """ + description: String + + """ + The organization of the roadmap. + """ + organization: Organization! + + """ + The user who created the roadmap. + """ + creator: User! + + """ + The user who owns the roadmap. + """ + owner: User! + + """ + The roadmap's unique URL slug. + """ + slugId: String! + + """ + The sort order of the roadmap within the organization. + """ + sortOrder: Float! + + """ + The roadmap's color. + """ + color: String + + """ + Projects associated with the roadmap. + """ + projects( + """ + Filter returned projects. + """ + filter: ProjectFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): ProjectConnection! +} + +type RoadmapEdge { + node: Roadmap! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type RoadmapConnection { + edges: [RoadmapEdge!]! + nodes: [Roadmap!]! + pageInfo: PageInfo! +} + +""" +The configuration of all integrations for a project or a team. +""" +type IntegrationsSettings implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + 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 any of the project or team's issues change to completed or cancelled. + """ + slackIssueStatusChangedDone: 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 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 + + """ + Whether to send a Slack message when a new issue is added to triage. + """ + slackIssueAddedToTriage: Boolean + + """ + Whether to send a Slack message when an SLA is at high risk + """ + slackIssueSlaHighRisk: Boolean + + """ + Whether to send a Slack message when an SLA is breached + """ + slackIssueSlaBreached: Boolean + + """ + Team which those settings apply to. + """ + team: Team + + """ + Project which those settings apply to. + """ + project: Project +} + +type IntegrationsSettingsEdge { + node: IntegrationsSettings! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type IntegrationsSettingsConnection { + edges: [IntegrationsSettingsEdge!]! + nodes: [IntegrationsSettings!]! + pageInfo: PageInfo! +} + +""" +Labels that can be associated with issues. +""" +type IssueLabel implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The label's name. + """ + name: String! + + """ + The label's description. + """ + description: String + + """ + The label's color as a HEX string. + """ + color: String! + organization: Organization! + @deprecated( + reason: "Workspace labels are identified by their team being null." + ) + + """ + The team that the label is associated with. If null, the label is associated with the global workspace. + """ + team: Team + + """ + The user who created the label. + """ + creator: User + + """ + The parent label. + """ + parent: IssueLabel + + """ + Whether this label is considered to be a group. + """ + isGroup: Boolean! + + """ + Issues associated with the label. + """ + issues( + """ + Filter returned issues. + """ + filter: IssueFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IssueConnection! + + """ + Children of the label. + """ + children( + """ + Filter returned issue labels. + """ + filter: IssueLabelFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IssueLabelConnection! +} + +type IssueLabelEdge { + node: IssueLabel! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type IssueLabelConnection { + edges: [IssueLabelEdge!]! + nodes: [IssueLabel!]! + pageInfo: PageInfo! +} + +""" +A state in a team workflow. +""" +type WorkflowState implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The state's name. + """ + name: String! + + """ + The state's UI color as a HEX string. + """ + color: String! + + """ + Description of the state. + """ + description: String + + """ + The position of the state in the team flow. + """ + position: Float! + + """ + The type of the state. One of "triage", "backlog", "unstarted", "started", "completed", "canceled". + """ + type: String! + + """ + The team to which this state belongs to. + """ + team: Team! + + """ + Issues belonging in this state. + """ + issues( + """ + Filter returned issues. + """ + filter: IssueFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IssueConnection! +} + +type WorkflowStateEdge { + node: WorkflowState! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type WorkflowStateConnection { + edges: [WorkflowStateEdge!]! + nodes: [WorkflowState!]! + pageInfo: PageInfo! +} + +""" +[Internal] A draft issue. +""" +type IssueDraft implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The draft's title. + """ + title: String! + + """ + The draft's description in markdown format. + """ + description: String + + """ + The priority of the draft. + """ + priority: Float! + + """ + The estimate of the complexity of the draft. + """ + estimate: Float + + """ + The date at which the issue would be due. + """ + dueDate: TimelessDate + + """ + The team associated with the draft. + """ + teamId: String! + + """ + The cycle associated with the draft. + """ + cycleId: String + + """ + The project associated with the draft. + """ + projectId: String + + """ + The project milestone associated with the draft. + """ + projectMilestoneId: String + + """ + The user who created the draft. + """ + creator: User! + + """ + The user assigned to the draft. + """ + assigneeId: String + + """ + The workflow state associated with the draft. + """ + stateId: String! + + """ + The parent draft of the draft. + """ + parent: IssueDraft + + """ + The parent issue of the draft. + """ + parentIssue: Issue + + """ + The order of items in the sub-draft list. Only set if the draft has `parent` set. + """ + subIssueSortOrder: Float + + """ + Label for the priority. + """ + priorityLabel: String! + + """ + [Internal] The draft's description as a Prosemirror document. + """ + descriptionData: JSON + + """ + Serialized array of JSONs representing attachments. + """ + attachments: JSONObject! +} + +""" +Issue relation history's payload +""" +type IssueRelationHistoryPayload { + """ + The identifier of the related issue. + """ + identifier: String! + + """ + The type of the change. + """ + type: String! +} + +""" +A record of changes to an issue. +""" +type IssueHistory implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The issue that was changed. + """ + issue: Issue! + + """ + The user who made these changes. If null, possibly means that the change made by an integration. + """ + actor: User + + """ + The id of user who made these changes. If null, possibly means that the change made by an integration. + """ + actorId: String + + """ + Whether the issue's description was updated. + """ + updatedDescription: Boolean + + """ + What the title was changed from. + """ + fromTitle: String + + """ + What the title was changed to. + """ + toTitle: String + + """ + The user from whom the issue was re-assigned from. + """ + fromAssignee: User + + """ + The id of user from whom the issue was re-assigned from. + """ + fromAssigneeId: String + + """ + The user to whom the issue was assigned to. + """ + toAssignee: User + + """ + The id of user to whom the issue was assigned to. + """ + toAssigneeId: String + + """ + What the priority was changed from. + """ + fromPriority: Float + + """ + What the priority was changed to. + """ + toPriority: Float + + """ + The team from which the issue was moved from. + """ + fromTeam: Team + + """ + The id of team from which the issue was moved from. + """ + fromTeamId: String + + """ + The team to which the issue was moved to. + """ + toTeam: Team + + """ + The id of team to which the issue was moved to. + """ + toTeamId: String + + """ + The previous parent of the issue. + """ + fromParent: Issue + + """ + The id of previous parent of the issue. + """ + fromParentId: String + + """ + The new parent of the issue. + """ + toParent: Issue + + """ + The id of new parent of the issue. + """ + toParentId: String + + """ + The previous workflow state of the issue. + """ + fromState: WorkflowState + + """ + The id of previous workflow state of the issue. + """ + fromStateId: String + + """ + The new workflow state of the issue. + """ + toState: WorkflowState + + """ + The id of new workflow state of the issue. + """ + toStateId: String + + """ + The previous cycle of the issue. + """ + fromCycle: Cycle + + """ + The id of previous cycle of the issue. + """ + fromCycleId: String + + """ + The new cycle of the issue. + """ + toCycle: Cycle + + """ + The id of new cycle of the issue. + """ + toCycleId: String + + """ + The new project created from the issue. + """ + toConvertedProject: Project + + """ + The id of new project created from the issue. + """ + toConvertedProjectId: String + + """ + The previous project of the issue. + """ + fromProject: Project + + """ + The id of previous project of the issue. + """ + fromProjectId: String + + """ + The new project of the issue. + """ + toProject: Project + + """ + The id of new project of the issue. + """ + toProjectId: String + + """ + What the estimate was changed from. + """ + fromEstimate: Float + + """ + What the estimate was changed to. + """ + toEstimate: Float + + """ + Whether the issue is archived at the time of this history entry. + """ + archived: Boolean + + """ + Whether the issue was trashed or un-trashed. + """ + trashed: Boolean + + """ + The import record. + """ + issueImport: IssueImport + + """ + The linked attachment. + """ + attachment: Attachment + + """ + The id of linked attachment. + """ + attachmentId: String + + """ + ID's of labels that were added. + """ + addedLabelIds: [String!] + + """ + ID's of labels that were removed. + """ + removedLabelIds: [String!] + + """ + Changed issue relationships. + """ + relationChanges: [IssueRelationHistoryPayload!] + + """ + Whether the issue was auto-closed. + """ + autoClosed: Boolean + + """ + Whether the issue was auto-archived. + """ + autoArchived: Boolean + + """ + What the due date was changed from + """ + fromDueDate: TimelessDate + + """ + What the due date was changed to + """ + toDueDate: TimelessDate + + """ + [Internal] Serialized JSON representing changes for certain non-relational properties. + """ + changes: JSONObject + + """ + The bot that performed the action + """ + botActor: ActorBot + addedLabels: [IssueLabel!] + removedLabels: [IssueLabel!] +} + +type IssueHistoryEdge { + node: IssueHistory! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type IssueHistoryConnection { + edges: [IssueHistoryEdge!]! + nodes: [IssueHistory!]! + pageInfo: PageInfo! +} + +""" +An import job for data from an external service +""" +type IssueImport implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + New team's name in cases when teamId not set + """ + teamName: String + + """ + The id for the user that started the job. + """ + creatorId: String! + + """ + The service from which data will be imported. + """ + service: String! + + """ + The status for the import job. + """ + status: String! + + """ + The data mapping configuration for the import job. + """ + mapping: JSONObject + + """ + User readable error message, if one has occurred during the import. + """ + error: String + + """ + Current step progress in % (0-100). + """ + progress: Float + + """ + File URL for the uploaded CSV for the import, if there is one. + """ + csvFileUrl: String + + """ + Error code and metadata, if one has occurred during the import + """ + errorMetadata: JSONObject +} + +""" +A relation between two issues. +""" +type IssueRelation implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The relationship of the issue with the related issue. + """ + type: String! + + """ + The issue whose relationship is being described. + """ + issue: Issue! + + """ + The related issue. + """ + relatedIssue: Issue! +} + +type IssueRelationEdge { + node: IssueRelation! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type IssueRelationConnection { + edges: [IssueRelationEdge!]! + nodes: [IssueRelation!]! + pageInfo: PageInfo! +} + +""" +Request to install OAuth clients on organizations and the response to the request. +""" +type OauthClientApproval implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The uuid of the OAuth client being requested for installation. + """ + oauthClientId: String! + + """ + The person who requested installing the OAuth client. + """ + requesterId: String! + + """ + The person who responded to the request to install the OAuth client. + """ + responderId: String + + """ + The status for the OAuth client approval request. + """ + status: OAuthClientApprovalStatus! + + """ + The scopes the app has requested. + """ + scopes: [String!]! + + """ + The reason the person wants to install this OAuth client. + """ + requestReason: String + + """ + The reason the request for the OAuth client approval was denied. + """ + denyReason: String +} + +""" +The different requests statuses possible for an OAuth client approval request +""" +enum OAuthClientApprovalStatus { + requested + approved + denied +} + +""" +A basic entity. +""" +interface Entity implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime +} + +""" +Defines the use of a domain by an organization. +""" +type OrganizationDomain implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + Domain name + """ + name: String! + + """ + Is this domain verified + """ + verified: Boolean! + + """ + E-mail used to verify this domain + """ + verificationEmail: String + + """ + The user who added the domain. + """ + creator: User + + """ + What type of auth is the domain used for + """ + authType: OrganizationDomainAuthType! + + """ + Whether the domains was claimed by the organization through DNS verification. + """ + claimed: Boolean +} + +""" +What type of auth is the domain used for. +""" +enum OrganizationDomainAuthType { + saml + general +} + +""" +An invitation to the organization that has been sent via email. +""" +type OrganizationInvite implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The invitees email address. + """ + email: String! + + """ + The user role that the invitee will receive upon accepting the invite. + """ + role: UserRoleType! + + """ + The invite was sent to external address. + """ + external: Boolean! + + """ + The time at which the invite was accepted. Null, if the invite hasn't been accepted + """ + acceptedAt: DateTime + + """ + The time at which the invite will be expiring. Null, if the invite shouldn't expire + """ + expiresAt: DateTime + + """ + Extra metadata associated with the organization invite. + """ + metadata: JSONObject! + + """ + The user who created the invitation. + """ + inviter: User! + + """ + The user who has accepted the invite. Null, if the invite hasn't been accepted. + """ + invitee: User + + """ + The organization that the invite is associated with. + """ + organization: Organization! +} + +""" +The different permission roles available to users on an organization +""" +enum UserRoleType { + admin + guest + user +} + +type OrganizationInviteEdge { + node: OrganizationInvite! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type OrganizationInviteConnection { + edges: [OrganizationInviteEdge!]! + nodes: [OrganizationInvite!]! + pageInfo: PageInfo! +} + +""" +A milestone for a project. +""" +type ProjectMilestone implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The name of the project milestone. + """ + name: String! + + """ + The planned completion date of the milestone. + """ + targetDate: TimelessDate + + """ + The project of the milestone. + """ + project: Project! + + """ + The order of the milestone in relation to other milestones within a project. + """ + sortOrder: Float! + + """ + The project milestone's description in markdown format. + """ + description: String + + """ + [Internal] The project milestone's description as a Prosemirror document. + """ + descriptionData: JSON +} + +type ProjectMilestoneEdge { + node: ProjectMilestone! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type ProjectMilestoneConnection { + edges: [ProjectMilestoneEdge!]! + nodes: [ProjectMilestone!]! + pageInfo: PageInfo! +} + +""" +An external link for a project. +""" +type ProjectLink implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The link's URL. + """ + url: String! + + """ + The link's label. + """ + label: String! + + """ + The user who created the link. + """ + creator: User! + + """ + The project that the link is associated with. + """ + project: Project! +} + +type ProjectLinkEdge { + node: ProjectLink! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type ProjectLinkConnection { + edges: [ProjectLinkEdge!]! + nodes: [ProjectLink!]! + pageInfo: PageInfo! +} + +""" +Holds information about when a user has interacted with a project update. +""" +type ProjectUpdateInteraction implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The user that has interacted with the project update. + """ + user: User! + + """ + The project update that has been interacted with. + """ + projectUpdate: ProjectUpdate! + + """ + The time at which the user read the project update. + """ + readAt: DateTime! +} + +type ProjectUpdateInteractionEdge { + node: ProjectUpdateInteraction! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type ProjectUpdateInteractionConnection { + edges: [ProjectUpdateInteractionEdge!]! + nodes: [ProjectUpdateInteraction!]! + pageInfo: PageInfo! +} + +""" +A user's web browser push notification subscription. +""" +type PushSubscription implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime +} + +type PushSubscriptionEdge { + node: PushSubscription! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type PushSubscriptionConnection { + edges: [PushSubscriptionEdge!]! + nodes: [PushSubscription!]! + pageInfo: PageInfo! +} + +""" +The paid subscription of an organization. +""" +type PaidSubscription implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The subscription type. + """ + type: String! + + """ + The number of seats in the subscription. + """ + seats: Float! + + """ + The minimum number of seats that will be billed in the subscription. + """ + seatsMinimum: Float + + """ + The maximum number of seats that will be billed in the subscription. + """ + seatsMaximum: Float + + """ + The creator of the subscription. + """ + creator: User + + """ + The organization that the subscription is associated with. + """ + organization: Organization! + + """ + The collection method for this subscription, either automatically charged or invoiced. + """ + collectionMethod: String + + """ + The date the subscription was canceled, if any. + """ + canceledAt: DateTime + + """ + The subscription type of a pending change. Null if no change pending. + """ + pendingChangeType: String + + """ + The date the subscription will be billed next. + """ + nextBillingAt: DateTime +} + +""" +An organizational unit that contains issues. +""" +type Team implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The team's name. + """ + name: String! + + """ + The team's unique key. The key is used in URLs. + """ + key: String! + + """ + The team's description. + """ + description: String + + """ + The icon of the team. + """ + icon: String + + """ + The team's color. + """ + color: String + + """ + The organization that the team is associated with. + """ + organization: Organization! + + """ + Whether the team uses cycles. + """ + cyclesEnabled: Boolean! + + """ + The day of the week that a new cycle starts. + """ + cycleStartDay: Float! + + """ + The duration of a cycle in weeks. + """ + cycleDuration: Float! + + """ + The cooldown time after each cycle in weeks. + """ + cycleCooldownTime: Float! + + """ + Auto assign started issues to current cycle. + """ + cycleIssueAutoAssignStarted: Boolean! + + """ + Auto assign completed issues to current cycle. + """ + cycleIssueAutoAssignCompleted: Boolean! + + """ + Auto assign issues to current cycle if in active status. + """ + cycleLockToActive: Boolean! + + """ + How many upcoming cycles to create. + """ + upcomingCycleCount: Float! + + """ + The timezone of the team. Defaults to "America/Los_Angeles" + """ + timezone: String! + + """ + Unique hash for the team to be used in invite URLs. + """ + inviteHash: String! + + """ + The issue estimation type to use. Must be one of "notUsed", "exponential", "fibonacci", "linear", "tShirt". + """ + issueEstimationType: String! + + """ + Whether issues without priority should be sorted first. + """ + issueOrderingNoPriorityFirst: Boolean! + + """ + Whether to allow zeros in issues estimates. + """ + issueEstimationAllowZero: Boolean! + + """ + Whether to move issues to bottom of the column when changing state. + """ + issueSortOrderDefaultToBottom: Boolean! + + """ + Whether to add additional points to the estimate scale. + """ + issueEstimationExtended: Boolean! + + """ + What to use as an default estimate for unestimated issues. + """ + defaultIssueEstimate: Float! + + """ + Whether triage mode is enabled for the team or not. + """ + triageEnabled: Boolean! + + """ + Whether an issue needs to have a priority set before leaving triage + """ + requirePriorityToLeaveTriage: Boolean! + + """ + The default workflow state into which issues are set when they are opened by team members. + """ + defaultIssueState: WorkflowState + + """ + The default template to use for new issues created by members of the team. + """ + 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 template to use for new issues created by non-members of the team. + """ + 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 default template to use for new projects created for the team. + """ + defaultProjectTemplate: Template + + """ + The workflow state into which issues are set when they are opened by non-team members or integrations if triage is enabled. + """ + triageIssueState: WorkflowState + + """ + Whether the team is private or not. + """ + private: Boolean! + + """ + The workflow state into which issues are moved when a PR has been opened as draft. + """ + draftWorkflowState: WorkflowState + + """ + The workflow state into which issues are moved when a PR has been opened. + """ + startWorkflowState: WorkflowState + + """ + The workflow state into which issues are moved when a review has been requested for the PR. + """ + reviewWorkflowState: WorkflowState + + """ + The workflow state into which issues are moved when a PR is ready to be merged. + """ + mergeableWorkflowState: WorkflowState + + """ + The workflow state into which issues are moved when a PR has been merged. + """ + mergeWorkflowState: WorkflowState + + """ + Whether to group recent issue history entries. + """ + groupIssueHistory: Boolean! + + """ + Whether to send new issue notifications to Slack. + """ + slackNewIssue: Boolean! + + """ + Whether to send new issue comment notifications to Slack. + """ + slackIssueComments: Boolean! + + """ + Whether to send new issue status updates to Slack. + """ + slackIssueStatuses: 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 + + """ + Period after which automatically closed and completed issues are automatically archived in months. + """ + autoArchivePeriod: Float! + + """ + The workflow state into which issues are moved when they are marked as a duplicate of another issue. Defaults to the first canceled state. + """ + markedAsDuplicateWorkflowState: WorkflowState + + """ + Calendar feed URL (iCal) for cycles. + """ + cycleCalenderUrl: String! + + """ + Issues associated with the team. + """ + issues( + """ + Filter returned issues. + """ + filter: IssueFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IssueConnection! + + """ + Number of issues in the team. + """ + issueCount( + """ + Include archived issues in the count. + """ + includeArchived: Boolean = false + ): Int! + + """ + Cycles associated with the team. + """ + cycles( + """ + Filter returned cycles. + """ + filter: CycleFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): CycleConnection! + + """ + Team's currently active cycle. + """ + activeCycle: Cycle + + """ + Users who are members of this team. + """ + members( + """ + Filter returned users. + """ + filter: UserFilter + + """ + Should query return disabled/suspended users (default: false). + """ + includeDisabled: Boolean + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): UserConnection! + + """ + Memberships associated with the team. For easier access of the same data, use `members` query. + """ + memberships( + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): TeamMembershipConnection! + + """ + Projects associated with the team. + """ + projects( + """ + Filter returned projects. + """ + filter: ProjectFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): ProjectConnection! + + """ + The states that define the workflow associated with the team. + """ + states( + """ + Filter returned workflow states. + """ + filter: WorkflowStateFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): WorkflowStateConnection! + + """ + Templates associated with the team. + """ + templates( + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): TemplateConnection! + + """ + Labels associated with the team. + """ + labels( + """ + Filter returned issue labels. + """ + filter: IssueLabelFilter + + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): IssueLabelConnection! + + """ + Webhooks associated with the team. + """ + webhooks( + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ after: String - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): WebhookConnection! + + """ + Settings for all integrations associated with that team. + """ + integrationsSettings: IntegrationsSettings +} + +type TeamEdge { + node: Team! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type TeamConnection { + edges: [TeamEdge!]! + nodes: [Team!]! + pageInfo: PageInfo! +} + +""" +Defines the membership of a user to a team. +""" +type TeamMembership implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The user that the membership is associated with. + """ + user: User! + + """ + The team that the membership is associated with. + """ + team: Team! + + """ + Whether the user is the owner of the team + """ + owner: Boolean + + """ + The order of the item in the users team list. + """ + sortOrder: Float! +} + +type TeamMembershipEdge { + node: TeamMembership! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type TeamMembershipConnection { + edges: [TeamMembershipEdge!]! + nodes: [TeamMembership!]! + pageInfo: PageInfo! +} + +""" +A team's triage responsibility. +""" +type TriageResponsibility implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The team to which the triage responsibility belongs to. + """ + team: Team! + + """ + The action to take when an issue is added to triage. + """ + action: TriageResponsibilityAction! + + """ + The responsibility configuration. + """ + config: JSONObject + + """ + The integration used for scheduling when using the 'integrationSchedule' configuration. + """ + integration: Integration! +} + +""" +Which action should be taken after an issue is added to triage. +""" +enum TriageResponsibilityAction { + assign + notify +} + +type TriageResponsibilityEdge { + node: TriageResponsibility! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type TriageResponsibilityConnection { + edges: [TriageResponsibilityEdge!]! + nodes: [TriageResponsibility!]! + pageInfo: PageInfo! +} + +""" +An organization. Organizations are root-level objects that contain users and teams. +""" +type AuthOrganization { + id: ID! + + """ + The organization's name. + """ + name: String! + + """ + The organization's unique URL key. + """ + urlKey: String! + + """ + Previously used URL keys for the organization (last 3 are kept and redirected). + """ + previousUrlKeys: [String!]! + + """ + The organization's logo URL. + """ + logoUrl: String + + """ + The time at which deletion of the organization was requested. + """ + deletionRequestedAt: DateTime + + """ + Whether SAML authentication is enabled for organization. + """ + samlEnabled: Boolean! + userCount: Float! + + """ + Allowed authentication providers, empty array means all are allowed + """ + allowedAuthServices: [String!]! +} + +""" +A user that has access to the the resources of an organization. +""" +type AuthUser { + id: ID! + + """ + The user's full name. + """ + name: String! + + """ + The user's display (nick) name. Unique within each organization. + """ + displayName: String! + + """ + The user's email address. + """ + email: String! + + """ + An URL to the user's avatar image. + """ + avatarUrl: String + + """ + Organization the user belongs to. + """ + organization: AuthOrganization! +} + +""" +A user account. +""" +type UserAccount { + """ + The models identifier. + """ + id: ID! + + """ + The time at which the model was created. + """ + createdAt: DateTime! + + """ + The time at which the model was updated. + """ + updatedAt: DateTime! + + """ + The time at which the model was archived. + """ + archivedAt: DateTime + + """ + The user's name. + """ + name: String + + """ + The user's email address. + """ + email: String! + + """ + The authentication service used to create the account. + """ + service: String! +} + +""" +[INTERNAL] An email change verification challenge. +""" +type UserAccountEmailChange { + """ + The model's identifier. + """ + id: ID! + + """ + The time at which the model was updated. + """ + updatedAt: DateTime! + + """ + The time at which the model was archived. + """ + archivedAt: DateTime + + """ + The user account's current email. + """ + oldEmail: String! + + """ + The timestamp the old email was verified at. + """ + oldEmailVerifiedAt: DateTime + + """ + The new email the user account wants to change to. + """ + newEmail: String! + + """ + The timestamp the new email was verified at. + """ + newEmailVerifiedAt: DateTime + + """ + The timestamp the verification codes expire at. + """ + expiresAt: DateTime! + + """ + The timestamp this verification challenge was canceled at. + """ + canceledAt: DateTime +} + +""" +The settings of a user as a JSON object. +""" +type UserSettings implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The notification channel settings the user has selected. + """ + notificationPreferences: JSONObject! + + """ + The email types the user has unsubscribed from. + """ + unsubscribedFrom: [String!]! + + """ + The user associated with these settings. + """ + user: User! + + """ + Hash for the user to be used in calendar URLs. + """ + calendarHash: String + + """ + Whether to show full user names instead of display names. + """ + showFullUserNames: Boolean! +} + +""" +View preferences. +""" +type ViewPreferences implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The view preference type. + """ + type: String! + + """ + The view type. + """ + viewType: String! +} + +""" +A webhook used to send HTTP notifications over data updates +""" +type Webhook implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + Webhook label + """ + label: String + + """ + Webhook URL + """ + url: String + + """ + Whether the Webhook is enabled. + """ + enabled: Boolean! + + """ + The team that the webhook is associated with. If null, the webhook is associated with all public teams of the organization. + """ + team: Team + + """ + Whether the Webhook is enabled for all public teams, including teams created after the webhook was created. + """ + allPublicTeams: Boolean! + + """ + The user who created the webhook. + """ + creator: User + + """ + Secret token for verifying the origin on the recipient side. + """ + secret: String + + """ + The resource types this webhook is subscribed to. + """ + resourceTypes: [String!]! +} + +type WebhookEdge { + node: Webhook! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type WebhookConnection { + edges: [WebhookEdge!]! + nodes: [Webhook!]! + pageInfo: PageInfo! +} + +type WorkflowCronJobDefinition implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The name of the workflow cron job. + """ + name: String! + + """ + The description of the workflow cron job. + """ + description: String + enabled: Boolean! + + """ + The team associated with the workflow cron job. + """ + team: Team! + + """ + The user who created the workflow cron job. + """ + creator: User! + + """ + Cron schedule which is used to execute the workflow cron job. + """ + schedule: JSONObject! + + """ + An array of activities that will be executed as part of the workflow cron job. + """ + activities: JSONObject! + + """ + The sort order of the workflow cron job definition within its siblings. + """ + sortOrder: String! +} + +type WorkflowCronJobDefinitionEdge { + node: WorkflowCronJobDefinition! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type WorkflowCronJobDefinitionConnection { + edges: [WorkflowCronJobDefinitionEdge!]! + nodes: [WorkflowCronJobDefinition!]! + pageInfo: PageInfo! +} + +type WorkflowDefinition implements Node { + """ + The unique identifier of the entity. + """ + id: ID! + + """ + The time at which the entity was created. + """ + createdAt: DateTime! + + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! + + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime + + """ + The name of the workflow. + """ + name: String! + + """ + The name of the group that the workflow belongs to. + """ + groupName: String + + """ + The description of the workflow. + """ + description: String + + """ + The type of the workflow. + """ + type: WorkflowType! + + """ + The type of the event that triggers off the workflow. + """ + trigger: WorkflowTrigger! + + """ + The object type (e.g. Issue) that triggers this workflow. + """ + triggerType: WorkflowTriggerType! + + """ + The conditions that need to be match for the workflow to be triggered. + """ + conditions: JSONObject! + enabled: Boolean! + + """ + The team associated with the workflow. If not set, the workflow is associated with the entire organization. + """ + team: Team + + """ + The user who created the workflow. + """ + creator: User! + + """ + An array of activities that will be executed as part of the workflow. + """ + activities: JSONObject! + + """ + The sort order of the workflow definition within its siblings. + """ + sortOrder: String! + + """ + The contextual label view associated with the workflow. + """ + label: IssueLabel + + """ + The contextual cycle view associated with the workflow. + """ + cycle: Cycle + + """ + The contextual user view associated with the workflow. + """ + user: User + + """ + The contextual project view associated with the workflow. + """ + project: Project + + """ + The context custom view associated with the workflow. + """ + customView: CustomView + + """ + The type of view to which this workflow's context is associated with. + """ + contextViewType: ContextViewType + + """ + The type of user view to which this workflow's context is associated with. + """ + userContextViewType: UserContextViewType +} + +enum WorkflowType { + sla + custom + viewSubscription +} + +enum WorkflowTrigger { + entityCreated + entityUpdated + entityCreatedOrUpdated + entityRemoved + entityUnarchived +} + +enum WorkflowTriggerType { + issue + project +} + +enum ContextViewType { + activeIssues + activeCycle + upcomingCycle + backlog + triage +} + +enum UserContextViewType { + assigned +} + +type WorkflowDefinitionEdge { + node: WorkflowDefinition! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type WorkflowDefinitionConnection { + edges: [WorkflowDefinitionEdge!]! + nodes: [WorkflowDefinition!]! + pageInfo: PageInfo! +} + +type NotificationSubscriptionEdge { + node: NotificationSubscription! + + """ + Used in `before` and `after` args + """ + cursor: String! +} + +type NotificationSubscriptionConnection { + edges: [NotificationSubscriptionEdge!]! + nodes: [NotificationSubscription!]! + pageInfo: PageInfo! +} + +type AuthApiKey { + """ + The unique identifier of the entity. + """ + id: ID! +} + +type AuthIntegration { + """ + The unique identifier of the entity. + """ + id: ID! +} + +type SynchronizedPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! +} + +""" +A generic payload return from entity deletion mutations. +""" +type DeletePayload implements ArchivePayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + Whether the operation was successful. + """ + success: Boolean! - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + The identifier of the deleted entity. + """ + entityId: String! +} - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): IssueConnection! +type IssuePayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Cycles associated with the team.""" - cycles( - """Filter returned cycles.""" - filter: CycleFilter + """ + The issue that was created or updated. + """ + issue: Issue - """A cursor to be used with last for backward pagination.""" - before: String + """ + Whether the operation was successful. + """ + success: Boolean! +} - """A cursor to be used with first for forward pagination""" - after: String +type IssueBatchPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int + """ + The issues that were updated. + """ + issues: [Issue!]! - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + Whether the operation was successful. + """ + success: Boolean! +} - """Should archived resources be included (default: false)""" - includeArchived: Boolean +type AuthApiKeyPayload { + """ + The auth API key that was created. + """ + authApiKey: AuthApiKey! - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): CycleConnection! + """ + Whether the operation was successful. + """ + success: Boolean! +} - """Team's currently active cycle.""" - activeCycle: Cycle +type AuthApiKeyDeletePayload { + """ + Whether the operation was successful. + """ + success: Boolean! +} - """Users who are members of this team.""" - members( - """Filter returned users.""" - filter: UserFilter +type ApiKeyPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Should query return disabled/suspended users (default: false).""" - includeDisabled: Boolean + """ + The API key that was created. + """ + apiKey: ApiKey! - """A cursor to be used with last for backward pagination.""" - before: String + """ + Whether the operation was successful. + """ + success: Boolean! +} - """A cursor to be used with first for forward pagination""" - after: String +""" +Public information of the OAuth application. +""" +type Application { + """ + OAuth application's ID. + """ + id: String! - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int + """ + OAuth application's client ID. + """ + clientId: String! - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + Application name. + """ + name: String! - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + Information about the application. + """ + description: String - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): UserConnection! + """ + Name of the developer. + """ + developer: String! + + """ + Url of the developer (homepage or docs). + """ + developerUrl: String! + + """ + Image of the application. + """ + imageUrl: String +} + +""" +Public information of the OAuth application, plus whether the application has been authorized for the given scopes. +""" +type UserAuthorizedApplication { + """ + OAuth application's ID. + """ + id: String! + + """ + OAuth application's client ID. + """ + clientId: String! + + """ + Application name. + """ + name: String! + + """ + Information about the application. + """ + description: String + + """ + Name of the developer. + """ + developer: String! + + """ + Url of the developer (homepage or docs). + """ + developerUrl: String! + + """ + Image of the application. + """ + imageUrl: String + + """ + Whether the user has authorized the application for the given scopes. + """ + isAuthorized: Boolean! + + """ + Whether the application was created by Linear. + """ + createdByLinear: Boolean! + + """ + Whether or not webhooks are enabled for the application. + """ + webhooksEnabled: Boolean! + + """ + Error associated with the application needing to be requested for approval in the workspace + """ + approvalErrorCode: String +} + +""" +[INTERNAL] Public information of the OAuth application, plus the authorized scopes for a given user. +""" +type AuthorizedApplication { + """ + Application name. + """ + name: String! + + """ + Image of the application. + """ + imageUrl: String + + """ + Scopes that are authorized for this application for a given user. + """ + scope: [String!]! + + """ + OAuth application's ID. + """ + appId: String! + + """ + OAuth application's client ID. + """ + clientId: String! + + """ + Whether or not webhooks are enabled for the application. + """ + webhooksEnabled: Boolean! +} + +""" +[INTERNAL] An OAuth userId/createdDate tuple +""" +type AuthMembership { + """ + The authorizing userId + """ + userId: String! + + """ + The date of the authorization + """ + createdAt: DateTime! +} + +""" +[INTERNAL] Public information of the OAuth application, plus the userIds and scopes for those users. +""" +type WorkspaceAuthorizedApplication { + """ + Application name. + """ + name: String! + + """ + Image of the application. + """ + imageUrl: String + + """ + Scopes that are authorized for this application for a given user. + """ + scope: [String!]! + + """ + OAuth application's ID. + """ + appId: String! + + """ + OAuth application's client ID. + """ + clientId: String! + + """ + Whether or not webhooks are enabled for the application. + """ + webhooksEnabled: Boolean! """ - Memberships associated with the team. For easier access of the same data, use `members` query. + Total number of members that authorized the application """ - memberships( - """A cursor to be used with last for backward pagination.""" - before: String - - """A cursor to be used with first for forward pagination""" - after: String - - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int + totalMembers: Float! - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + UserIds and membership dates of everyone who has authorized the application with the set of scopes + """ + memberships: [AuthMembership!]! +} - """Should archived resources be included (default: false)""" - includeArchived: Boolean +type AttachmentPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): TeamMembershipConnection! + """ + The issue attachment that was created. + """ + attachment: Attachment! - """Projects associated with the team.""" - projects( - """Filter returned projects.""" - filter: ProjectFilter + """ + Whether the operation was successful. + """ + success: Boolean! +} - """A cursor to be used with last for backward pagination.""" - before: String +type FrontAttachmentPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """A cursor to be used with first for forward pagination""" - after: String + """ + Whether the operation was successful. + """ + success: Boolean! +} - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int +type AttachmentSourcesPayload { + """ + A unique list of all source types used in this workspace + """ + sources: JSONObject! +} - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int +""" +A generic payload return from entity archive mutations. +""" +type AttachmentArchivePayload implements ArchivePayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + Whether the operation was successful. + """ + success: Boolean! - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): ProjectConnection! + """ + The archived/unarchived entity. Null if entity was deleted. + """ + entity: Attachment +} - """The states that define the workflow associated with the team.""" - states( - """Filter returned workflow states.""" - filter: WorkflowStateFilter +type AuditEntryEdge { + node: AuditEntry! - """A cursor to be used with last for backward pagination.""" - before: String + """ + Used in `before` and `after` args + """ + cursor: String! +} - """A cursor to be used with first for forward pagination""" - after: String +type AuditEntryConnection { + edges: [AuditEntryEdge!]! + nodes: [AuditEntry!]! + pageInfo: PageInfo! +} - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int +type AuditEntryType { + """ + The audit entry type. + """ + type: String! - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + Description of the audit entry type. + """ + description: String! +} - """Should archived resources be included (default: false)""" - includeArchived: Boolean +type AuthResolverResponse { + """ + User account ID. + """ + id: String! - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): WorkflowStateConnection! + """ + JWT token for authentication of the account. + """ + token: String - """Templates associated with the team.""" - templates( - """A cursor to be used with last for backward pagination.""" - before: String + """ + Email for the authenticated account. + """ + email: String - """A cursor to be used with first for forward pagination""" - after: String + """ + Should the signup flow allow access for the domain. + """ + allowDomainAccess: Boolean - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int + """ + Users belonging to this account. + """ + users: [AuthUser!]! - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + Organizations this account has access to, but is not yet a member. + """ + availableOrganizations: [AuthOrganization!] - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + List of organizations this user account is part of but are currently locked because of the current auth service. + """ + lockedOrganizations: [AuthOrganization!] - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): TemplateConnection! + """ + ID of the organization last accessed by the user. + """ + lastUsedOrganizationId: String +} - """Labels associated with the team.""" - labels( - """Filter returned issue labels.""" - filter: IssueLabelFilter +type AuthenticationSessionResponse { + id: String! - """A cursor to be used with last for backward pagination.""" - before: String + """ + Type of application used to authenticate. + """ + type: AuthenticationSessionType! - """A cursor to be used with first for forward pagination""" - after: String + """ + IP address. + """ + ip: String - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int + """ + Location country name. + """ + locationCountry: String - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + Location country code. + """ + locationCountryCode: String - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + Country codes of all seen locations. + """ + countryCodes: [String!]! - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): IssueLabelConnection! + """ + Location city name. + """ + locationCity: String - """Webhooks associated with the team.""" - webhooks( - """A cursor to be used with last for backward pagination.""" - before: String + """ + Session's user-agent. + """ + userAgent: String - """A cursor to be used with first for forward pagination""" - after: String + """ + When was the session last seen + """ + lastActiveAt: DateTime - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int + """ + Date when the session was created. + """ + createdAt: DateTime! - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + Date when the session was last updated. + """ + updatedAt: DateTime! - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + Human readable location + """ + location: String - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): WebhookConnection! + """ + Operating system used for the session + """ + operatingSystem: String - """Settings for all integrations associated with that team.""" - integrationsSettings: IntegrationsSettings -} + """ + Client used for the session + """ + client: String -type TeamEdge { - node: Team! + """ + Name of the session, derived from the client and operating system + """ + name: String! - """Used in `before` and `after` args""" - cursor: String! + """ + Identifies the session used to make the request. + """ + isCurrentSession: Boolean! } -type TeamConnection { - edges: [TeamEdge!]! - nodes: [Team!]! - pageInfo: PageInfo! +type CreateOrJoinOrganizationResponse { + organization: AuthOrganization! + user: AuthUser! } -"""A user account.""" -type UserAccount { - """The models identifier.""" - id: ID! - - """The time at which the model was created.""" - createdAt: DateTime! - - """The time at which the model was updated.""" - updatedAt: DateTime! - - """The time at which the model was archived.""" - archivedAt: DateTime +type EmailUserAccountAuthChallengeResponse { + """ + Whether the operation was successful. + """ + success: Boolean! - """The user's name.""" - name: String + """ + Supported challenge for this user account. Can be either verificationCode or password. + """ + authType: String! +} - """The user's email address.""" - email: String! +type SsoUrlFromEmailResponse { + """ + Whether the operation was successful. + """ + success: Boolean! - """The authentication service used to create the account.""" - service: String! + """ + SAML SSO sign-in URL. + """ + samlSsoUrl: String! +} - """Users belonging to the account.""" - users: [User!]! +type LogoutResponse { + """ + Whether the operation was successful. + """ + success: Boolean! } -"""A user that has access to the the resources of an organization.""" -type User implements Node { - """The unique identifier of the entity.""" +""" +A bot actor is an actor that is not a user, but an application or integration. +""" +type ActorBot { id: ID! - """The time at which the entity was created.""" - createdAt: DateTime! - """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The type of bot. """ - updatedAt: DateTime! + type: String! """ - The time at which the entity was archived. Null if the entity has not been archived. + The sub type of the bot. """ - archivedAt: DateTime + subType: String - """The user's full name.""" - name: String! - - """The user's display (nick) name. Unique within each organization.""" - displayName: String! + """ + The display name of the bot. + """ + name: String - """The user's email address.""" - email: String! + """ + The display name of the external user on behalf of which the bot acted. + """ + userDisplayName: String - """An URL to the user's avatar image.""" + """ + A url pointing to the avatar representing this bot. + """ avatarUrl: String +} - """Reason why is the account disabled.""" - disableReason: String - - """Unique hash for the user to be used in invite URLs.""" - inviteHash: String! - - """Hash for the user to be used in calendar URLs.""" - calendarHash: String - - """A short description of the user, either its title or bio.""" - description: String - - """The emoji to represent the user current status.""" - statusEmoji: String - - """The label of the user current status.""" - statusLabel: String - - """A date at which the user current status should be cleared.""" - statusUntilAt: DateTime - - """The local timezone of the user.""" - timezone: String - - """Organization the user belongs to.""" - organization: Organization! - +type CommentPayload { """ - The last time the user was seen online. If null, the user is currently online. + The identifier of the last sync operation. """ - lastSeen: DateTime + lastSyncId: Float! """ - Whether the user is a guest in the workspace and limited to accessing a subset of teams. + The comment that was created or updated. """ - guest: Boolean! - - """Whether the user account is active or disabled (suspended).""" - active: Boolean! - - """User's profile URL.""" - url: String! - - """Issues assigned to the user.""" - assignedIssues( - """Filter returned issues.""" - filter: IssueFilter - - """A cursor to be used with last for backward pagination.""" - before: String - - """A cursor to be used with first for forward pagination""" - after: String + comment: Comment! - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int + """ + Whether the operation was successful. + """ + success: Boolean! +} - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int +type ContactPayload { + """ + Whether the operation was successful. + """ + success: Boolean! +} - """Should archived resources be included (default: false)""" - includeArchived: Boolean +type CustomViewPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): IssueConnection! + """ + The custom view that was created or updated. + """ + customView: CustomView! - """Issues created by the user.""" - createdIssues( - """Filter returned issues.""" - filter: IssueFilter + """ + Whether the operation was successful. + """ + success: Boolean! +} - """A cursor to be used with last for backward pagination.""" - before: String +type CustomViewSuggestionPayload { + """ + The suggested view name. + """ + name: String - """A cursor to be used with first for forward pagination""" - after: String + """ + The suggested view description. + """ + description: String - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int + """ + The suggested view icon. + """ + icon: String +} - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int +type CustomViewHasSubscribersPayload { + """ + Whether the custom view has subscribers. + """ + hasSubscribers: Boolean! +} - """Should archived resources be included (default: false)""" - includeArchived: Boolean +type CyclePayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): IssueConnection! + """ + The Cycle that was created or updated. + """ + cycle: Cycle - """Number of issues created.""" - createdIssueCount: Int! + """ + Whether the operation was successful. + """ + success: Boolean! +} - """Teams the user is part of.""" - teams( - """Filter returned teams.""" - filter: TeamFilter +""" +A generic payload return from entity archive mutations. +""" +type CycleArchivePayload implements ArchivePayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """A cursor to be used with last for backward pagination.""" - before: String + """ + Whether the operation was successful. + """ + success: Boolean! - """A cursor to be used with first for forward pagination""" - after: String + """ + The archived/unarchived entity. Null if entity was deleted. + """ + entity: Cycle +} - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int +type DocumentContentHistoryType { + """ + The UUID of the document content history entry. + """ + id: String! - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + The date when the document content history entry was created. + """ + createdAt: DateTime! - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + The date when the document content history snapshot was taken. This can be different than createdAt since the content is captured from its state at the previously known updatedAt timestamp in the case of an update. On document create, these timestamps can be the same. + """ + contentDataSnapshotAt: DateTime! - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): TeamConnection! + """ + The document content as Prosemirror document. + """ + contentData: JSON! """ - Memberships associated with the user. For easier access of the same data, use `teams` query. + The ID of the author of the change. """ - teamMemberships( - """A cursor to be used with last for backward pagination.""" - before: String + actorIds: [String!] +} - """A cursor to be used with first for forward pagination""" - after: String +type DocumentContentHistoryPayload { + """ + The document content history entries. + """ + history: [DocumentContentHistoryType!] - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int + """ + Whether the operation was successful. + """ + success: Boolean! +} - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int +type DocumentPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + The document that was created or updated. + """ + document: Document! - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): TeamMembershipConnection! + """ + Whether the operation was successful. + """ + success: Boolean! +} - """Whether the user is the currently authenticated user.""" - isMe: Boolean! +type EmailSubscribePayload { + """ + [INTERNAL] Whether the operation was successful. + """ + success: Boolean! +} - """Whether the user is an organization administrator.""" - admin: Boolean! +type EmailUnsubscribePayload { + """ + Whether the operation was successful. + """ + success: Boolean! } -type UserEdge { - node: User! +type EmojiPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Used in `before` and `after` args""" - cursor: String! -} + """ + The emoji that was created. + """ + emoji: Emoji! -type UserConnection { - edges: [UserEdge!]! - nodes: [User!]! - pageInfo: PageInfo! + """ + Whether the operation was successful. + """ + success: Boolean! } -"""Join table between templates and integrations""" -type IntegrationTemplate implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! +type FavoritePayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The object that was added as a favorite. """ - updatedAt: DateTime! + favorite: Favorite! """ - The time at which the entity was archived. Null if the entity has not been archived. + Whether the operation was successful. """ - archivedAt: DateTime - - """The template that the integration is associated with.""" - template: Template! - - """The integration that the template is associated with.""" - integration: Integration! + success: Boolean! } -type IntegrationTemplateEdge { - node: IntegrationTemplate! - - """Used in `before` and `after` args""" - cursor: String! -} +type UploadFileHeader { + """ + Upload file header key. + """ + key: String! -type IntegrationTemplateConnection { - edges: [IntegrationTemplateEdge!]! - nodes: [IntegrationTemplate!]! - pageInfo: PageInfo! + """ + Upload file header value. + """ + value: String! } -"""A template object used for creating entities faster.""" -type Template implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! - +""" +Object representing Google Cloud upload policy, plus additional data. +""" +type UploadFile { """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The filename. """ - updatedAt: DateTime! + filename: String! """ - The time at which the entity was archived. Null if the entity has not been archived. + The content type. """ - archivedAt: DateTime - - """The entity type this template is for.""" - type: String! - - """The name of the template.""" - name: String! + contentType: String! - """Template description.""" - description: String + """ + The size of the uploaded file. + """ + size: Int! - """Template data.""" - templateData: JSON! + """ + The signed URL the for the uploaded file. (assigned automatically) + """ + uploadUrl: String! """ - The organization that the template is associated with. If null, the template is associated with a particular team. + The asset URL for the uploaded file. (assigned automatically) """ - organization: Organization + assetUrl: String! + metaData: JSONObject + headers: [UploadFileHeader!]! +} +type UploadPayload { """ - The team that the template is associated with. If null, the template is global to the workspace. + The identifier of the last sync operation. """ - team: Team + lastSyncId: Float! - """The user who created the template.""" - creator: User + """ + Object describing the file to be uploaded. + """ + uploadFile: UploadFile - """The user who last updated the template.""" - lastUpdatedBy: User + """ + Whether the operation was successful. + """ + success: Boolean! } -""" -The `JSON` scalar type represents arbitrary values as *stringified* JSON -""" -scalar JSON +type ImageUploadFromUrlPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! -type TemplateEdge { - node: Template! + """ + The URL containing the image. + """ + url: String - """Used in `before` and `after` args""" - cursor: String! + """ + Whether the operation was successful. + """ + success: Boolean! } -type TemplateConnection { - edges: [TemplateEdge!]! - nodes: [Template!]! - pageInfo: PageInfo! +type IntegrationRequestPayload { + """ + Whether the operation was successful. + """ + success: Boolean! } -"""The organization's SAML configuration""" -type SamlConfigurationPayload { - """Sign in endpoint URL for the identity provider.""" - ssoEndpoint: String - +type IntegrationPayload { """ - Binding method for authentication call. Can be either `post` (default) or `redirect`. + The identifier of the last sync operation. """ - ssoBinding: String + lastSyncId: Float! """ - The algorithm of the Signing Certificate. Can be one of `sha1`, `sha256` (default), or `sha512`. + The integration that was created or updated. """ - ssoSignAlgo: String - - """List of allowed email domains for SAML authentication.""" - allowedDomains: [String!] + integration: Integration - """The issuer's custom entity ID.""" - issuerEntityId: String + """ + Whether the operation was successful. + """ + success: Boolean! } -type SamlConfiguration { - """Sign in endpoint URL for the identity provider.""" - ssoEndpoint: String - +type GitHubCommitIntegrationPayload { """ - Binding method for authentication call. Can be either `post` (default) or `redirect`. + The identifier of the last sync operation. """ - ssoBinding: String + lastSyncId: Float! """ - The algorithm of the Signing Certificate. Can be one of `sha1`, `sha256` (default), or `sha512`. + The integration that was created or updated. """ - ssoSignAlgo: String - - """List of allowed email domains for SAML authentication.""" - allowedDomains: [String!] + integration: Integration - """The issuer's custom entity ID.""" - issuerEntityId: String + """ + Whether the operation was successful. + """ + success: Boolean! - """X.509 Signing Certificate in string form.""" - ssoSigningCert: String + """ + The webhook secret to provide to GitHub. + """ + webhookSecret: String! } -""" -An organization. Organizations are root-level objects that contain user accounts and teams. -""" -type Organization implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! - +type AsksChannelConnectPayload { """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The identifier of the last sync operation. """ - updatedAt: DateTime! + lastSyncId: Float! """ - The time at which the entity was archived. Null if the entity has not been archived. + The integration that was created or updated. """ - archivedAt: DateTime + integration: Integration - """The organization's name.""" - name: String! + """ + Whether the operation was successful. + """ + success: Boolean! - """The organization's unique URL key.""" - urlKey: String! + """ + The new Asks Slack channel mapping for the connected channel. + """ + mapping: SlackChannelNameMapping! +} - """The organization's logo URL.""" - logoUrl: String +type IntegrationsSettingsPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Rolling 30-day total upload volume for the organization, in megabytes.""" - periodUploadVolume: Float! + """ + The settings that were created or updated. + """ + integrationsSettings: IntegrationsSettings! """ - How git branches are formatted. If null, default formatting will be used. + Whether the operation was successful. """ - gitBranchFormat: String + success: Boolean! +} +type IntegrationTemplatePayload { """ - Whether the Git integration linkback messages should be sent to private repositories. + The identifier of the last sync operation. """ - gitLinkbackMessagesEnabled: Boolean! + lastSyncId: Float! """ - Whether the Git integration linkback messages should be sent to public repositories. + The IntegrationTemplate that was created or updated. """ - gitPublicLinkbackMessagesEnabled: Boolean! + integrationTemplate: IntegrationTemplate! - """Whether the organization is using a roadmap.""" - roadmapEnabled: Boolean! + """ + Whether the operation was successful. + """ + success: Boolean! +} - """The frequency at which to prompt for project updates.""" - projectUpdatesReminderFrequency: ProjectUpdateReminderFrequency! +type IssueImportPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """The day at which to prompt for project updates.""" - projectUpdateRemindersDay: Day! + """ + The import job that was created or updated. + """ + issueImport: IssueImport - """The hour at which to prompt for project updates.""" - projectUpdateRemindersHour: Float! + """ + Whether the operation was successful. + """ + success: Boolean! +} - """Whether SAML authentication is enabled for organization.""" - samlEnabled: Boolean! +type IssueImportDeletePayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Whether SCIM provisioning is enabled for organization.""" - scimEnabled: Boolean! + """ + The import job that was deleted. + """ + issueImport: IssueImport - """Allowed authentication providers, empty array means all are allowed""" - allowedAuthServices: [String!]! + """ + Whether the operation was successful. + """ + success: Boolean! +} - """The time at which deletion of the organization was requested.""" - deletionRequestedAt: DateTime +type IssueImportCheckPayload { + """ + Whether the operation was successful. + """ + success: Boolean! +} +""" +Relevant information for the GitHub repository. +""" +type GithubRepo { """ - Previously used URL keys for the organization (last 3 are kept and redirected). + The id of the GitHub repository. """ - previousUrlKeys: [String!]! + id: String! - """Users associated with the organization.""" - users( - """Should query return disabled/suspended users (default: false).""" - includeDisabled: Boolean + """ + The name of the GitHub repository. + """ + name: String! +} - """A cursor to be used with last for backward pagination.""" - before: String +""" +Relevant information for the GitHub organization. +""" +type GithubOrg { + """ + GitHub organization id. + """ + id: String! - """A cursor to be used with first for forward pagination""" - after: String + """ + The name of the GitHub organization. + """ + name: String! - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int + """ + The login for the GitHub organization. + """ + login: String! - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + Repositories that the organization owns. + """ + repositories: [GithubRepo!]! - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + Whether or not this org is the user's personal repositories. + """ + isPersonal: Boolean +} - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): UserConnection! +""" +GitHub OAuth token, plus information about the organizations the user is a member of. +""" +type GithubOAuthTokenPayload { + """ + The OAuth token if the operation to fetch it was successful. + """ + token: String - """Teams associated with the organization.""" - teams( - """Filter returned teams.""" - filter: TeamFilter + """ + A list of the GitHub organizations the user is a member of with attached repositories. + """ + organizations: [GithubOrg!] +} - """A cursor to be used with last for backward pagination.""" - before: String +type IssueLabelPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """A cursor to be used with first for forward pagination""" - after: String + """ + The label that was created or updated. + """ + issueLabel: IssueLabel! - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int + """ + Whether the operation was successful. + """ + success: Boolean! +} - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int +type IssueRelationPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + The issue relation that was created or updated. + """ + issueRelation: IssueRelation! - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): TeamConnection! + """ + Whether the operation was successful. + """ + success: Boolean! +} - """Milestones associated with the organization.""" - milestones( - """Filter returned projects.""" - filter: MilestoneFilter +type IssuePriorityValue { + """ + Priority's number value. + """ + priority: Int! - """A cursor to be used with last for backward pagination.""" - before: String + """ + Priority's label. + """ + label: String! +} - """A cursor to be used with first for forward pagination""" - after: String +type IssueFilterSuggestionPayload { + """ + The json filter that is suggested. + """ + filter: JSONObject +} - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int +""" +A generic payload return from entity archive mutations. +""" +type IssueArchivePayload implements ArchivePayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + Whether the operation was successful. + """ + success: Boolean! - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + The archived/unarchived entity. Null if entity was deleted. + """ + entity: Issue +} - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): MilestoneConnection! @deprecated(reason: "Milestones will be removed. Use roadmaps instead.") +type NotificationPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Integrations associated with the organization.""" - integrations( - """A cursor to be used with last for backward pagination.""" - before: String + """ + The notification that was created or updated. + """ + notification: Notification! - """A cursor to be used with first for forward pagination""" - after: String + """ + Whether the operation was successful. + """ + success: Boolean! +} - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int +type NotificationBatchActionPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + The notifications that were updated. + """ + notifications: [Notification!]! - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + Whether the operation was successful. + """ + success: Boolean! +} - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): IntegrationConnection! +""" +A generic payload return from entity archive mutations. +""" +type NotificationArchivePayload implements ArchivePayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """The organization's subscription to a paid plan.""" - subscription: Subscription + """ + Whether the operation was successful. + """ + success: Boolean! - """Number of active users in the organization.""" - userCount: Int! + """ + The archived/unarchived entity. Null if entity was deleted. + """ + entity: Notification +} - """Number of issues in the organization.""" - createdIssueCount: Int! +type NotificationEdge { + node: Notification! - """Templates associated with the organization.""" - templates( - """A cursor to be used with last for backward pagination.""" - before: String + """ + Used in `before` and `after` args + """ + cursor: String! +} - """A cursor to be used with first for forward pagination""" - after: String +type NotificationConnection { + edges: [NotificationEdge!]! + nodes: [Notification!]! + pageInfo: PageInfo! +} - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int +type NotificationSubscriptionPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + The notification subscription that was created or updated. + """ + notificationSubscription: NotificationSubscription! - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + Whether the operation was successful. + """ + success: Boolean! +} - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): TemplateConnection! +""" +[INTERNAL] Organization domain operation response. +""" +type OrganizationDomainPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Labels associated with the organization.""" - labels( - """Filter returned issue labels.""" - filter: IssueLabelFilter + """ + The organization domain that was created or updated. + """ + organizationDomain: OrganizationDomain! - """A cursor to be used with last for backward pagination.""" - before: String + """ + Whether the operation was successful. + """ + success: Boolean! +} - """A cursor to be used with first for forward pagination""" - after: String +""" +[INTERNAL] Organization domain operation response. +""" +type OrganizationDomainSimplePayload { + """ + Whether the operation was successful. + """ + success: Boolean! +} - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int +""" +[INTERNAL] Domain claim request response. +""" +type OrganizationDomainClaimPayload { + """ + String to put into DNS for verification. + """ + verificationString: String! +} - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int +type OrganizationInvitePayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + The organization invite that was created or updated. + """ + organizationInvite: OrganizationInvite! - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): IssueLabelConnection! + """ + Whether the operation was successful. + """ + success: Boolean! } -"""The frequency at which to send project update reminders.""" -enum ProjectUpdateReminderFrequency { - week - twoWeeks - never -} +type OrganizationInviteFullDetailsPayload { + """ + The status of the invite + """ + status: OrganizationInviteStatus! -"""The day of the week.""" -enum Day { - Sunday - Monday - Tuesday - Wednesday - Thursday - Friday - Saturday -} + """ + The name of the inviter + """ + inviter: String! -""" -Contains either the full serialized state of the application or delta packets that the requester can - apply to the local data set in order to be up-to-date. -""" -type SyncResponse { """ - The full state of the organization as a serialized JSON object. - Mutually exclusive with the delta property + The email of the invitee """ - state: String + email: String! """ - JSON serialized delta changes that the client can apply to its local state - in order to catch up with the state of the world. + What user role the invite should grant. """ - delta: String - - """The sync groups that the user is subscribed to.""" - subscribedSyncGroups: [String!]! - - """The last sync id covered by the response.""" - lastSyncId: Float! + role: UserRoleType! """ - The version of the remote database. Incremented by 1 for each migration run on the database. + When the invite was created. """ - databaseVersion: Float! -} - -"""OAuth2 client application""" -type OauthClient implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" createdAt: DateTime! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Name of the workspace the invite is for. """ - updatedAt: DateTime! + organizationName: String! """ - The time at which the entity was archived. Null if the entity has not been archived. + ID of the workspace the invite is for. """ - archivedAt: DateTime - - """OAuth application's client ID.""" - clientId: String! - - """OAuth application's client name.""" - name: String! - - """Information about the application.""" - description: String! - - """Name of the developer.""" - developer: String! - - """Url of the developer.""" - developerUrl: String! - - """Image of the application.""" - imageUrl: String! - - """OAuth application's client secret.""" - clientSecret: String! - - """List of allowed redirect URIs for the application.""" - redirectUris: [String!]! + organizationId: String! """ - Whether the OAuth application is publicly visible, or only visible to the creating workspace. + URL of the workspace logo the invite is for. """ - publicEnabled: Boolean! + organizationLogoUrl: String - """The resource types to request when creating new webhooks.""" - webhookResourceTypes: [String!]! + """ + Whether the invite has already been accepted. + """ + accepted: Boolean! - """Webhook URL""" - webhookUrl: String + """ + Whether the invite has expired. + """ + expired: Boolean! } -"""Issue attachment (e.g. support ticket, pull request).""" -type Attachment implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! +""" +The different statuses possible for an organization invite. +""" +enum OrganizationInviteStatus { + pending + accepted + expired +} +type OrganizationAcceptedOrExpiredInviteDetailsPayload { """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The status of the invite """ - updatedAt: DateTime! + status: OrganizationInviteStatus! +} +type OrganizationPayload { """ - The time at which the entity was archived. Null if the entity has not been archived. + The identifier of the last sync operation. """ - archivedAt: DateTime - - """Content for the title line in the Linear attachment widget.""" - title: String! - - """Content for the subtitle line in the Linear attachment widget.""" - subtitle: String - - """Location of the attachment which is also used as an identifier.""" - url: String! - - """The creator of the attachment.""" - creator: User - - """Custom metadata related to the attachment.""" - metadata: JSONObject! - - """Information about the source which created the attachment.""" - source: JSONObject + lastSyncId: Float! """ - An accessor helper to source.type, defines the source type of the attachment. + The organization that was created or updated. """ - sourceType: JSONObject + organization: Organization """ - Indicates if attachments for the same source application should be grouped in the Linear UI. + Whether the operation was successful. """ - groupBySource: Boolean! - - """The issue this attachment belongs to.""" - issue: Issue! + success: Boolean! } -type AttachmentEdge { - node: Attachment! - - """Used in `before` and `after` args""" - cursor: String! +type OrganizationDeletePayload { + """ + Whether the operation was successful. + """ + success: Boolean! } -type AttachmentConnection { - edges: [AttachmentEdge!]! - nodes: [Attachment!]! - pageInfo: PageInfo! +type OrganizationCancelDeletePayload { + """ + Whether the operation was successful. + """ + success: Boolean! } -"""Workspace audit log entry object.""" -type AuditEntry implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! - +type OrganizationStartPlusTrialPayload { """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Whether the operation was successful. """ - updatedAt: DateTime! + success: Boolean! +} +type OrganizationExistsPayload { """ - The time at which the entity was archived. Null if the entity has not been archived. + Whether the operation was successful. """ - archivedAt: DateTime - type: String! - - """The user that caused the audit entry to be created.""" - actor: User + success: Boolean! - """The ID of the user that caused the audit entry to be created.""" - actorId: String + """ + Whether the organization exists. + """ + exists: Boolean! +} - """IP from actor when entry was recorded.""" - ip: String +type ProjectLinkPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Country code of request resulting to audit entry.""" - countryCode: String + """ + The project that was created or updated. + """ + projectLink: ProjectLink! - """Additional metadata related to the audit entry.""" - metadata: JSONObject + """ + Whether the operation was successful. + """ + success: Boolean! } -type NotificationSubscriptionEdge { - node: NotificationSubscription! +type ProjectMilestonePayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Used in `before` and `after` args""" - cursor: String! -} + """ + The project milestone that was created or updated. + """ + projectMilestone: ProjectMilestone! -type NotificationSubscriptionConnection { - edges: [NotificationSubscriptionEdge!]! - nodes: [NotificationSubscription!]! - pageInfo: PageInfo! + """ + Whether the operation was successful. + """ + success: Boolean! } -"""A basic entity.""" -interface Entity implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! +type ProjectPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The project that was created or updated. """ - updatedAt: DateTime! + project: Project """ - The time at which the entity was archived. Null if the entity has not been archived. + Whether the operation was successful. """ - archivedAt: DateTime + success: Boolean! } -"""The type of a project notification subscription.""" -enum ProjectNotificationSubscriptionType { - importantOnly - custom - all +type ProjectFilterSuggestionPayload { + """ + The json filter that is suggested. + """ + filter: JSONObject } """ -Holds information about when a user has interacted with a project update. +A generic payload return from entity archive mutations. """ -type ProjectUpdateInteraction implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! - +type ProjectArchivePayload implements ArchivePayload { """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The identifier of the last sync operation. """ - updatedAt: DateTime! + lastSyncId: Float! """ - The time at which the entity was archived. Null if the entity has not been archived. + Whether the operation was successful. """ - archivedAt: DateTime - - """The user that has interacted with the project update.""" - user: User! - - """The project update that has been interacted with.""" - projectUpdate: ProjectUpdate! + success: Boolean! - """The time at which the user read the project update.""" - readAt: DateTime! + """ + The archived/unarchived entity. Null if entity was deleted. + """ + entity: Project } -type ProjectUpdateInteractionEdge { - node: ProjectUpdateInteraction! +type ProjectUpdateInteractionPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Used in `before` and `after` args""" - cursor: String! -} + """ + The project update interaction that was created or updated. + """ + projectUpdateInteraction: ProjectUpdateInteraction! -type ProjectUpdateInteractionConnection { - edges: [ProjectUpdateInteractionEdge!]! - nodes: [ProjectUpdateInteraction!]! - pageInfo: PageInfo! + """ + Whether the operation was successful. + """ + success: Boolean! } -"""A update associated with an project.""" -type ProjectUpdate implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! - +type ProjectUpdatePayload { """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The identifier of the last sync operation. """ - updatedAt: DateTime! + lastSyncId: Float! """ - The time at which the entity was archived. Null if the entity has not been archived. + The project update that was created or updated. """ - archivedAt: DateTime - - """The update content in markdown format.""" - body: String! - - """The project that the update is associated with.""" - project: Project! + projectUpdate: ProjectUpdate! - """The health of the project at the time of the update.""" - health: ProjectUpdateHealthType! + """ + Whether the operation was successful. + """ + success: Boolean! +} - """The user who wrote the update.""" - user: User! +type ProjectUpdateWithInteractionPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """The time the project update was edited.""" - editedAt: DateTime + """ + The project update that was created or updated. + """ + projectUpdate: ProjectUpdate! - """The URL to the project update.""" - url: String! -} + """ + Whether the operation was successful. + """ + success: Boolean! -"""The health type of a project when the update is created.""" -enum ProjectUpdateHealthType { - onTrack - atRisk - offTrack + """ + The project update that was created or updated. + """ + interaction: ProjectUpdateInteraction! } -type ProjectUpdateEdge { - node: ProjectUpdate! - - """Used in `before` and `after` args""" - cursor: String! -} +type ProjectUpdateReminderPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! -type ProjectUpdateConnection { - edges: [ProjectUpdateEdge!]! - nodes: [ProjectUpdate!]! - pageInfo: PageInfo! + """ + Whether the operation was successful. + """ + success: Boolean! } -"""A set of issues to be resolved in a specified amount of time.""" -type Cycle implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! +type PushSubscriptionPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The push subscription that was created or updated. """ - updatedAt: DateTime! + entity: PushSubscription! """ - The time at which the entity was archived. Null if the entity has not been archived. + Whether the operation was successful. """ - archivedAt: DateTime - - """The number of the cycle.""" - number: Float! - - """The custom name of the cycle.""" - name: String - - """The cycle's description.""" - description: String - - """The start time of the cycle.""" - startsAt: DateTime! + success: Boolean! +} - """The end time of the cycle.""" - endsAt: DateTime! +type PushSubscriptionTestPayload { + """ + Whether the operation was successful. + """ + success: Boolean! +} +type RateLimitPayload { """ - The completion time of the cycle. If null, the cycle hasn't been completed. + The identifier we rate limit on. """ - completedAt: DateTime + identifier: String """ - The time at which the cycle was automatically archived by the auto pruning process. + The kind of rate limit selected for this request. """ - autoArchivedAt: DateTime + kind: String! - """The total number of issues in the cycle after each day.""" - issueCountHistory: [Float!]! + """ + The state of the rate limit. + """ + limits: [RateLimitResultPayload!]! +} - """The number of completed issues in the cycle after each day.""" - completedIssueCountHistory: [Float!]! +type RateLimitResultPayload { + """ + What is being rate limited. + """ + type: String! - """The total number of estimation points after each day.""" - scopeHistory: [Float!]! + """ + The requested quantity for this type of limit. + """ + requestedAmount: Float! - """The number of completed estimation points after each day.""" - completedScopeHistory: [Float!]! + """ + The total allowed quantity for this type of limit. + """ + allowedAmount: Float! - """The number of in progress estimation points after each day.""" - inProgressScopeHistory: [Float!]! + """ + The period in which the rate limit is fully replenished in ms. + """ + period: Float! - """The team that the cycle is associated with.""" - team: Team! + """ + The remaining quantity for this type of limit after this request. + """ + remainingAmount: Float! - """Issues associated with the cycle.""" - issues( - """Filter returned issues.""" - filter: IssueFilter + """ + The timestamp after the rate limit is fully replenished as a UNIX timestamp. + """ + reset: Float! +} - """A cursor to be used with last for backward pagination.""" - before: String +type ReactionPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! + reaction: Reaction! + success: Boolean! +} - """A cursor to be used with first for forward pagination""" - after: String +type ReactionEdge { + node: Reaction! - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int + """ + Used in `before` and `after` args + """ + cursor: String! +} - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int +type ReactionConnection { + edges: [ReactionEdge!]! + nodes: [Reaction!]! + pageInfo: PageInfo! +} - """Should archived resources be included (default: false)""" - includeArchived: Boolean +type CreateCsvExportReportPayload { + """ + Whether the operation was successful. + """ + success: Boolean! +} - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): IssueConnection! +type RoadmapPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Issues that weren't completed when the cycle was closed.""" - uncompletedIssuesUponClose( - """Filter returned issues.""" - filter: IssueFilter + """ + The roadmap that was created or updated. + """ + roadmap: Roadmap! - """A cursor to be used with last for backward pagination.""" - before: String + """ + Whether the operation was successful. + """ + success: Boolean! +} - """A cursor to be used with first for forward pagination""" - after: String +""" +A generic payload return from entity archive mutations. +""" +type RoadmapArchivePayload implements ArchivePayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int + """ + Whether the operation was successful. + """ + success: Boolean! - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + The archived/unarchived entity. Null if entity was deleted. + """ + entity: Roadmap +} - """Should archived resources be included (default: false)""" - includeArchived: Boolean +type RoadmapToProjectPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): IssueConnection! + """ + The roadmapToProject that was created or updated. + """ + roadmapToProject: RoadmapToProject! """ - The overall progress of the cycle. This is the (completed estimate points + 0.25 * in progress estimate points) / total estimate points. + Whether the operation was successful. """ - progress: Float! + success: Boolean! } -type CycleEdge { - node: Cycle! +""" +Contains requested archived model objects. +""" +type ArchiveResponse { + """ + A JSON serialized collection of model objects loaded from the archive + """ + archive: String! - """Used in `before` and `after` args""" - cursor: String! -} + """ + The total number of entities in the archive. + """ + totalCount: Float! -type CycleConnection { - edges: [CycleEdge!]! - nodes: [Cycle!]! - pageInfo: PageInfo! + """ + The version of the remote database. Incremented by 1 for each migration run on the database. + """ + databaseVersion: Float! + + """ + Whether the dependencies for the model objects are included in the archive. + """ + includesDependencies: Boolean! } -"""An issue.""" -type Issue implements Node { - """The unique identifier of the entity.""" +type IssueSearchResult implements Node { + """ + The unique identifier of the entity. + """ id: ID! - """The time at which the entity was created.""" + """ + The time at which the entity was created. + """ createdAt: DateTime! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. """ updatedAt: DateTime! @@ -1832,37 +8763,62 @@ type Issue implements Node { """ archivedAt: DateTime - """The issue's unique number.""" + """ + The issue's unique number. + """ number: Float! - """The issue's title.""" + """ + The issue's title. + """ title: String! - """The issue's description in markdown format.""" - description: String - - """The priority of the issue.""" + """ + The priority of the issue. 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. + """ priority: Float! - """The estimate of the complexity of the issue..""" + """ + The estimate of the complexity of the issue.. + """ estimate: Float - """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 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 order of the item in relation to other items in the organization.""" + """ + The order of the item in relation to other items in the organization. + """ sortOrder: Float! - """The time at which the issue was moved into started state.""" + """ + The time at which the issue was moved into started state. + """ startedAt: DateTime - """The time at which the issue was moved into completed state.""" + """ + The time at which the issue was moved into completed state. + """ completedAt: DateTime - """The time at which the issue left triage.""" + """ + The time at which the issue entered triage. + """ + startedTriageAt: DateTime + + """ + The time at which the issue left triage. + """ triagedAt: DateTime - """The time at which the issue was moved into canceled state.""" + """ + The time at which the issue was moved into canceled state. + """ canceledAt: DateTime """ @@ -1875,60 +8831,114 @@ type Issue implements Node { """ autoArchivedAt: DateTime - """The date at which the issue is due.""" + """ + The date at which the issue is due. + """ dueDate: TimelessDate - """A flag that indicates whether the issue is in the trash bin.""" + """ + [Internal] The time at which the issue's SLA began. + """ + slaStartedAt: DateTime + + """ + [Internal] The time at which the issue's SLA will breach. + """ + slaBreachesAt: DateTime + + """ + A flag that indicates whether the issue is in the trash bin. + """ trashed: Boolean - """The time until an issue will be snoozed in Triage view.""" + """ + The time until an issue will be snoozed in Triage view. + """ snoozedUntilAt: DateTime - """The team that the issue is associated with.""" + """ + The team that the issue is associated with. + """ team: Team! - """The cycle that the issue is associated with.""" + """ + The cycle that the issue is associated with. + """ cycle: Cycle - """The project that the issue is associated with.""" + """ + The project that the issue is associated with. + """ project: Project - """Previous identifiers of the issue if it has been moved between teams.""" + """ + The projectMilestone that the issue is associated with. + """ + projectMilestone: ProjectMilestone + + """ + The last template that was applied to this issue. + """ + lastAppliedTemplate: Template + + """ + Previous identifiers of the issue if it has been moved between teams. + """ previousIdentifiers: [String!]! - """The user who created the issue.""" + """ + The user who created the issue. + """ creator: User - """The user to whom the issue is assigned to.""" + """ + [ALPHA] The external user who created the issue. + """ + externalUserCreator: ExternalUser + + """ + The user to whom the issue is assigned to. + """ assignee: User - """The user who snoozed the issue.""" + """ + The user who snoozed the issue. + """ snoozedBy: User - """The workflow state that the issue is associated with.""" + """ + The workflow state that the issue is associated with. + """ state: WorkflowState! - """The parent of the issue.""" - parent: Issue - """ The order of the item in the sub-issue list. Only set if the issue has a parent. """ subIssueSortOrder: Float - """Label for the priority.""" + """ + Label for the priority. + """ priorityLabel: String! - """[Internal] The issue's description as a Prosemirror document.""" - descriptionData: JSON + """ + The users favorite associated with this issue. + """ + favorite: Favorite - """Issue's human readable identifier (e.g. ENG-123).""" + """ + Issue's human readable identifier (e.g. ENG-123). + """ identifier: String! - """Issue URL.""" + """ + Issue URL. + """ url: String! - """Suggested branch name for the issue.""" + """ + Suggested branch name for the issue. + """ branchName: String! """ @@ -1936,18 +8946,28 @@ type Issue implements Node { """ customerTicketCount: Int! - """Users who are subscribed to the issue.""" + """ + Users who are subscribed to the issue. + """ subscribers( - """Filter returned subscribers.""" + """ + Filter returned subscribers. + """ filter: UserFilter - """Should query return disabled/suspended users (default: false).""" + """ + Should query return disabled/suspended users (default: false). + """ includeDisabled: Boolean - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -1960,7 +8980,9 @@ type Issue implements Node { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ @@ -1969,15 +8991,28 @@ type Issue implements Node { orderBy: PaginationOrderBy ): UserConnection! - """Children of the issue.""" + """ + The parent of the issue. + """ + parent: Issue + + """ + Children of the issue. + """ children( - """Filter returned issues.""" + """ + Filter returned issues. + """ filter: IssueFilter - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -1990,7 +9025,9 @@ type Issue implements Node { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ @@ -1999,15 +9036,23 @@ type Issue implements Node { orderBy: PaginationOrderBy ): IssueConnection! - """Comments associated with the issue.""" + """ + Comments associated with the issue. + """ comments( - """Filter returned comments.""" + """ + Filter returned comments. + """ filter: CommentFilter - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -2020,7 +9065,9 @@ type Issue implements Node { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ @@ -2029,12 +9076,18 @@ type Issue implements Node { orderBy: PaginationOrderBy ): CommentConnection! - """History entries associated with the issue.""" + """ + History entries associated with the issue. + """ history( - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -2047,7 +9100,9 @@ type Issue implements Node { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ @@ -2056,42 +9111,23 @@ type Issue implements Node { orderBy: PaginationOrderBy ): IssueHistoryConnection! - """Labels associated with this issue.""" + """ + Labels associated with this issue. + """ labels( - """Filter returned issue labels.""" - filter: IssueLabelFilter - - """A cursor to be used with last for backward pagination.""" - before: String - - """A cursor to be used with first for forward pagination""" - after: String - """ - The number of items to forward paginate (used with after). Defaults to 50. + Filter returned issue labels. """ - first: Int + filter: IssueLabelFilter """ - The number of items to backward paginate (used with before). Defaults to 50. + A cursor to be used with last for backward pagination. """ - last: Int - - """Should archived resources be included (default: false)""" - includeArchived: Boolean + before: String """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + A cursor to be used with first for forward pagination """ - orderBy: PaginationOrderBy - ): IssueLabelConnection! - - """[DEPRECATED] Integration resources for this issue.""" - integrationResources( - """A cursor to be used with last for backward pagination.""" - before: String - - """A cursor to be used with first for forward pagination""" after: String """ @@ -2104,21 +9140,29 @@ type Issue implements Node { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): IntegrationResourceConnection! @deprecated(reason: "This field will soon be deprecated, please use `attachments` instead") + ): IssueLabelConnection! - """Relations associated with this issue.""" + """ + Relations associated with this issue. + """ relations( - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -2131,7 +9175,9 @@ type Issue implements Node { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ @@ -2140,12 +9186,18 @@ type Issue implements Node { orderBy: PaginationOrderBy ): IssueRelationConnection! - """Inverse relations associated with this issue.""" + """ + Inverse relations associated with this issue. + """ inverseRelations( - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -2158,7 +9210,9 @@ type Issue implements Node { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ @@ -2167,15 +9221,23 @@ type Issue implements Node { orderBy: PaginationOrderBy ): IssueRelationConnection! - """Attachments associated with the issue.""" + """ + Attachments associated with the issue. + """ attachments( - """Filter returned attachments.""" + """ + Filter returned attachments. + """ filter: AttachmentFilter - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -2188,7 +9250,9 @@ type Issue implements Node { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ @@ -2196,37 +9260,38 @@ type Issue implements Node { """ orderBy: PaginationOrderBy ): AttachmentConnection! -} - -""" -Represents a date in ISO 8601 format. Accepts shortcuts like `2021` to represent midnight Fri Jan 01 2021. Also accepts ISO 8601 durations strings which are added to the current date to create the represented date (e.g '-P2W1D' represents the date that was two weeks and 1 day ago) -""" -scalar TimelessDate -type IssueEdge { - node: Issue! + """ + The issue's description in markdown format. + """ + description: String - """Used in `before` and `after` args""" - cursor: String! -} + """ + [Internal] The issue's description as a Prosemirror document. + """ + descriptionData: JSON @deprecated(reason: "Use description instead.") -type IssueConnection { - edges: [IssueEdge!]! - nodes: [Issue!]! - pageInfo: PageInfo! + """ + Metadata related to search result + """ + metadata: JSONObject! } -"""An external link for a project.""" -type ProjectLink implements Node { - """The unique identifier of the entity.""" +type DocumentSearchResult implements Node { + """ + The unique identifier of the entity. + """ id: ID! - """The time at which the entity was created.""" + """ + The time at which the entity was created. + """ createdAt: DateTime! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. """ updatedAt: DateTime! @@ -2235,85 +9300,77 @@ type ProjectLink implements Node { """ archivedAt: DateTime - """The link's URL.""" - url: String! - - """The link's label.""" - label: String! - - """The user who created the link.""" - creator: User! - - """The project that the link is associated with.""" - project: Project! -} - -type ProjectLinkEdge { - node: ProjectLink! - - """Used in `before` and `after` args""" - cursor: String! -} - -type ProjectLinkConnection { - edges: [ProjectLinkEdge!]! - nodes: [ProjectLink!]! - pageInfo: PageInfo! -} + """ + The document title. + """ + title: String! -"""Join table between projects and roadmaps""" -type RoadmapToProject implements Node { - """The unique identifier of the entity.""" - id: ID! + """ + The icon of the document. + """ + icon: String - """The time at which the entity was created.""" - createdAt: DateTime! + """ + The color of the icon. + """ + color: String """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The user who created the document. """ - updatedAt: DateTime! + creator: User! """ - The time at which the entity was archived. Null if the entity has not been archived. + The user who last updated the document. """ - archivedAt: DateTime + updatedBy: User! - """The project that the roadmap is associated with.""" + """ + The project that the document is associated with. + """ project: Project! - """The roadmap that the project is associated with.""" - roadmap: Roadmap! + """ + The document's unique URL slug. + """ + slugId: String! - """The sort order of the project within the roadmap.""" - sortOrder: String! -} + """ + The last template that was applied to this document. + """ + lastAppliedTemplate: Template -type RoadmapToProjectEdge { - node: RoadmapToProject! + """ + The documents content in markdown format. + """ + content: String - """Used in `before` and `after` args""" - cursor: String! -} + """ + The documents content as a Prosemirror document. + """ + contentData: JSON @deprecated(reason: "Use content instead.") -type RoadmapToProjectConnection { - edges: [RoadmapToProjectEdge!]! - nodes: [RoadmapToProject!]! - pageInfo: PageInfo! + """ + Metadata related to search result + """ + metadata: JSONObject! } -"""A project.""" -type Project implements Node { - """The unique identifier of the entity.""" +type ProjectSearchResult implements Node { + """ + The unique identifier of the entity. + """ id: ID! - """The time at which the entity was created.""" + """ + The time at which the entity was created. + """ createdAt: DateTime! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. """ updatedAt: DateTime! @@ -2322,52 +9379,74 @@ type Project implements Node { """ archivedAt: DateTime - """The project's name.""" + """ + The project's name. + """ name: String! - """The project's description.""" + """ + The project's description. + """ description: String! - """The project's unique URL slug.""" + """ + The project's unique URL slug. + """ slugId: String! - """The icon of the project.""" + """ + The icon of the project. + """ icon: String - """The project's color.""" + """ + The project's color. + """ color: String! - """The type of the state.""" + """ + The type of the state. + """ state: String! - """The user who created the project.""" + """ + The user who created the project. + """ creator: User! - """The project lead.""" + """ + The project lead. + """ lead: User - """The milestone that this project is associated with.""" - milestone: Milestone @deprecated(reason: "Milestones will be removed. Use roadmaps instead.") - - """The initiative that this project is associated with.""" - initiative: Initiative - - """The time until which project update reminders are paused.""" + """ + The time until which project update reminders are paused. + """ projectUpdateRemindersPausedUntilAt: DateTime - """[Internal] The estimated start date of the project.""" + """ + The estimated start date of the project. + """ startDate: TimelessDate - """The estimated completion date of the project.""" + """ + The estimated completion date of the project. + """ targetDate: TimelessDate - """The time at which the project was moved into started state.""" + """ + The time at which the project was moved into started state. + """ startedAt: DateTime - """The time at which the project was moved into completed state.""" + """ + The time at which the project was moved into completed state. + """ completedAt: DateTime - """The time at which the project was moved into canceled state.""" + """ + The time at which the project was moved into canceled state. + """ canceledAt: DateTime """ @@ -2375,45 +9454,88 @@ type Project implements Node { """ autoArchivedAt: DateTime - """The sort order for the project within its milestone/initiative.""" + """ + A flag that indicates whether the project is in the trash bin. + """ + trashed: Boolean + + """ + The sort order for the project within the organization. + """ sortOrder: Float! - """The total number of issues in the project after each week.""" + """ + The project was created based on this issue. + """ + convertedFromIssue: Issue + + """ + The last template that was applied to this project. + """ + lastAppliedTemplate: Template + + """ + The total number of issues in the project after each week. + """ issueCountHistory: [Float!]! - """The number of completed issues in the project after each week.""" + """ + The number of completed issues in the project after each week. + """ completedIssueCountHistory: [Float!]! - """The total number of estimation points after each week.""" + """ + The total number of estimation points after each week. + """ scopeHistory: [Float!]! - """The number of completed estimation points after each week.""" + """ + The number of completed estimation points after each week. + """ completedScopeHistory: [Float!]! - """The number of in progress estimation points after each week.""" + """ + The number of in progress estimation points after each week. + """ inProgressScopeHistory: [Float!]! - """Whether to send new issue notifications to Slack.""" + """ + Whether to send new issue notifications to Slack. + """ slackNewIssue: Boolean! - """Whether to send new issue comment notifications to Slack.""" + """ + Whether to send new issue comment notifications to Slack. + """ slackIssueComments: Boolean! - """Whether to send new issue status updates to Slack.""" + """ + Whether to send new issue status updates to Slack. + """ slackIssueStatuses: Boolean! - """Project URL.""" + """ + Project URL. + """ url: String! - """Teams associated with this project.""" + """ + Teams associated with this project. + """ teams( - """Filter returned teams.""" + """ + Filter returned teams. + """ filter: TeamFilter - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -2426,7 +9548,9 @@ type Project implements Node { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ @@ -2435,18 +9559,28 @@ type Project implements Node { orderBy: PaginationOrderBy ): TeamConnection! - """Users that are members of the project.""" + """ + Users that are members of the project. + """ members( - """Filter returned users.""" + """ + Filter returned users. + """ filter: UserFilter - """Should query return disabled/suspended users (default: false).""" + """ + Should query return disabled/suspended users (default: false). + """ includeDisabled: Boolean - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -2459,7 +9593,9 @@ type Project implements Node { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ @@ -2468,12 +9604,18 @@ type Project implements Node { orderBy: PaginationOrderBy ): UserConnection! - """Project updates associated with the project.""" + """ + Project updates associated with the project. + """ projectUpdates( - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -2486,7 +9628,9 @@ type Project implements Node { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ @@ -2495,12 +9639,18 @@ type Project implements Node { orderBy: PaginationOrderBy ): ProjectUpdateConnection! - """Documents associated with the project.""" + """ + Documents associated with the project. + """ documents( - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -2513,7 +9663,9 @@ type Project implements Node { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ @@ -2522,15 +9674,58 @@ type Project implements Node { orderBy: PaginationOrderBy ): DocumentConnection! - """Issues associated with the project.""" + """ + Milestones associated with the project. + """ + projectMilestones( + """ + A cursor to be used with last for backward pagination. + """ + before: String + + """ + A cursor to be used with first for forward pagination + """ + after: String + + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): ProjectMilestoneConnection! + + """ + Issues associated with the project. + """ issues( - """Filter returned issues.""" + """ + Filter returned issues. + """ filter: IssueFilter - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -2543,7 +9738,9 @@ type Project implements Node { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ @@ -2552,12 +9749,18 @@ type Project implements Node { orderBy: PaginationOrderBy ): IssueConnection! - """Links associated with the project.""" + """ + Links associated with the project. + """ links( - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -2570,7 +9773,9 @@ type Project implements Node { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ @@ -2584,318 +9789,342 @@ type Project implements Node { """ progress: Float! - """Settings for all integrations associated with that project.""" + """ + The overall scope (total estimate points) of the project. + """ + scope: Float! + + """ + Settings for all integrations associated with that project. + """ integrationsSettings: IntegrationsSettings + + """ + The project's content in markdown format. + """ + content: String + + """ + Metadata related to search result + """ + metadata: JSONObject! } -type ProjectEdge { - node: Project! +type IssueSearchResultEdge { + node: IssueSearchResult! - """Used in `before` and `after` args""" + """ + Used in `before` and `after` args + """ cursor: String! } -type ProjectConnection { - edges: [ProjectEdge!]! - nodes: [Project!]! +type IssueSearchResultConnection { + edges: [IssueSearchResultEdge!]! + nodes: [IssueSearchResult!]! pageInfo: PageInfo! } -"""A reaction associated with a comment or a project update.""" -type Reaction implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! +type IssueSearchPayload { + edges: [IssueSearchResultEdge!]! + nodes: [IssueSearchResult!]! + pageInfo: PageInfo! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Archived entities matching the search term along with all their dependencies. """ - updatedAt: DateTime! + archivePayload: ArchiveResponse! """ - The time at which the entity was archived. Null if the entity has not been archived. + Total number of results for query without filters applied. """ - archivedAt: DateTime + totalCount: Float! +} - """Name of the reaction's emoji.""" - emoji: String! +type DocumentSearchResultEdge { + node: DocumentSearchResult! - """The user who reacted.""" - user: User! + """ + Used in `before` and `after` args + """ + cursor: String! } -"""A comment associated with an issue.""" -type Comment implements Node { - """The unique identifier of the entity.""" - id: ID! +type DocumentSearchResultConnection { + edges: [DocumentSearchResultEdge!]! + nodes: [DocumentSearchResult!]! + pageInfo: PageInfo! +} - """The time at which the entity was created.""" - createdAt: DateTime! +type DocumentSearchPayload { + edges: [DocumentSearchResultEdge!]! + nodes: [DocumentSearchResult!]! + pageInfo: PageInfo! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Archived entities matching the search term along with all their dependencies. """ - updatedAt: DateTime! + archivePayload: ArchiveResponse! """ - The time at which the entity was archived. Null if the entity has not been archived. + Total number of results for query without filters applied. """ - archivedAt: DateTime - - """The comment content in markdown format.""" - body: String! - - """The issue that the comment is associated with.""" - issue: Issue! - - """The parent of the comment.""" - parent: Comment - - """The user who wrote the comment.""" - user: User - - """The time user edited the comment.""" - editedAt: DateTime - - """The comment content as a Prosemirror document.""" - bodyData: String! - - """Emoji reaction summary, grouped by emoji type""" - reactionData: JSONObject! - - """Comment's URL.""" - url: String! - - """The children of the comment.""" - children( - """Filter returned comments.""" - filter: CommentFilter - - """A cursor to be used with last for backward pagination.""" - before: String - - """A cursor to be used with first for forward pagination""" - after: String - - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int - - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int - - """Should archived resources be included (default: false)""" - includeArchived: Boolean - - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): CommentConnection! + totalCount: Float! } -type CommentEdge { - node: Comment! +type ProjectSearchResultEdge { + node: ProjectSearchResult! - """Used in `before` and `after` args""" + """ + Used in `before` and `after` args + """ cursor: String! } -type CommentConnection { - edges: [CommentEdge!]! - nodes: [Comment!]! +type ProjectSearchResultConnection { + edges: [ProjectSearchResultEdge!]! + nodes: [ProjectSearchResult!]! pageInfo: PageInfo! } -"""A custom view that has been saved by a user.""" -type CustomView implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! +type ProjectSearchPayload { + edges: [ProjectSearchResultEdge!]! + nodes: [ProjectSearchResult!]! + pageInfo: PageInfo! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Archived entities matching the search term along with all their dependencies. """ - updatedAt: DateTime! + archivePayload: ArchiveResponse! """ - The time at which the entity was archived. Null if the entity has not been archived. + Total number of results for query without filters applied. """ - archivedAt: DateTime - - """The name of the custom view.""" - name: String! + totalCount: Float! +} - """The description of the custom view.""" - description: String +type TeamMembershipPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """The icon of the custom view.""" - icon: String + """ + The team membership that was created or updated. + """ + teamMembership: TeamMembership - """The color of the icon of the custom view.""" - color: String + """ + Whether the operation was successful. + """ + success: Boolean! +} - """The organization of the custom view.""" - organization: Organization! +type TeamPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """The team associated with the custom view.""" + """ + The team that was created or updated. + """ team: Team - """The user who created the custom view.""" - creator: User! + """ + Whether the operation was successful. + """ + success: Boolean! +} - """The filters applied to issues in the custom view.""" - filters: JSONObject! @deprecated(reason: "Will be replaced by `filterData` in a future update") +type TemplatePayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """The filter applied to issues in the custom view.""" - filterData: JSONObject! + """ + The template that was created or updated. + """ + template: Template! - """Whether the custom view is shared with everyone in the organization.""" - shared: Boolean! + """ + Whether the operation was successful. + """ + success: Boolean! } -type CustomViewEdge { - node: CustomView! +type UserPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Used in `before` and `after` args""" - cursor: String! + """ + The user that was created or updated. + """ + user: User + + """ + Whether the operation was successful. + """ + success: Boolean! } -type CustomViewConnection { - edges: [CustomViewEdge!]! - nodes: [CustomView!]! - pageInfo: PageInfo! +type UserAdminPayload { + """ + Whether the operation was successful. + """ + success: Boolean! } -"""A document for a project.""" -type Document implements Node { - """The unique identifier of the entity.""" - id: ID! +type UserSettingsPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """The time at which the entity was created.""" - createdAt: DateTime! + """ + The user's settings. + """ + userSettings: UserSettings! + + """ + Whether the operation was successful. + """ + success: Boolean! +} +type UserSettingsFlagPayload { """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The identifier of the last sync operation. """ - updatedAt: DateTime! + lastSyncId: Float! """ - The time at which the entity was archived. Null if the entity has not been archived. + The flag key which was updated. """ - archivedAt: DateTime - - """The document title.""" - title: String! - - """The document content in markdown format.""" - content: String - - """The document content as JSON.""" - contentData: JSONObject - - """The icon of the document.""" - icon: String - - """The color of the icon.""" - color: String - - """The user who created the document.""" - creator: User! - - """The user who last updated the document.""" - updatedBy: User! + flag: String! - """The project that the document is associated with.""" - project: Project! + """ + The flag value after update. + """ + value: Int! - """The document's unique URL slug.""" - slugId: String! + """ + Whether the operation was successful. + """ + success: Boolean! } -type DocumentEdge { - node: Document! - - """Used in `before` and `after` args""" - cursor: String! -} +type UserSettingsFlagsResetPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! -type DocumentConnection { - edges: [DocumentEdge!]! - nodes: [Document!]! - pageInfo: PageInfo! + """ + Whether the operation was successful. + """ + success: Boolean! } -"""A custom emoji.""" -type Emoji implements Node { - """The unique identifier of the entity.""" - id: ID! +type ViewPreferencesPayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """The time at which the entity was created.""" - createdAt: DateTime! + """ + The view preferences entity being mutated. + """ + viewPreferences: ViewPreferences! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Whether the operation was successful. """ - updatedAt: DateTime! + success: Boolean! +} +type WebhookPayload { """ - The time at which the entity was archived. Null if the entity has not been archived. + The identifier of the last sync operation. """ - archivedAt: DateTime + lastSyncId: Float! - """The emoji's name.""" - name: String! + """ + The webhook entity being mutated. + """ + webhook: Webhook! - """The emoji image URL.""" - url: String! + """ + Whether the operation was successful. + """ + success: Boolean! +} - """The source of the emoji.""" - source: String! +type WorkflowStatePayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """The user who created the emoji.""" - creator: User! + """ + The state that was created or updated. + """ + workflowState: WorkflowState! - """The organization that the emoji belongs to.""" - organization: Organization! + """ + Whether the operation was successful. + """ + success: Boolean! } -type EmojiEdge { - node: Emoji! +""" +A generic payload return from entity archive mutations. +""" +type WorkflowStateArchivePayload implements ArchivePayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Used in `before` and `after` args""" - cursor: String! + """ + Whether the operation was successful. + """ + success: Boolean! + + """ + The archived/unarchived entity. Null if entity was deleted. + """ + entity: WorkflowState } -type EmojiConnection { - edges: [EmojiEdge!]! - nodes: [Emoji!]! - pageInfo: PageInfo! +interface Node { + """ + The unique identifier of the entity. + """ + id: ID! } -"""User favorites presented in the sidebar.""" -type Favorite implements Node { - """The unique identifier of the entity.""" +""" +A notification sent to a user. +""" +interface Notification implements Entity & Node { + """ + The unique identifier of the entity. + """ id: ID! - """The time at which the entity was created.""" + """ + The time at which the entity was created. + """ createdAt: DateTime! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. """ updatedAt: DateTime! @@ -2904,103 +10133,71 @@ type Favorite implements Node { """ archivedAt: DateTime - """The type of the favorite.""" + """ + Notification type + """ type: String! - """The parent folder of the favorite.""" - parent: Favorite - - """The name of the folder. Only applies to favorites of type folder.""" - folderName: String - - """The favorited issue.""" - issue: Issue - - """The favorited project.""" - project: Project - - """The favorited team of the project.""" - projectTeam: Team - - """The favorited cycle.""" - cycle: Cycle - - """The favorited custom view.""" - customView: CustomView - - """The team of the favorited predefiend view. """ - predefinedViewTeam: Team - - """The type of favorited predefiend view.""" - predefinedViewType: String - - """The favorited document.""" - document: Document - - """The favorited roadmap.""" - roadmap: Roadmap + """ + The user that caused the notification. + """ + actor: User - """The favorited label.""" - label: IssueLabel + """ + The external user that caused the notification. + """ + externalUserActor: ExternalUser - """The owner of the favorite.""" + """ + The user that received the notification. + """ user: User! - """The order of the item in the favorites list.""" - sortOrder: Float! - - """Children of the favorite. Only applies to favorites of type folder.""" - children( - """A cursor to be used with last for backward pagination.""" - before: String - - """A cursor to be used with first for forward pagination""" - after: String - - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int - - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int - - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + The time at when the user marked the notification as read. Null, if the the user hasn't read the notification + """ + readAt: DateTime - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): FavoriteConnection! -} + """ + The time at when an email reminder for this notification was sent to the user. Null, if no email + reminder has been sent. + """ + emailedAt: DateTime -type FavoriteEdge { - node: Favorite! + """ + The time until a notification will be snoozed. After that it will appear in the inbox again. + """ + snoozedUntilAt: DateTime - """Used in `before` and `after` args""" - cursor: String! -} + """ + The time at which a notification was unsnoozed.. + """ + unsnoozedAt: DateTime -type FavoriteConnection { - edges: [FavoriteEdge!]! - nodes: [Favorite!]! - pageInfo: PageInfo! + """ + The bot that caused the notification. + """ + botActor: ActorBot } -"""A initiative that contains projects.""" -type Initiative implements Node { - """The unique identifier of the entity.""" +""" +Notification subscriptions for models. +""" +interface NotificationSubscription implements Entity & Node { + """ + The unique identifier of the entity. + """ id: ID! - """The time at which the entity was created.""" + """ + The time at which the entity was created. + """ createdAt: DateTime! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. """ updatedAt: DateTime! @@ -3009,148 +10206,124 @@ type Initiative implements Node { """ archivedAt: DateTime - """The name of the initiative.""" - name: String! - - """The organization that the initiative belongs to.""" - organization: Organization! - - """The sort order for the initiative.""" - sortOrder: Float! - - """The initiative's description.""" - description: String - - """The estimated completion date of the initiative.""" - targetDate: TimelessDate - - """Projects associated with the initiative.""" - projects( - """Filter returned projects.""" - filter: ProjectFilter - - """A cursor to be used with last for backward pagination.""" - before: String - - """A cursor to be used with first for forward pagination""" - after: String - - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int - - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int - - """Should archived resources be included (default: false)""" - includeArchived: Boolean - - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): ProjectConnection! -} - -type InitiativeEdge { - node: Initiative! - - """Used in `before` and `after` args""" - cursor: String! -} - -type InitiativeConnection { - edges: [InitiativeEdge!]! - nodes: [Initiative!]! - pageInfo: PageInfo! -} + """ + The user that subscribed to receive notifications. + """ + subscriber: User! -"""A roadmap for projects.""" -type Roadmap implements Node { - """The unique identifier of the entity.""" - id: ID! + """ + The contextual custom view associated with the notification subscription. + """ + customView: CustomView - """The time at which the entity was created.""" - createdAt: DateTime! + """ + The contextual cycle view associated with the notification subscription. + """ + cycle: Cycle """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The contextual label view associated with the notification subscription. """ - updatedAt: DateTime! + label: IssueLabel """ - The time at which the entity was archived. Null if the entity has not been archived. + The contextual project view associated with the notification subscription. """ - archivedAt: DateTime + project: Project - """The name of the roadmap.""" - name: String! + """ + The team associated with the notification subscription. + """ + team: Team - """The description of the roadmap.""" - description: String + """ + The user view associated with the notification subscription. + """ + user: User - """The organization of the roadmap.""" - organization: Organization! + """ + The type of view to which the notification subscription context is associated with. + """ + contextViewType: ContextViewType - """The user who created the roadmap.""" - creator: User! + """ + The type of user view to which the notification subscription context is associated with. + """ + userContextViewType: UserContextViewType - """The user who owns the roadmap.""" - owner: User! + """ + Whether the subscription is active or not + """ + active: Boolean! +} - """The roadmap's unique URL slug.""" - slugId: String! +""" +A generic payload return from entity archive or deletion mutations. +""" +interface ArchivePayload { + """ + The identifier of the last sync operation. + """ + lastSyncId: Float! - """Projects associated with the roadmap.""" - projects( - """Filter returned projects.""" - filter: ProjectFilter + """ + Whether the operation was successful. + """ + success: Boolean! +} - """A cursor to be used with last for backward pagination.""" - before: String +input SlackAsksTeamSettingsInput { + """ + The Linear team ID. + """ + id: String! - """A cursor to be used with first for forward pagination""" - after: String + """ + Whether the default Asks template is enabled in the given channel for this team + """ + hasDefaultAsk: Boolean! +} - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int +input SlackChannelNameMappingInput { + """ + The Slack channel ID. + """ + id: String! - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + The Slack channel name. + """ + name: String! - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + Whether or not the Slack channel is private + """ + isPrivate: Boolean - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): ProjectConnection! -} + """ + Which teams are connected to the channel and settings for those teams + """ + teams: [SlackAsksTeamSettingsInput!]! -type RoadmapEdge { - node: Roadmap! + """ + Whether or not top-level messages in this channel should automatically create Asks + """ + autoCreateOnMessage: Boolean - """Used in `before` and `after` args""" - cursor: String! + """ + Whether or not using the :ticket: emoji in this channel should automatically create Asks + """ + autoCreateOnEmoji: Boolean } -type RoadmapConnection { - edges: [RoadmapEdge!]! - nodes: [Roadmap!]! - pageInfo: PageInfo! +input SlackAsksSettingsInput { + """ + The mapping of Slack channel ID => Slack channel name for connected channels. + """ + slackChannelMapping: [SlackChannelNameMappingInput!] } -"""Intercom specific settings.""" -type IntercomSettings { +input IntercomSettingsInput { """ Whether an internal message should be added when a Linear issue changes status (for status types except completed or canceled). """ @@ -3177,8 +10350,7 @@ type IntercomSettings { automateTicketReopeningOnComment: Boolean } -"""Front specific settings.""" -type FrontSettings { +input FrontSettingsInput { """ Whether an internal message should be added when a Linear issue changes status (for status types except completed or canceled). """ @@ -3205,6649 +10377,7553 @@ type FrontSettings { automateTicketReopeningOnComment: Boolean } -"""Slack notification specific settings.""" -type SlackPostSettings { +input SlackPostSettingsInput { channel: String! channelId: String! configurationUrl: String! } -"""Metadata and settings for a GitHub integration.""" -type GitHubSettings { - """The avatar URL for the GitHub organization""" +input GitHubSettingsInput { + """ + The avatar URL for the GitHub organization + """ orgAvatarUrl: String! - """The GitHub organization's name""" + """ + The GitHub organization's name + """ orgLogin: String! -} - -"""Google Sheets specific settings.""" -type GoogleSheetsSettings { - spreadsheetId: String! - spreadsheetUrl: String! - sheetId: Float! - updatedIssuesAt: DateTime! -} - -"""Metadata about a Jira project.""" -type JiraProjectData { - """The Jira id for this project.""" - id: String! - - """The Jira key for this project, such as ENG.""" - key: String! - - """The Jira name for this project, such as Engineering.""" - name: String! -} - -"""Tuple for mapping Jira projects to Linear teams.""" -type JiraLinearMapping { - """The Jira id for this project.""" - jiraProjectId: String! - - """The Linear team id to map to the given project.""" - linearTeamId: String! -} - -"""Jira specific settings.""" -type JiraSettings { - """The mapping of Jira project id => Linear team id.""" - projectMapping: [JiraLinearMapping!] - - """The Jira projects for the organization.""" - projects: [JiraProjectData!]! -} - -"""Sentry specific settings.""" -type SentrySettings { - """The slug of the Sentry organization being connected.""" - organizationSlug: String! -} -"""Zendesk specific settings.""" -type ZendeskSettings { """ - Whether an internal message should be added when a Linear issue changes status (for status types except completed or canceled). + The names of the repositories connected for the GitHub integration """ - sendNoteOnStatusChange: Boolean + repositories: [String!] +} +input GitHubSyncSettingsInput { """ - Whether an internal message should be added when someone comments on an issue. + The names of the repositories connected for the GitHub integration """ - sendNoteOnComment: Boolean + repositories: [GitHubSyncRepoInput!] """ - Whether a ticket should be automatically reopened when its linked Linear issue is completed. + Mapping of team to repository for syncing """ - automateTicketReopeningOnCompletion: Boolean + teamRepoMap: [TeamRepoMappingInput!] +} +input GitHubSyncRepoInput { """ - Whether a ticket should be automatically reopened when its linked Linear issue is cancelled. + The full name of the repository. """ - automateTicketReopeningOnCancellation: Boolean + fullName: String! """ - Whether a ticket should be automatically reopened when a comment is posted on its linked Linear issue + The GitHub repo id. """ - automateTicketReopeningOnComment: Boolean - - """The subdomain of the Zendesk organization being connected.""" - subdomain: String! - - """The URL of the connected Zendesk organization.""" - url: String! - - """The ID of the Linear bot user.""" - botUserId: String -} - -"""The integration resource's settings""" -type IntegrationSettings { - slackPost: SlackPostSettings - slackProjectPost: SlackPostSettings - slackOrgProjectUpdatesPost: SlackPostSettings - googleSheets: GoogleSheetsSettings - gitHub: GitHubSettings - sentry: SentrySettings - zendesk: ZendeskSettings - intercom: IntercomSettings - front: FrontSettings - jira: JiraSettings + id: Float! } -"""An integration with an external service.""" -type Integration implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! - +input TeamRepoMappingInput { """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The Linear team id to map to the given project. """ - updatedAt: DateTime! + linearTeamId: String! """ - The time at which the entity was archived. Null if the entity has not been archived. + The GitHub repo id. """ - archivedAt: DateTime - - """The integration's type.""" - service: String! - - """The organization that the integration is associated with.""" - organization: Organization! - - """The team that the integration is associated with.""" - team: Team - - """The user that added the integration.""" - creator: User! + gitHubRepoId: Float! } -type IntegrationEdge { - node: Integration! - - """Used in `before` and `after` args""" - cursor: String! -} - -type IntegrationConnection { - edges: [IntegrationEdge!]! - nodes: [Integration!]! - pageInfo: PageInfo! +input GitLabSettingsInput { + """ + The self-hosted URL of the GitLab instance + """ + url: String } -"""Pull request review data""" -type PullRequestReview { - """The ID of the review.""" - id: Float! - - """The state of the review.""" - state: String! - - """The login of the reviewer.""" - reviewerLogin: String! - - """The user ID of the reviewer.""" - reviewerId: Float! - - """The timestamp of review submission.""" - submittedAt: String! - - """[Internal] The reviewer's avatar URL.""" - reviewerAvatarUrl: String +input GoogleSheetsSettingsInput { + spreadsheetId: String! + spreadsheetUrl: String! + sheetId: Float! + updatedIssuesAt: DateTime! } -"""Pull request data""" -type PullRequestPayload { - status: String! - number: Float! - url: String! - draft: Boolean! - id: String! - title: String! - branch: String! - userId: String! - userLogin: String! - repoLogin: String! - repoName: String! - createdAt: String! - updatedAt: String! - closedAt: String! - mergedAt: String! - reviewers: [String!] - reviews: [PullRequestReview!] -} - -"""GitHub's commit data""" -type CommitPayload { +input JiraProjectDataInput { + """ + The Jira id for this project. + """ id: String! - message: String! - timestamp: String! - url: String! - added: [String!]! - removed: [String!]! - modified: [String!]! -} - -"""Sentry issue data""" -type SentryIssuePayload { - """The Sentry identifier for the issue.""" - issueId: String! - - """The description of the issue.""" - webUrl: String! - """The type of the actor who created the issue.""" - actorType: String! - - """The Sentry identifier of the actor who created the issue.""" - actorId: Float! - - """The name of the Sentry actor who created this issue.""" - actorName: String! - - """The Sentry identifier of the project this issue belongs to.""" - projectId: Float! - - """The slug of the project this issue belongs to.""" - projectSlug: String! - - """The title of the issue.""" - issueTitle: String! - - """The shortId of the issue.""" - shortId: String! - - """The date this issue was first seen.""" - firstSeen: String! + """ + The Jira key for this project, such as ENG. + """ + key: String! """ - The name of the first release version this issue appeared on, if available. + The Jira name for this project, such as Engineering. """ - firstVersion: String + name: String! } -"""Integration resource's payload""" -type IntegrationResourceData { - """The payload for an IntegrationResource of type 'githubPullRequest'""" - githubPullRequest: PullRequestPayload - - """The payload for an IntegrationResource of type 'gitlabMergeRequest'""" - gitlabMergeRequest: PullRequestPayload - - """The payload for an IntegrationResource of type 'githubCommit'""" - githubCommit: CommitPayload +input JiraLinearMappingInput { + """ + The Jira id for this project. + """ + jiraProjectId: String! - """The payload for an IntegrationResource of type 'sentryIssue'""" - sentryIssue: SentryIssuePayload + """ + The Linear team id to map to the given project. + """ + linearTeamId: String! } -"""An integration resource created by an external service.""" -type IntegrationResource implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! - +input JiraSettingsInput { """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + The mapping of Jira project id => Linear team id. """ - updatedAt: DateTime! + projectMapping: [JiraLinearMappingInput!] """ - The time at which the entity was archived. Null if the entity has not been archived. + The Jira projects for the organization. """ - archivedAt: DateTime - - """The integration's type.""" - resourceType: String! + projects: [JiraProjectDataInput!]! +} - """The external service resource ID.""" - resourceId: String! +input NotionSettingsInput { + """ + The ID of the Notion workspace being connected. + """ + workspaceId: String! - """Detailed information about the external resource.""" - data: IntegrationResourceData! + """ + The name of the Notion workspace being connected. + """ + workspaceName: String! +} - """The integration that the resource is associated with.""" - integration: Integration +input PagerDutyScheduleInfoInput { + """ + The PagerDuty schedule id. + """ + scheduleId: String! - """The issue that the resource is associated with.""" - issue: Issue! + """ + The PagerDuty schedule name. + """ + scheduleName: String! """ - Pull request information for GitHub pull requests and GitLab merge requests. + The URL of the schedule in PagerDuty's web app. """ - pullRequest: PullRequestPayload! + url: String! } -type IntegrationResourceEdge { - node: IntegrationResource! - - """Used in `before` and `after` args""" - cursor: String! +input PagerDutyInput { + """ + Metadata about a PagerDuty schedule. + """ + scheduleMapping: [PagerDutyScheduleInfoInput!]! } -type IntegrationResourceConnection { - edges: [IntegrationResourceEdge!]! - nodes: [IntegrationResource!]! - pageInfo: PageInfo! +input SentrySettingsInput { + """ + The slug of the Sentry organization being connected. + """ + organizationSlug: String! } -"""The configuration of all integrations for a project or a team.""" -type IntegrationsSettings implements Node { - """The unique identifier of the entity.""" - id: ID! +input ZendeskSettingsInput { + """ + Whether an internal message should be added when a Linear issue changes status (for status types except completed or canceled). + """ + sendNoteOnStatusChange: Boolean - """The time at which the entity was created.""" - createdAt: DateTime! + """ + Whether an internal message should be added when someone comments on an issue. + """ + sendNoteOnComment: Boolean """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Whether a ticket should be automatically reopened when its linked Linear issue is completed. """ - updatedAt: DateTime! + automateTicketReopeningOnCompletion: Boolean """ - The time at which the entity was archived. Null if the entity has not been archived. + Whether a ticket should be automatically reopened when its linked Linear issue is cancelled. """ - archivedAt: DateTime + automateTicketReopeningOnCancellation: Boolean """ - Whether to send a Slack message when a new issue is created for the project or the team. + Whether a ticket should be automatically reopened when a comment is posted on its linked Linear issue """ - slackIssueCreated: Boolean + automateTicketReopeningOnComment: Boolean """ - Whether to send a Slack message when a comment is created on any of the project or team's issues. + The subdomain of the Zendesk organization being connected. """ - slackIssueNewComment: Boolean + subdomain: String! """ - Whether to send a Slack message when any of the project or team's issues change to completed or cancelled. + The URL of the connected Zendesk organization. """ - slackIssueStatusChangedDone: Boolean + url: String! """ - Whether to send a Slack message when any of the project or team's issues has a change in status. + The ID of the Linear bot user. """ - slackIssueStatusChangedAll: Boolean + botUserId: String +} - """Whether to send a Slack message when a project update is created.""" - slackProjectUpdateCreated: Boolean +input IntegrationSettingsInput { + slackAsks: SlackAsksSettingsInput + slackPost: SlackPostSettingsInput + slackProjectPost: SlackPostSettingsInput + slackOrgProjectUpdatesPost: SlackPostSettingsInput + googleSheets: GoogleSheetsSettingsInput + gitHub: GitHubSettingsInput + gitHubSync: GitHubSyncSettingsInput + gitLab: GitLabSettingsInput + sentry: SentrySettingsInput + zendesk: ZendeskSettingsInput + intercom: IntercomSettingsInput + front: FrontSettingsInput + jira: JiraSettingsInput + notion: NotionSettingsInput + pagerDuty: PagerDutyInput +} - """Whether to send a new project update to team Slack channels.""" - slackProjectUpdateCreatedToTeam: Boolean +input SamlConfigurationInput { + """ + X.509 Signing Certificate in string form. + """ + ssoSigningCert: String - """Whether to send a new project update to milestone Slack channels.""" - slackProjectUpdateCreatedToMilestone: Boolean + """ + Sign in endpoint URL for the identity provider. + """ + ssoEndpoint: String - """Whether to send a new project update to workspace Slack channel.""" - slackProjectUpdateCreatedToWorkspace: Boolean + """ + Binding method for authentication call. Can be either `post` (default) or `redirect`. + """ + ssoBinding: String - """Team which those settings apply to.""" - team: Team + """ + The algorithm of the Signing Certificate. Can be one of `sha1`, `sha256` (default), or `sha512`. + """ + ssoSignAlgo: String - """Project which those settings apply to.""" - project: Project + """ + The issuer's custom entity ID. + """ + issuerEntityId: String } -type IntegrationsSettingsEdge { - node: IntegrationsSettings! - - """Used in `before` and `after` args""" - cursor: String! -} +""" +Comparator for booleans. +""" +input BooleanComparator { + """ + Equals constraint. + """ + eq: Boolean -type IntegrationsSettingsConnection { - edges: [IntegrationsSettingsEdge!]! - nodes: [IntegrationsSettings!]! - pageInfo: PageInfo! + """ + Not equals constraint. + """ + neq: Boolean } -"""Issue relation history's payload""" -type IssueRelationHistoryPayload { - """The identifier of the related issue.""" - identifier: String! +""" +[Internal] Comparator for content. +""" +input ContentComparator { + """ + [Internal] Contains constraint. + """ + contains: String - """The type of the change.""" - type: String! + """ + [Internal] Not-contains constraint. + """ + notContains: String } -"""A record of changes to an issue.""" -type IssueHistory implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! - +""" +Comparator for dates. +""" +input DateComparator { """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Equals constraint. """ - updatedAt: DateTime! + eq: DateTime """ - The time at which the entity was archived. Null if the entity has not been archived. + Not-equals constraint. """ - archivedAt: DateTime - - """The issue that was changed.""" - issue: Issue! + neq: DateTime """ - The user who made these changes. If null, possibly means that the change made by an integration. + In-array constraint. """ - actor: User + in: [DateTime!] """ - The id of user who made these changes. If null, possibly means that the change made by an integration. + Not-in-array constraint. """ - actorId: String - - """Whether the issue's description was updated.""" - updatedDescription: Boolean - - """What the title was changed from.""" - fromTitle: String - - """What the title was changed to.""" - toTitle: String - - """The user from whom the issue was re-assigned from.""" - fromAssignee: User - - """The id of user from whom the issue was re-assigned from.""" - fromAssigneeId: String - - """The user to whom the issue was assigned to.""" - toAssignee: User - - """The id of user to whom the issue was assigned to.""" - toAssigneeId: String - - """What the priority was changed from.""" - fromPriority: Float - - """What the priority was changed to.""" - toPriority: Float - - """The team from which the issue was moved from.""" - fromTeam: Team - - """The id of team from which the issue was moved from.""" - fromTeamId: String - - """The team to which the issue was moved to.""" - toTeam: Team - - """The id of team to which the issue was moved to.""" - toTeamId: String - - """The previous parent of the issue.""" - fromParent: Issue - - """The id of previous parent of the issue.""" - fromParentId: String - - """The new parent of the issue.""" - toParent: Issue - - """The id of new parent of the issue.""" - toParentId: String - - """The previous workflow state of the issue.""" - fromState: WorkflowState - - """The id of previous workflow state of the issue.""" - fromStateId: String - - """The new workflow state of the issue.""" - toState: WorkflowState - - """The id of new workflow state of the issue.""" - toStateId: String - - """The previous cycle of the issue.""" - fromCycle: Cycle - - """The id of previous cycle of the issue.""" - fromCycleId: String - - """The new cycle of the issue.""" - toCycle: Cycle - - """The id of new cycle of the issue.""" - toCycleId: String - - """The previous project of the issue.""" - fromProject: Project - - """The id of previous project of the issue.""" - fromProjectId: String - - """The new project of the issue.""" - toProject: Project - - """The id of new project of the issue.""" - toProjectId: String - - """What the estimate was changed from.""" - fromEstimate: Float - - """What the estimate was changed to.""" - toEstimate: Float - - """Whether the issue was archived or un-archived.""" - archived: Boolean - - """Whether the issue was trashed or un-trashed.""" - trashed: Boolean - - """The import record.""" - issueImport: IssueImport - - """The linked attachment.""" - attachment: Attachment - - """The id of linked attachment.""" - attachmentId: String - - """ID's of labels that were added.""" - addedLabelIds: [String!] - - """ID's of labels that were removed.""" - removedLabelIds: [String!] - - """Changed issue relationships.""" - relationChanges: [IssueRelationHistoryPayload!] + nin: [DateTime!] - """Whether the issue was auto-closed.""" - autoClosed: Boolean + """ + Less-than constraint. Matches any values that are less than the given value. + """ + lt: DateTime - """Whether the issue was auto-archived.""" - autoArchived: Boolean + """ + Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. + """ + lte: DateTime - """What the due date was changed from""" - fromDueDate: TimelessDate + """ + Greater-than constraint. Matches any values that are greater than the given value. + """ + gt: DateTime - """What the due date was changed to""" - toDueDate: TimelessDate + """ + Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. + """ + gte: DateTime } -type IssueHistoryEdge { - node: IssueHistory! - - """Used in `before` and `after` args""" - cursor: String! -} +""" +Comparator for optional dates. +""" +input NullableDateComparator { + """ + Equals constraint. + """ + eq: DateTime -type IssueHistoryConnection { - edges: [IssueHistoryEdge!]! - nodes: [IssueHistory!]! - pageInfo: PageInfo! -} + """ + Not-equals constraint. + """ + neq: DateTime -"""Labels that can be associated with issues.""" -type IssueLabel implements Node { - """The unique identifier of the entity.""" - id: ID! + """ + In-array constraint. + """ + in: [DateTime!] - """The time at which the entity was created.""" - createdAt: DateTime! + """ + Not-in-array constraint. + """ + nin: [DateTime!] """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. """ - updatedAt: DateTime! + null: Boolean """ - The time at which the entity was archived. Null if the entity has not been archived. + Less-than constraint. Matches any values that are less than the given value. """ - archivedAt: DateTime + lt: DateTime - """The label's name.""" - name: String! + """ + Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. + """ + lte: DateTime - """The label's description.""" - description: String + """ + Greater-than constraint. Matches any values that are greater than the given value. + """ + gt: DateTime - """The label's color as a HEX string.""" - color: String! - organization: Organization @deprecated(reason: "Workspace labels are identified by their team being null.") + """ + Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. + """ + gte: DateTime +} +""" +Comparator for estimates. +""" +input EstimateComparator { """ - The team that the label is associated with. If null, the label is associated with the global workspace.. + Equals constraint. """ - team: Team + eq: Float - """The user who created the label.""" - creator: User + """ + Not-equals constraint. + """ + neq: Float - """The parent label.""" - parent: IssueLabel + """ + In-array constraint. + """ + in: [Float!] - """Issues associated with the label.""" - issues( - """Filter returned issues.""" - filter: IssueFilter + """ + Not-in-array constraint. + """ + nin: [Float!] - """A cursor to be used with last for backward pagination.""" - before: String + """ + Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. + """ + null: Boolean - """A cursor to be used with first for forward pagination""" - after: String + """ + Less-than constraint. Matches any values that are less than the given value. + """ + lt: Float - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int + """ + Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. + """ + lte: Float - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + Greater-than constraint. Matches any values that are greater than the given value. + """ + gt: Float - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. + """ + gte: Float - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): IssueConnection! + """ + Compound filters, all of which need to be matched by the estimate. + """ + or: [NullableNumberComparator!] - """Children of the label.""" - children( - """Filter returned issue labels.""" - filter: IssueLabelFilter + """ + Compound filters, one of which need to be matched by the estimate. + """ + and: [NullableNumberComparator!] +} - """A cursor to be used with last for backward pagination.""" - before: String +""" +Comparator for relation existence. +""" +input RelationExistsComparator { + """ + Equals constraint. + """ + eq: Boolean - """A cursor to be used with first for forward pagination""" - after: String + """ + Not equals constraint. + """ + neq: Boolean +} - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int +""" +Comparator for identifiers. +""" +input IDComparator { + """ + Equals constraint. + """ + eq: ID - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + Not-equals constraint. + """ + neq: ID - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + In-array constraint. + """ + in: [ID!] - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): IssueLabelConnection! + """ + Not-in-array constraint. + """ + nin: [ID!] } -type IssueLabelEdge { - node: IssueLabel! +""" +Comparator for numbers. +""" +input NumberComparator { + """ + Equals constraint. + """ + eq: Float - """Used in `before` and `after` args""" - cursor: String! -} + """ + Not-equals constraint. + """ + neq: Float -type IssueLabelConnection { - edges: [IssueLabelEdge!]! - nodes: [IssueLabel!]! - pageInfo: PageInfo! -} + """ + In-array constraint. + """ + in: [Float!] -"""A relation between two issues.""" -type IssueRelation implements Node { - """The unique identifier of the entity.""" - id: ID! + """ + Not-in-array constraint. + """ + nin: [Float!] - """The time at which the entity was created.""" - createdAt: DateTime! + """ + Less-than constraint. Matches any values that are less than the given value. + """ + lt: Float """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. """ - updatedAt: DateTime! + lte: Float """ - The time at which the entity was archived. Null if the entity has not been archived. + Greater-than constraint. Matches any values that are greater than the given value. """ - archivedAt: DateTime + gt: Float - """The relationship of the issue with the related issue.""" - type: String! + """ + Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. + """ + gte: Float +} - """The issue whose relationship is being described.""" - issue: Issue! +""" +Comparator for optional numbers. +""" +input NullableNumberComparator { + """ + Equals constraint. + """ + eq: Float - """The related issue.""" - relatedIssue: Issue! -} + """ + Not-equals constraint. + """ + neq: Float -type IssueRelationEdge { - node: IssueRelation! + """ + In-array constraint. + """ + in: [Float!] - """Used in `before` and `after` args""" - cursor: String! -} + """ + Not-in-array constraint. + """ + nin: [Float!] -type IssueRelationConnection { - edges: [IssueRelationEdge!]! - nodes: [IssueRelation!]! - pageInfo: PageInfo! -} + """ + Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. + """ + null: Boolean -"""A milestone that contains projects.""" -type Milestone implements Node { - """The unique identifier of the entity.""" - id: ID! + """ + Less-than constraint. Matches any values that are less than the given value. + """ + lt: Float - """The time at which the entity was created.""" - createdAt: DateTime! + """ + Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. + """ + lte: Float """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Greater-than constraint. Matches any values that are greater than the given value. """ - updatedAt: DateTime! + gt: Float """ - The time at which the entity was archived. Null if the entity has not been archived. + Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. """ - archivedAt: DateTime + gte: Float +} - """The name of the milestone.""" - name: String! +""" +Comparator for strings. +""" +input StringComparator { + """ + Equals constraint. + """ + eq: String - """The organization that the milestone belongs to.""" - organization: Organization! + """ + Not-equals constraint. + """ + neq: String - """The sort order for the milestone.""" - sortOrder: Float! + """ + In-array constraint. + """ + in: [String!] - """[ALPHA] The milestone's description.""" - description: String + """ + Not-in-array constraint. + """ + nin: [String!] - """[ALPHA] The estimated completion date of the initiative.""" - targetDate: TimelessDate + """ + Equals case insensitive. Matches any values that matches the given string case insensitive. + """ + eqIgnoreCase: String - """Projects associated with the milestone.""" - projects( - """Filter returned projects.""" - filter: ProjectFilter + """ + Not-equals case insensitive. Matches any values that don't match the given string case insensitive. + """ + neqIgnoreCase: String - """A cursor to be used with last for backward pagination.""" - before: String + """ + Starts with constraint. Matches any values that start with the given string. + """ + startsWith: String - """A cursor to be used with first for forward pagination""" - after: String + """ + Starts with case insensitive constraint. Matches any values that start with the given string. + """ + startsWithIgnoreCase: String - """ - The number of items to forward paginate (used with after). Defaults to 50. - """ - first: Int + """ + Doesn't start with constraint. Matches any values that don't start with the given string. + """ + notStartsWith: String - """ - The number of items to backward paginate (used with before). Defaults to 50. - """ - last: Int + """ + Ends with constraint. Matches any values that end with the given string. + """ + endsWith: String - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + Doesn't end with constraint. Matches any values that don't end with the given string. + """ + notEndsWith: String - """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. - """ - orderBy: PaginationOrderBy - ): ProjectConnection! @deprecated(reason: "Milestones will be removed. Use roadmaps instead.") -} + """ + Contains constraint. Matches any values that contain the given string. + """ + contains: String -type MilestoneEdge { - node: Milestone! + """ + Contains case insensitive constraint. Matches any values that contain the given string case insensitive. + """ + containsIgnoreCase: String - """Used in `before` and `after` args""" - cursor: String! -} + """ + Doesn't contain constraint. Matches any values that don't contain the given string. + """ + notContains: String -type MilestoneConnection { - edges: [MilestoneEdge!]! - nodes: [Milestone!]! - pageInfo: PageInfo! + """ + Doesn't contain case insensitive constraint. Matches any values that don't contain the given string case insensitive. + """ + notContainsIgnoreCase: String } """ -Request to install OAuth clients on organizations and the response to the request. +Comparator for optional strings. """ -type OauthClientApproval implements Node { - """The unique identifier of the entity.""" - id: ID! +input NullableStringComparator { + """ + Equals constraint. + """ + eq: String - """The time at which the entity was created.""" - createdAt: DateTime! + """ + Not-equals constraint. + """ + neq: String """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + In-array constraint. """ - updatedAt: DateTime! + in: [String!] """ - The time at which the entity was archived. Null if the entity has not been archived. + Not-in-array constraint. """ - archivedAt: DateTime + nin: [String!] - """The uuid of the OAuth client being requested for installation.""" - oauthClientId: String! + """ + Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. + """ + null: Boolean - """The person who requested installing the OAuth client.""" - requesterId: String! + """ + Equals case insensitive. Matches any values that matches the given string case insensitive. + """ + eqIgnoreCase: String - """The person who responded to the request to install the OAuth client.""" - responderId: String + """ + Not-equals case insensitive. Matches any values that don't match the given string case insensitive. + """ + neqIgnoreCase: String - """The status for the OAuth client approval request.""" - status: OAuthClientApprovalStatus! + """ + Starts with constraint. Matches any values that start with the given string. + """ + startsWith: String - """The scopes the app has requested.""" - scopes: [String!]! + """ + Starts with case insensitive constraint. Matches any values that start with the given string. + """ + startsWithIgnoreCase: String - """The reason the person wants to install this OAuth client.""" - requestReason: String + """ + Doesn't start with constraint. Matches any values that don't start with the given string. + """ + notStartsWith: String - """The reason the request for the OAuth client approval was denied.""" - denyReason: String -} + """ + Ends with constraint. Matches any values that end with the given string. + """ + endsWith: String -""" -The different requests statuses possible for an OAuth client approval request -""" -enum OAuthClientApprovalStatus { - requested - approved - denied -} + """ + Doesn't end with constraint. Matches any values that don't end with the given string. + """ + notEndsWith: String -"""Defines the use of a domain by an organization.""" -type OrganizationDomain implements Node { - """The unique identifier of the entity.""" - id: ID! + """ + Contains constraint. Matches any values that contain the given string. + """ + contains: String - """The time at which the entity was created.""" - createdAt: DateTime! + """ + Contains case insensitive constraint. Matches any values that contain the given string case insensitive. + """ + containsIgnoreCase: String """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Doesn't contain constraint. Matches any values that don't contain the given string. """ - updatedAt: DateTime! + notContains: String """ - The time at which the entity was archived. Null if the entity has not been archived. + Doesn't contain case insensitive constraint. Matches any values that don't contain the given string case insensitive. """ - archivedAt: DateTime + notContainsIgnoreCase: String +} - """Domain name""" - name: String! +""" +Comparator for `sourceType` field. +""" +input SourceTypeComparator { + """ + Equals constraint. + """ + eq: String - """Is this domain verified""" - verified: Boolean! + """ + Not-equals constraint. + """ + neq: String - """E-mail used to verify this domain""" - verificationEmail: String + """ + In-array constraint. + """ + in: [String!] - """The user who added the domain.""" - creator: User + """ + Not-in-array constraint. + """ + nin: [String!] - """What type of auth is the domain used for""" - authType: OrganizationDomainAuthType! + """ + Equals case insensitive. Matches any values that matches the given string case insensitive. + """ + eqIgnoreCase: String """ - Whether the domains was claimed by the organization through DNS verification. + Not-equals case insensitive. Matches any values that don't match the given string case insensitive. """ - claimed: Boolean -} + neqIgnoreCase: String -"""What type of auth is the domain used for.""" -enum OrganizationDomainAuthType { - saml - general -} + """ + Starts with constraint. Matches any values that start with the given string. + """ + startsWith: String -"""An invitation to the organization that has been sent via email.""" -type OrganizationInvite implements Node { - """The unique identifier of the entity.""" - id: ID! + """ + Starts with case insensitive constraint. Matches any values that start with the given string. + """ + startsWithIgnoreCase: String - """The time at which the entity was created.""" - createdAt: DateTime! + """ + Doesn't start with constraint. Matches any values that don't start with the given string. + """ + notStartsWith: String """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Ends with constraint. Matches any values that end with the given string. """ - updatedAt: DateTime! + endsWith: String """ - The time at which the entity was archived. Null if the entity has not been archived. + Doesn't end with constraint. Matches any values that don't end with the given string. """ - archivedAt: DateTime + notEndsWith: String - """The invitees email address.""" - email: String! + """ + Contains constraint. Matches any values that contain the given string. + """ + contains: String - """The user role that the invitee will receive upon accepting the invite.""" - role: UserRoleType! + """ + Contains case insensitive constraint. Matches any values that contain the given string case insensitive. + """ + containsIgnoreCase: String - """The invite was sent to external address.""" - external: Boolean! + """ + Doesn't contain constraint. Matches any values that don't contain the given string. + """ + notContains: String """ - The time at which the invite was accepted. Null, if the invite hasn't been accepted + Doesn't contain case insensitive constraint. Matches any values that don't contain the given string case insensitive. """ - acceptedAt: DateTime + notContainsIgnoreCase: String +} +""" +Comparator for timeless dates. +""" +input TimelessDateComparator { """ - The time at which the invite will be expiring. Null, if the invite shouldn't expire + Equals constraint. """ - expiresAt: DateTime + eq: TimelessDate - """The user who created the invitation.""" - inviter: User! + """ + Not-equals constraint. + """ + neq: TimelessDate """ - The user who has accepted the invite. Null, if the invite hasn't been accepted. + In-array constraint. """ - invitee: User + in: [TimelessDate!] - """The organization that the invite is associated with.""" - organization: Organization! -} + """ + Not-in-array constraint. + """ + nin: [TimelessDate!] -"""The different permission roles available to users on an organization""" -enum UserRoleType { - admin - guest - user -} + """ + Less-than constraint. Matches any values that are less than the given value. + """ + lt: TimelessDate -type OrganizationInviteEdge { - node: OrganizationInvite! + """ + Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. + """ + lte: TimelessDate - """Used in `before` and `after` args""" - cursor: String! -} + """ + Greater-than constraint. Matches any values that are greater than the given value. + """ + gt: TimelessDate -type OrganizationInviteConnection { - edges: [OrganizationInviteEdge!]! - nodes: [OrganizationInvite!]! - pageInfo: PageInfo! + """ + Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. + """ + gte: TimelessDate } -"""A user's web browser push notification subscription.""" -type PushSubscription implements Node { - """The unique identifier of the entity.""" - id: ID! +input NullableTimelessDateComparator { + """ + Equals constraint. + """ + eq: TimelessDate - """The time at which the entity was created.""" - createdAt: DateTime! + """ + Not-equals constraint. + """ + neq: TimelessDate """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + In-array constraint. """ - updatedAt: DateTime! + in: [TimelessDate!] """ - The time at which the entity was archived. Null if the entity has not been archived. + Not-in-array constraint. """ - archivedAt: DateTime -} + nin: [TimelessDate!] -type PushSubscriptionEdge { - node: PushSubscription! + """ + Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. + """ + null: Boolean - """Used in `before` and `after` args""" - cursor: String! -} + """ + Less-than constraint. Matches any values that are less than the given value. + """ + lt: TimelessDate -type PushSubscriptionConnection { - edges: [PushSubscriptionEdge!]! - nodes: [PushSubscription!]! - pageInfo: PageInfo! -} + """ + Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. + """ + lte: TimelessDate -"""The subscription of an organization.""" -type Subscription implements Node { - """The unique identifier of the entity.""" - id: ID! + """ + Greater-than constraint. Matches any values that are greater than the given value. + """ + gt: TimelessDate - """The time at which the entity was created.""" - createdAt: DateTime! + """ + Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. + """ + gte: TimelessDate +} +""" +Comparator for source type. +""" +input SubTypeComparator { """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Equals constraint. """ - updatedAt: DateTime! + eq: String """ - The time at which the entity was archived. Null if the entity has not been archived. + Not-equals constraint. """ - archivedAt: DateTime + neq: String - """The subscription type.""" - type: String! + """ + In-array constraint. + """ + in: [String!] - """The number of seats in the subscription.""" - seats: Float! + """ + Not-in-array constraint. + """ + nin: [String!] - """The minimum number of seats that will be billed in the subscription.""" - seatsMinimum: Float + """ + Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. + """ + null: Boolean +} - """The maximum number of seats that can be added to the subscription.""" - seatsMaximum: Float +""" +Comparator for issue source type. +""" +input SourceMetadataComparator { + """ + Equals constraint. + """ + eq: String - """The creator of the subscription.""" - creator: User + """ + Not-equals constraint. + """ + neq: String - """The organization that the subscription is associated with.""" - organization: Organization! + """ + In-array constraint. + """ + in: [String!] - """The date the subscription was canceled, if any.""" - canceledAt: DateTime + """ + Not-in-array constraint. + """ + nin: [String!] - """The subscription type of a pending change. Null if no change pending.""" - pendingChangeType: String + """ + Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. + """ + null: Boolean - """The date the subscription will be billed next.""" - nextBillingAt: DateTime + """ + Compound filters, all of which need to be matched by the sub type. + """ + subType: SubTypeComparator } -"""Defines the membership of a user to a team.""" -type TeamMembership implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! +""" +Attachment filtering options. +""" +input AttachmentFilter { + """ + Comparator for the identifier. + """ + id: IDComparator """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Comparator for the created at date. """ - updatedAt: DateTime! + createdAt: DateComparator """ - The time at which the entity was archived. Null if the entity has not been archived. + Comparator for the updated at date. """ - archivedAt: DateTime + updatedAt: DateComparator - """The user that the membership is associated with.""" - user: User! + """ + Comparator for the title. + """ + title: StringComparator - """The team that the membership is associated with.""" - team: Team! + """ + Comparator for the subtitle. + """ + subtitle: NullableStringComparator - """Whether the user is the owner of the team""" - owner: Boolean + """ + Comparator for the url. + """ + url: StringComparator - """The order of the item in the users team list.""" - sortOrder: Float! -} + """ + Filters that the attachments creator must satisfy. + """ + creator: NullableUserFilter -type TeamMembershipEdge { - node: TeamMembership! + """ + Comparator for the source type. + """ + sourceType: SourceTypeComparator - """Used in `before` and `after` args""" - cursor: String! -} + """ + Compound filters, all of which need to be matched by the attachment. + """ + and: [AttachmentFilter!] -type TeamMembershipConnection { - edges: [TeamMembershipEdge!]! - nodes: [TeamMembership!]! - pageInfo: PageInfo! + """ + Compound filters, one of which need to be matched by the attachment. + """ + or: [AttachmentFilter!] } -"""The settings of a user as a JSON object.""" -type UserSettings implements Node { - """The unique identifier of the entity.""" - id: ID! +""" +Attachment collection filtering options. +""" +input AttachmentCollectionFilter { + """ + Comparator for the identifier. + """ + id: IDComparator - """The time at which the entity was created.""" - createdAt: DateTime! + """ + Comparator for the created at date. + """ + createdAt: DateComparator """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Comparator for the updated at date. """ - updatedAt: DateTime! + updatedAt: DateComparator """ - The time at which the entity was archived. Null if the entity has not been archived. + Comparator for the title. """ - archivedAt: DateTime + title: StringComparator - """The notification channel settings the user has selected.""" - notificationPreferences: JSONObject! + """ + Comparator for the subtitle. + """ + subtitle: NullableStringComparator - """The email types the user has unsubscribed from.""" - unsubscribedFrom: [String!]! + """ + Comparator for the url. + """ + url: StringComparator - """The user associated with these settings.""" - user: User! -} + """ + Filters that the attachments creator must satisfy. + """ + creator: NullableUserFilter -"""View preferences.""" -type ViewPreferences implements Node { - """The unique identifier of the entity.""" - id: ID! + """ + Comparator for the source type. + """ + sourceType: SourceTypeComparator - """The time at which the entity was created.""" - createdAt: DateTime! + """ + Compound filters, all of which need to be matched by the attachment. + """ + and: [AttachmentCollectionFilter!] """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Compound filters, one of which need to be matched by the attachment. """ - updatedAt: DateTime! + or: [AttachmentCollectionFilter!] """ - The time at which the entity was archived. Null if the entity has not been archived. + Filters that needs to be matched by some attachments. """ - archivedAt: DateTime + some: AttachmentFilter - """The view preference type.""" - type: String! + """ + Filters that needs to be matched by all attachments. + """ + every: AttachmentFilter - """The view type.""" - viewType: String! + """ + Comparator for the collection length. + """ + length: NumberComparator } -"""A webhook used to send HTTP notifications over data updates""" -type Webhook implements Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! +""" +Audit entry filtering options. +""" +input AuditEntryFilter { + """ + Comparator for the identifier. + """ + id: IDComparator """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Comparator for the created at date. """ - updatedAt: DateTime! + createdAt: DateComparator """ - The time at which the entity was archived. Null if the entity has not been archived. + Comparator for the updated at date. """ - archivedAt: DateTime + updatedAt: DateComparator - """Webhook label""" - label: String + """ + Comparator for the type. + """ + type: StringComparator - """Webhook URL""" - url: String + """ + Comparator for the IP address. + """ + ip: StringComparator - """Whether the Webhook is enabled.""" - enabled: Boolean! + """ + Comparator for the country code. + """ + countryCode: StringComparator """ - The team that the webhook is associated with. If null, the webhook is associated with all public teams of the organization. + Filters that the audit entry actor must satisfy. """ - team: Team + actor: NullableUserFilter +} +""" +Comment filtering options. +""" +input CommentFilter { """ - Whether the Webhook is enabled for all public teams, including teams created after the webhook was created. + Comparator for the identifier. """ - allPublicTeams: Boolean! + id: IDComparator - """The user who created the webhook.""" - creator: User + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """Secret token for verifying the origin on the recipient side.""" - secret: String + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator - """The resource types this webhook is subscribed to.""" - resourceTypes: [String!]! -} + """ + Comparator for the comments body. + """ + body: StringComparator -type WebhookEdge { - node: Webhook! + """ + Filters that the comments creator must satisfy. + """ + user: UserFilter - """Used in `before` and `after` args""" - cursor: String! -} + """ + Filters that the comments issue must satisfy. + """ + issue: IssueFilter -type WebhookConnection { - edges: [WebhookEdge!]! - nodes: [Webhook!]! - pageInfo: PageInfo! -} + """ + Compound filters, all of which need to be matched by the comment. + """ + and: [CommentFilter!] -"""Contains requested archived model objects.""" -type ArchiveResponse { - """A JSON serialized collection of model objects loaded from the archive""" - archive: String! + """ + Compound filters, one of which need to be matched by the comment. + """ + or: [CommentFilter!] +} - """The total number of entities in the archive.""" - totalCount: Float! +""" +Comment filtering options. +""" +input CommentCollectionFilter { + """ + Comparator for the identifier. + """ + id: IDComparator """ - The version of the remote database. Incremented by 1 for each migration run on the database. + Comparator for the created at date. """ - databaseVersion: Float! + createdAt: DateComparator """ - Whether the dependencies for the model objects are included in the archive. + Comparator for the updated at date. """ - includesDependencies: Boolean! -} + updatedAt: DateComparator -type SynchronizedPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! -} + """ + Comparator for the comments body. + """ + body: StringComparator -type ArchivePayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Filters that the comments creator must satisfy. + """ + user: UserFilter - """Whether the operation was successful.""" - success: Boolean! -} + """ + Filters that the comments issue must satisfy. + """ + issue: IssueFilter -"""Contains a delta sync.""" -type SyncDeltaResponse { - """A JSON serialized collection of delta packets.""" - updates: String + """ + Compound filters, all of which need to be matched by the comment. + """ + and: [CommentCollectionFilter!] - """Whether the client should try loading more.""" - loadMore: Boolean! + """ + Compound filters, one of which need to be matched by the comment. + """ + or: [CommentCollectionFilter!] """ - Whether loading the delta was successful. In case it wasn't, the client is instructed to do a full bootstrap. + Filters that needs to be matched by some comments. """ - success: Boolean! -} + some: CommentFilter -"""Contains the requested dependencies.""" -type DependencyResponse { - """A JSON serialized collection of dependencies.""" - dependencies: String! -} + """ + Filters that needs to be matched by all comments. + """ + every: CommentFilter -"""Contains the requested relations.""" -type SyncBatchResponse { - """A JSON serialized collection of relations model object.""" - models: String! + """ + Comparator for the collection length. + """ + length: NumberComparator } """ -Contains either the full serialized state of the application or delta packets that the requester can - apply to the local data set in order to be up-to-date. +Cycle filtering options. """ -type EntityCountResponse { - """Entity counts keyed by the entity name.""" - counts: JSON! -} +input CycleFilter { + """ + Comparator for the identifier. + """ + id: IDComparator -type AdminJobConfigurationPayload { - enabled: Boolean! - delay: Float! - currentJob: String - param: String -} + """ + Comparator for the created at date. + """ + createdAt: DateComparator -type AdminJobStatusPayload { - configuration: AdminJobConfigurationPayload! - cursor: String - startedAt: DateTime - availableJobs: [String!]! -} + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator -type EventPayload { - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the cycle number. + """ + number: NumberComparator -type ApiKeyPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the cycle name. + """ + name: StringComparator - """The API key that was created.""" - apiKey: ApiKey! + """ + Comparator for the cycle start date. + """ + startsAt: DateComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the cycle ends at date. + """ + endsAt: DateComparator -"""Public information of the OAuth application.""" -type Application { - """OAuth application's ID.""" - id: String! + """ + Comparator for the cycle completed at date. + """ + completedAt: DateComparator - """OAuth application's client ID.""" - clientId: String! + """ + Comparator for the filtering active cycle. + """ + isActive: BooleanComparator - """Application name.""" - name: String! + """ + Comparator for the filtering next cycle. + """ + isNext: BooleanComparator - """Information about the application.""" - description: String + """ + Comparator for the filtering previous cycle. + """ + isPrevious: BooleanComparator - """Name of the developer.""" - developer: String! + """ + Comparator for the filtering future cycles. + """ + isFuture: BooleanComparator - """Url of the developer (homepage or docs).""" - developerUrl: String! + """ + Comparator for the filtering past cycles. + """ + isPast: BooleanComparator - """Image of the application.""" - imageUrl: String + """ + Filters that the cycles team must satisfy. + """ + team: TeamFilter + + """ + Filters that the cycles issues must satisfy. + """ + issues: IssueCollectionFilter + + """ + Compound filters, all of which need to be matched by the cycle. + """ + and: [CycleFilter!] + + """ + Compound filters, one of which need to be matched by the cycle. + """ + or: [CycleFilter!] } """ -Public information of the OAuth application, plus whether the application has been authorized for the given scopes. +Cycle filtering options. """ -type UserAuthorizedApplication { - """OAuth application's ID.""" - id: String! - - """OAuth application's client ID.""" - clientId: String! +input NullableCycleFilter { + """ + Comparator for the identifier. + """ + id: IDComparator - """Application name.""" - name: String! + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """Information about the application.""" - description: String + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator - """Name of the developer.""" - developer: String! + """ + Comparator for the cycle number. + """ + number: NumberComparator - """Url of the developer (homepage or docs).""" - developerUrl: String! + """ + Comparator for the cycle name. + """ + name: StringComparator - """Image of the application.""" - imageUrl: String + """ + Comparator for the cycle start date. + """ + startsAt: DateComparator - """Whether the user has authorized the application for the given scopes.""" - isAuthorized: Boolean! + """ + Comparator for the cycle ends at date. + """ + endsAt: DateComparator - """Whether the application was created by Linear.""" - createdByLinear: Boolean! + """ + Comparator for the cycle completed at date. + """ + completedAt: DateComparator - """Whether or not webhooks are enabled for the application.""" - webhooksEnabled: Boolean! + """ + Comparator for the filtering active cycle. + """ + isActive: BooleanComparator """ - Error associated with the application needing to be requested for approval in the workspace + Comparator for the filtering next cycle. """ - approvalErrorCode: String -} + isNext: BooleanComparator -""" -[INTERNAL] Public information of the OAuth application, plus the authorized scopes for a given user. -""" -type AuthorizedApplication { - """Application name.""" - name: String! + """ + Comparator for the filtering previous cycle. + """ + isPrevious: BooleanComparator - """Image of the application.""" - imageUrl: String + """ + Comparator for the filtering future cycles. + """ + isFuture: BooleanComparator - """Scopes that are authorized for this application for a given user.""" - scope: [String!]! + """ + Comparator for the filtering past cycles. + """ + isPast: BooleanComparator - """OAuth application's ID.""" - appId: String! + """ + Filters that the cycles team must satisfy. + """ + team: TeamFilter - """OAuth application's client ID.""" - clientId: String! + """ + Filters that the cycles issues must satisfy. + """ + issues: IssueCollectionFilter - """Whether or not webhooks are enabled for the application.""" - webhooksEnabled: Boolean! -} + """ + Filter based on the existence of the relation. + """ + null: Boolean -"""[INTERNAL] An OAuth userId/createdDate tuple""" -type AuthMembership { - """The authorizing userId""" - userId: String! + """ + Compound filters, one of which need to be matched by the cycle. + """ + and: [NullableCycleFilter!] - """The date of the authorization""" - createdAt: DateTime! + """ + Compound filters, one of which need to be matched by the cycle. + """ + or: [NullableCycleFilter!] } """ -[INTERNAL] Public information of the OAuth application, plus the userIds and scopes for those users. +Template filtering options. """ -type WorkspaceAuthorizedApplication { - """Application name.""" - name: String! - - """Image of the application.""" - imageUrl: String - - """Scopes that are authorized for this application for a given user.""" - scope: [String!]! - - """OAuth application's ID.""" - appId: String! - - """OAuth application's client ID.""" - clientId: String! - - """Whether or not webhooks are enabled for the application.""" - webhooksEnabled: Boolean! - - """Total number of members that authorized the application""" - totalMembers: Float! - +input NullableTemplateFilter { """ - UserIds and membership dates of everyone who has authorized the application with the set of scopes + Comparator for the identifier. """ - memberships: [AuthMembership!]! -} - -type AttachmentPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + id: IDComparator - """The issue attachment that was created.""" - attachment: Attachment! + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator -type FrontAttachmentPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the template's name. + """ + name: StringComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Filter based on the existence of the relation. + """ + null: Boolean -type AuditEntryEdge { - node: AuditEntry! + """ + Compound filters, all of which need to be matched by the template. + """ + and: [NullableTemplateFilter!] - """Used in `before` and `after` args""" - cursor: String! + """ + Compound filters, one of which need to be matched by the template. + """ + or: [NullableTemplateFilter!] } -type AuditEntryConnection { - edges: [AuditEntryEdge!]! - nodes: [AuditEntry!]! - pageInfo: PageInfo! -} +""" +Project filtering options. +""" +input ProjectFilter { + """ + Comparator for the identifier. + """ + id: IDComparator -type AuditEntryType { - """The audit entry type.""" - type: String! + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """Description of the audit entry type.""" - description: String! -} + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator -type CreateOrJoinOrganizationResponse { - organization: Organization! - user: User! -} + """ + Comparator for the project name. + """ + name: StringComparator -type EmailUserAccountAuthChallengeResponse { - """Whether the operation was successful.""" - success: Boolean! + """ + Comparator for the project slug ID. + """ + slugId: StringComparator """ - Supported challenge for this user account. Can be either verificationCode or password. + Comparator for the project state. """ - authType: String! -} + state: StringComparator -type SsoUrlFromEmailResponse { - """Whether the operation was successful.""" - success: Boolean! + """ + [Internal] Comparator for the projects content. + """ + searchableContent: ContentComparator - """SAML SSO sign-in URL.""" - samlSsoUrl: String! -} + """ + Comparator for the project completion date. + """ + completedAt: NullableDateComparator -type LogoutResponse { - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the project start date. + """ + startDate: NullableDateComparator -type CommentPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the project target date. + """ + targetDate: NullableDateComparator - """The comment that was created or updated.""" - comment: Comment! + """ + Comparator for the project health. + """ + health: StringComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Filters that the projects creator must satisfy. + """ + creator: UserFilter -type ContactPayload { - """Whether the operation was successful.""" - success: Boolean! -} + """ + Filters that the projects lead must satisfy. + """ + lead: NullableUserFilter -type CustomViewPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Filters that the projects members must satisfy. + """ + members: UserFilter - """The custom view that was created or updated.""" - customView: CustomView! + """ + Filters that the projects issues must satisfy. + """ + issues: IssueCollectionFilter - """Whether the operation was successful.""" - success: Boolean! -} + """ + Filters that the projects roadmaps must satisfy. + """ + roadmaps: RoadmapCollectionFilter -type CyclePayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Filters that the project's milestones must satisfy. + """ + projectMilestones: ProjectMilestoneCollectionFilter - """The Cycle that was created or updated.""" - cycle: Cycle + """ + Filters that the project's completed milestones must satisfy. + """ + completedProjectMilestones: ProjectMilestoneCollectionFilter - """Whether the operation was successful.""" - success: Boolean! -} + """ + Filters that the project's next milestone must satisfy. + """ + nextProjectMilestone: ProjectMilestoneFilter -type DocumentPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Filters that the project's team must satisfy. + """ + accessibleTeams: TeamCollectionFilter - """The document that was created or updated.""" - document: Document! + """ + Filters that the last applied template must satisfy. + """ + lastAppliedTemplate: NullableTemplateFilter - """Whether the operation was successful.""" - success: Boolean! -} + """ + Compound filters, all of which need to be matched by the project. + """ + and: [ProjectFilter!] -type EmailSubscribePayload { - """Whether the operation was successful.""" - success: Boolean! + """ + Compound filters, one of which need to be matched by the project. + """ + or: [ProjectFilter!] } -type EmailUnsubscribePayload { - """Whether the operation was successful.""" - success: Boolean! -} +""" +Project filtering options. +""" +input NullableProjectFilter { + """ + Comparator for the identifier. + """ + id: IDComparator -type EmojiPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """The emoji that was created.""" - emoji: Emoji! + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the project name. + """ + name: StringComparator -type FavoritePayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the project slug ID. + """ + slugId: StringComparator - """The object that was added as a favorite.""" - favorite: Favorite! + """ + Comparator for the project state. + """ + state: StringComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + [Internal] Comparator for the projects content. + """ + searchableContent: ContentComparator -type FeedbackPayload { - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the project completion date. + """ + completedAt: NullableDateComparator -"""Object representing Figma preview information.""" -type FigmaEmbed { - """Figma file name.""" - name: String! + """ + Comparator for the project start date. + """ + startDate: NullableDateComparator - """Date when the file was updated at the time of embedding.""" - lastModified: DateTime! + """ + Comparator for the project target date. + """ + targetDate: NullableDateComparator - """Node name.""" - nodeName: String + """ + Comparator for the project health. + """ + health: StringComparator - """Figma screenshot URL.""" - url: String -} + """ + Filters that the projects creator must satisfy. + """ + creator: UserFilter -type FigmaEmbedPayload { - """Figma embed information.""" - figmaEmbed: FigmaEmbed + """ + Filters that the projects lead must satisfy. + """ + lead: NullableUserFilter - """Whether the operation was successful.""" - success: Boolean! -} + """ + Filters that the projects members must satisfy. + """ + members: UserFilter -type UploadFileHeader { - """Upload file header key.""" - key: String! + """ + Filters that the projects issues must satisfy. + """ + issues: IssueCollectionFilter - """Upload file header value.""" - value: String! -} + """ + Filters that the projects roadmaps must satisfy. + """ + roadmaps: RoadmapCollectionFilter -"""Object representing Google Cloud upload policy, plus additional data.""" -type UploadFile { - """The filename.""" - filename: String! + """ + Filters that the project's milestones must satisfy. + """ + projectMilestones: ProjectMilestoneCollectionFilter - """The content type.""" - contentType: String! + """ + Filters that the project's completed milestones must satisfy. + """ + completedProjectMilestones: ProjectMilestoneCollectionFilter - """The size of the uploaded file.""" - size: Int! + """ + Filters that the project's next milestone must satisfy. + """ + nextProjectMilestone: ProjectMilestoneFilter - """The signed URL the for the uploaded file. (assigned automatically)""" - uploadUrl: String! + """ + Filters that the project's team must satisfy. + """ + accessibleTeams: TeamCollectionFilter - """The asset URL for the uploaded file. (assigned automatically)""" - assetUrl: String! - metaData: JSON - headers: [UploadFileHeader!]! -} + """ + Filters that the last applied template must satisfy. + """ + lastAppliedTemplate: NullableTemplateFilter -type UploadPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Filter based on the existence of the relation. + """ + null: Boolean - """Object describing the file to be uploaded.""" - uploadFile: UploadFile + """ + Compound filters, all of which need to be matched by the project. + """ + and: [NullableProjectFilter!] - """Whether the operation was successful.""" - success: Boolean! + """ + Compound filters, one of which need to be matched by the project. + """ + or: [NullableProjectFilter!] } -type ImageUploadFromUrlPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! +""" +Project filtering options. +""" +input ProjectCollectionFilter { + """ + Comparator for the identifier. + """ + id: IDComparator - """The URL containing the image.""" - url: String + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator -type InitiativePayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the project name. + """ + name: StringComparator - """The milesteone that was created or updated.""" - initiative: Initiative + """ + Comparator for the project slug ID. + """ + slugId: StringComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the project state. + """ + state: StringComparator -type IntegrationRequestPayload { - """Whether the operation was successful.""" - success: Boolean! -} + """ + [Internal] Comparator for the projects content. + """ + searchableContent: ContentComparator -type IntegrationPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the project completion date. + """ + completedAt: NullableDateComparator - """The integration that was created or updated.""" - integration: Integration + """ + Comparator for the project start date. + """ + startDate: NullableDateComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the project target date. + """ + targetDate: NullableDateComparator -type GitHubCommitIntegrationPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the project health. + """ + health: StringComparator - """The integration that was created or updated.""" - integration: Integration + """ + Filters that the projects creator must satisfy. + """ + creator: UserFilter - """Whether the operation was successful.""" - success: Boolean! + """ + Filters that the projects lead must satisfy. + """ + lead: NullableUserFilter - """The webhook secret to provide to GitHub.""" - webhookSecret: String! -} + """ + Filters that the projects members must satisfy. + """ + members: UserFilter -type IntegrationsSettingsPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Filters that the projects issues must satisfy. + """ + issues: IssueCollectionFilter - """The settings that were created or updated.""" - integrationsSettings: IntegrationsSettings! + """ + Filters that the projects roadmaps must satisfy. + """ + roadmaps: RoadmapCollectionFilter - """Whether the operation was successful.""" - success: Boolean! -} + """ + Filters that the project's milestones must satisfy. + """ + projectMilestones: ProjectMilestoneCollectionFilter -type IntegrationTemplatePayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Filters that the project's completed milestones must satisfy. + """ + completedProjectMilestones: ProjectMilestoneCollectionFilter - """The IntegrationTemplate that was created or updated.""" - integrationTemplate: IntegrationTemplate! + """ + Filters that the project's next milestone must satisfy. + """ + nextProjectMilestone: ProjectMilestoneFilter - """Whether the operation was successful.""" - success: Boolean! -} + """ + Filters that the project's team must satisfy. + """ + accessibleTeams: TeamCollectionFilter -type IssueImportPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Filters that the last applied template must satisfy. + """ + lastAppliedTemplate: NullableTemplateFilter - """The import job that was created or updated.""" - issueImport: IssueImport + """ + Compound filters, all of which need to be matched by the project. + """ + and: [ProjectCollectionFilter!] - """Whether the operation was successful.""" - success: Boolean! -} + """ + Compound filters, one of which need to be matched by the project. + """ + or: [ProjectCollectionFilter!] -type IssueImportDeletePayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Filters that needs to be matched by some projects. + """ + some: ProjectFilter - """The import job that was deleted.""" - issueImport: IssueImport + """ + Filters that needs to be matched by all projects. + """ + every: ProjectFilter - """Whether the operation was successful.""" - success: Boolean! + """ + Comparator for the collection length. + """ + length: NumberComparator } -"""Relevant information for the GitHub repository.""" -type GithubRepo { - """The id of the GitHub repository.""" - id: String! +""" +Project milestone filtering options. +""" +input ProjectMilestoneFilter { + """ + Comparator for the identifier. + """ + id: IDComparator - """The name of the GitHub repository.""" - name: String! -} + """ + Comparator for the created at date. + """ + createdAt: DateComparator -"""Relevant information for the GitHub organization.""" -type GithubOrg { - """GitHub organization id.""" - id: String! + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator - """The name of the GitHub organization.""" - name: String! + """ + Comparator for the project milestone name. + """ + name: StringComparator - """The login for the GitHub organization.""" - login: String! + """ + Comparator for the project milestone target date. + """ + targetDate: NullableDateComparator - """Repositories that the organization owns.""" - repositories: [GithubRepo!]! + """ + Compound filters, all of which need to be matched by the project milestone. + """ + and: [ProjectMilestoneFilter!] - """Whether or not this org is the user's personal repositories.""" - isPersonal: Boolean + """ + Compound filters, one of which need to be matched by the project milestone. + """ + or: [ProjectMilestoneFilter!] } """ -GitHub OAuth token, plus information about the organizations the user is a member of. +Project milestone filtering options. """ -type GithubOAuthTokenPayload { - """The OAuth token if the operation to fetch it was successful.""" - token: String - +input NullableProjectMilestoneFilter { """ - A list of the GitHub organizations the user is a member of with attached repositories. + Comparator for the identifier. """ - organizations: [GithubOrg!] -} - -type IssueLabelPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! - - """The label that was created or updated.""" - issueLabel: IssueLabel! + id: IDComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the created at date. + """ + createdAt: DateComparator -type IssueRelationPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator - """The issue relation that was created or updated.""" - issueRelation: IssueRelation! + """ + Comparator for the project milestone name. + """ + name: StringComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the project milestone target date. + """ + targetDate: NullableDateComparator -type IssuePayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Filter based on the existence of the relation. + """ + null: Boolean - """The issue that was created or updated.""" - issue: Issue + """ + Compound filters, all of which need to be matched by the project milestone. + """ + and: [NullableProjectMilestoneFilter!] - """Whether the operation was successful.""" - success: Boolean! + """ + Compound filters, one of which need to be matched by the project milestone. + """ + or: [NullableProjectMilestoneFilter!] } -type IssueBatchPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! +""" +Milestone collection filtering options. +""" +input ProjectMilestoneCollectionFilter { + """ + Comparator for the identifier. + """ + id: IDComparator - """The issues that were updated.""" - issues: [Issue!]! + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator -type IssuePriorityValue { - """Priority's number value.""" - priority: Int! + """ + Comparator for the project milestone name. + """ + name: StringComparator - """Priority's label.""" - label: String! -} + """ + Comparator for the project milestone target date. + """ + targetDate: NullableDateComparator -type MilestonePayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Compound filters, all of which need to be matched by the milestone. + """ + and: [ProjectMilestoneCollectionFilter!] - """The milesteone that was created or updated.""" - milestone: Milestone + """ + Compound filters, one of which need to be matched by the milestone. + """ + or: [ProjectMilestoneCollectionFilter!] - """Whether the operation was successful.""" - success: Boolean! -} + """ + Filters that needs to be matched by some milestones. + """ + some: ProjectMilestoneFilter -type MilestoneMigrationPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Filters that needs to be matched by all milestones. + """ + every: ProjectMilestoneFilter - """Whether the operation was successful.""" - success: Boolean! + """ + Comparator for the collection length. + """ + length: NumberComparator } -type NotificationPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! - - """The notification that was created or updated.""" - notification: Notification! - - """Whether the operation was successful.""" - success: Boolean! -} +""" +User filtering options. +""" +input UserFilter { + """ + Comparator for the identifier. + """ + id: IDComparator -type NotificationEdge { - node: Notification! + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """Used in `before` and `after` args""" - cursor: String! -} + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator -type NotificationConnection { - edges: [NotificationEdge!]! - nodes: [Notification!]! - pageInfo: PageInfo! -} + """ + Comparator for the user's name. + """ + name: StringComparator -type NotificationSubscriptionPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the user's display name. + """ + displayName: StringComparator - """The notification subscription that was created or updated.""" - notificationSubscription: NotificationSubscription! + """ + Comparator for the user's email. + """ + email: StringComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the user's activity status. + """ + active: BooleanComparator -type OauthAuthStringChallengePayload { - """Whether the operation was successful.""" - success: Boolean! + """ + Filters that the users assigned issues must satisfy. + """ + assignedIssues: IssueCollectionFilter - """The created authentication string.""" - authString: String! -} + """ + Comparator for the user's admin status. + """ + admin: BooleanComparator -type OauthAuthStringAuthorizePayload { - """Whether the operation was successful.""" - success: Boolean! -} + """ + Filter based on the currently authenticated user. Set to true to filter for the authenticated user, false for any other user. + """ + isMe: BooleanComparator -type OauthAuthStringCheckPayload { - """Whether the operation was successful.""" - success: Boolean! + """ + Compound filters, all of which need to be matched by the user. + """ + and: [UserFilter!] - """Access token for use.""" - token: String + """ + Compound filters, one of which need to be matched by the user. + """ + or: [UserFilter!] } -type OauthClientApprovalPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! +""" +User filtering options. +""" +input NullableUserFilter { + """ + Comparator for the identifier. + """ + id: IDComparator - """The OAuth client approval request that was created or updated.""" - oauthClientApproval: OauthClientApproval! + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator -type OauthClientPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the user's name. + """ + name: StringComparator - """The OAuth client application that was created or updated.""" - oauthClient: OauthClient! + """ + Comparator for the user's display name. + """ + displayName: StringComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the user's email. + """ + email: StringComparator -type RotateSecretPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the user's activity status. + """ + active: BooleanComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Filters that the users assigned issues must satisfy. + """ + assignedIssues: IssueCollectionFilter -type OauthTokenRevokePayload { - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the user's admin status. + """ + admin: BooleanComparator -type OauthTokensRevokePayload { - """Whether the operation was successful.""" - success: Boolean! -} + """ + Filter based on the currently authenticated user. Set to true to filter for the authenticated user, false for any other user. + """ + isMe: BooleanComparator -"""[INTERNAL] Organization domain operation response.""" -type OrganizationDomainPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Filter based on the existence of the relation. + """ + null: Boolean - """The organization domain that was created or updated.""" - organizationDomain: OrganizationDomain! + """ + Compound filters, all of which need to be matched by the user. + """ + and: [NullableUserFilter!] - """Whether the operation was successful.""" - success: Boolean! + """ + Compound filters, one of which need to be matched by the user. + """ + or: [NullableUserFilter!] } -"""[INTERNAL] Organization domain operation response.""" -type OrganizationDomainSimplePayload { - """Whether the operation was successful.""" - success: Boolean! -} +""" +User filtering options. +""" +input UserCollectionFilter { + """ + Comparator for the identifier. + """ + id: IDComparator -"""[INTERNAL] Domain claim request response.""" -type OrganizationDomainClaimPayload { - """String to put into DNS for verification.""" - verificationString: String! -} + """ + Comparator for the created at date. + """ + createdAt: DateComparator -type OrganizationInvitePayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator - """The organization invite that was created or updated.""" - organizationInvite: OrganizationInvite! + """ + Comparator for the user's name. + """ + name: StringComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the user's display name. + """ + displayName: StringComparator -type OrganizationInviteDetailsPayload { - """The name of the inviter""" - inviter: String! + """ + Comparator for the user's email. + """ + email: StringComparator - """The email of the invitee""" - email: String! + """ + Comparator for the user's activity status. + """ + active: BooleanComparator - """What user role the invite should grant.""" - role: UserRoleType! + """ + Filters that the users assigned issues must satisfy. + """ + assignedIssues: IssueCollectionFilter - """When the invite was created.""" - createdAt: DateTime! + """ + Comparator for the user's admin status. + """ + admin: BooleanComparator - """Name of the workspace the invite is for.""" - organizationName: String! + """ + Filter based on the currently authenticated user. Set to true to filter for the authenticated user, false for any other user. + """ + isMe: BooleanComparator - """ID of the workspace the invite is for.""" - organizationId: String! + """ + Compound filters, all of which need to be matched by the user. + """ + and: [UserCollectionFilter!] - """URL of the workspace logo the invite is for.""" - organizationLogoUrl: String + """ + Compound filters, one of which need to be matched by the user. + """ + or: [UserCollectionFilter!] - """Whether the invite has already been accepted.""" - accepted: Boolean! + """ + Filters that needs to be matched by some users. + """ + some: UserFilter - """Whether the invite has expired.""" - expired: Boolean! + """ + Filters that needs to be matched by all users. + """ + every: UserFilter + + """ + Comparator for the collection length. + """ + length: NumberComparator } -type OrganizationPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! +""" +Roadmap filtering options. +""" +input RoadmapFilter { + """ + Comparator for the identifier. + """ + id: IDComparator - """The organization that was created or updated.""" - organization: Organization + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator -type OrganizationDeletePayload { - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the roadmap name. + """ + name: StringComparator -type OrganizationCancelDeletePayload { - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the roadmap slug ID. + """ + slugId: StringComparator -type OrganizationExistsPayload { - """Whether the operation was successful.""" - success: Boolean! + """ + Filters that the roadmap creator must satisfy. + """ + creator: UserFilter - """Whether the organization exists.""" - exists: Boolean! -} + """ + Compound filters, all of which need to be matched by the roadmap. + """ + and: [RoadmapFilter!] -type ProjectLinkPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Compound filters, one of which need to be matched by the roadmap. + """ + or: [RoadmapFilter!] +} - """The project that was created or updated.""" - projectLink: ProjectLink! +""" +Roadmap collection filtering options. +""" +input RoadmapCollectionFilter { + """ + Comparator for the identifier. + """ + id: IDComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the created at date. + """ + createdAt: DateComparator -type ProjectPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator - """The project that was created or updated.""" - project: Project + """ + Comparator for the roadmap name. + """ + name: StringComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the roadmap slug ID. + """ + slugId: StringComparator -type ProjectUpdateInteractionPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Filters that the roadmap creator must satisfy. + """ + creator: UserFilter - """The project update interaction that was created or updated.""" - projectUpdateInteraction: ProjectUpdateInteraction! + """ + Compound filters, all of which need to be matched by the roadmap. + """ + and: [RoadmapCollectionFilter!] - """Whether the operation was successful.""" - success: Boolean! -} + """ + Compound filters, one of which need to be matched by the roadmap. + """ + or: [RoadmapCollectionFilter!] -type ProjectUpdatePayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Filters that needs to be matched by some roadmaps. + """ + some: RoadmapFilter - """The project update that was created or updated.""" - projectUpdate: ProjectUpdate! + """ + Filters that needs to be matched by all roadmaps. + """ + every: RoadmapFilter - """Whether the operation was successful.""" - success: Boolean! + """ + Comparator for the collection length. + """ + length: NumberComparator } -type ProjectUpdateWithInteractionPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! - - """The project update that was created or updated.""" - projectUpdate: ProjectUpdate! +""" +Team filtering options. +""" +input TeamFilter { + """ + Comparator for the identifier. + """ + id: IDComparator - """Whether the operation was successful.""" - success: Boolean! + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """The project update that was created or updated.""" - interaction: ProjectUpdateInteraction! -} + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator -type PushSubscriptionPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the team name. + """ + name: StringComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the team key. + """ + key: StringComparator -type PushSubscriptionTestPayload { - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the team description. + """ + description: NullableStringComparator -type RateLimitPayload { - """The identifier we rate limit on.""" - identifier: String + """ + Filters that the teams issues must satisfy. + """ + issues: IssueCollectionFilter - """The kind of rate limit selected for this request.""" - kind: String! + """ + Compound filters, all of which need to be matched by the team. + """ + and: [TeamFilter!] - """The state of the rate limit.""" - limits: [RateLimitResultPayload!]! + """ + Compound filters, one of which need to be matched by the team. + """ + or: [TeamFilter!] } -type RateLimitResultPayload { - """What is being rate limited.""" - type: String! - - """The requested quantity for this type of limit.""" - requestedAmount: Float! +""" +Team filtering options. +""" +input NullableTeamFilter { + """ + Comparator for the identifier. + """ + id: IDComparator - """The total allowed quantity for this type of limit.""" - allowedAmount: Float! + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """The period in which the rate limit is fully replenished in ms.""" - period: Float! + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator - """The remaining quantity for this type of limit after this request.""" - remainingAmount: Float! + """ + Comparator for the team name. + """ + name: StringComparator """ - The timestamp after the rate limit is fully replenished as a UNIX timestamp. + Comparator for the team key. """ - reset: Float! -} + key: StringComparator -type ReactionPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! - reaction: Reaction! - success: Boolean! -} + """ + Comparator for the team description. + """ + description: NullableStringComparator -type ReactionEdge { - node: Reaction! + """ + Filters that the teams issues must satisfy. + """ + issues: IssueCollectionFilter - """Used in `before` and `after` args""" - cursor: String! -} + """ + Filter based on the existence of the relation. + """ + null: Boolean -type ReactionConnection { - edges: [ReactionEdge!]! - nodes: [Reaction!]! - pageInfo: PageInfo! -} + """ + Compound filters, all of which need to be matched by the team. + """ + and: [NullableTeamFilter!] -type CreateCsvExportReportPayload { - """Whether the operation was successful.""" - success: Boolean! + """ + Compound filters, one of which need to be matched by the team. + """ + or: [NullableTeamFilter!] } -type RoadmapPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! - - """The roadmap that was created or updated.""" - roadmap: Roadmap! +""" +Roadmap collection filtering options. +""" +input TeamCollectionFilter { + """ + Comparator for the identifier. + """ + id: IDComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the created at date. + """ + createdAt: DateComparator -type RoadmapToProjectPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator - """The roadmapToProject that was created or updated.""" - roadmapToProject: RoadmapToProject! + """ + Compound filters, all of which need to be matched by the roadmap. + """ + and: [TeamCollectionFilter!] - """Whether the operation was successful.""" - success: Boolean! -} + """ + Compound filters, one of which need to be matched by the roadmap. + """ + or: [TeamCollectionFilter!] -type TeamMembershipPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Filters that needs to be matched by some roadmaps. + """ + some: TeamFilter - """The team membership that was created or updated.""" - teamMembership: TeamMembership + """ + Filters that needs to be matched by all roadmaps. + """ + every: TeamFilter - """Whether the operation was successful.""" - success: Boolean! + """ + Comparator for the collection length. + """ + length: NumberComparator } -type TeamPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! +""" +Workflow state filtering options. +""" +input WorkflowStateFilter { + """ + Comparator for the identifier. + """ + id: IDComparator - """The team that was created or updated.""" - team: Team + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator -type TemplatePayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the workflow state name. + """ + name: StringComparator - """The template that was created or updated.""" - template: Template! + """ + Comparator for the workflow state description. + """ + description: StringComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the workflow state position. + """ + position: NumberComparator -type UserPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the workflow state type. + """ + type: StringComparator - """The user that was created or updated.""" - user: User + """ + Filters that the workflow states team must satisfy. + """ + team: TeamFilter - """Whether the operation was successful.""" - success: Boolean! -} + """ + Filters that the workflow states issues must satisfy. + """ + issues: IssueCollectionFilter -type UserAdminPayload { - """Whether the operation was successful.""" - success: Boolean! + """ + Compound filters, all of which need to be matched by the workflow state. + """ + and: [WorkflowStateFilter!] + + """ + Compound filters, one of which need to be matched by the workflow state. + """ + or: [WorkflowStateFilter!] } -type UserSettingsPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! +""" +Document content filtering options. +""" +input NullableDocumentContentFilter { + """ + Comparator for the identifier. + """ + id: IDComparator - """The user's settings.""" - userSettings: UserSettings! + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """Whether the operation was successful.""" - success: Boolean! + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator } -type UserSettingsFlagPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! - - """The flag key which was updated.""" - flag: String! +""" +Document content filtering options. +""" +input DocumentContentFilter { + """ + Comparator for the identifier. + """ + id: IDComparator - """The flag value after update.""" - value: Int! + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """Whether the operation was successful.""" - success: Boolean! + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator } -type UserSettingsFlagsResetPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! +""" +Issue label filtering options. +""" +input IssueLabelFilter { + """ + Comparator for the identifier. + """ + id: IDComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the created at date. + """ + createdAt: DateComparator -type UserSubscribeToNewsletterPayload { - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator -type ViewPreferencesPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Comparator for the name. + """ + name: StringComparator - """The view preferences entity being mutated.""" - viewPreferences: ViewPreferences! + """ + Filters that the issue labels creator must satisfy. + """ + creator: NullableUserFilter - """Whether the operation was successful.""" - success: Boolean! -} + """ + Filters that the issue labels team must satisfy. + """ + team: NullableTeamFilter -type WebhookPayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! + """ + Filters that the issue label's parent label must satisfy. + """ + parent: IssueLabelFilter - """The webhook entity being mutated.""" - webhook: Webhook! + """ + Compound filters, all of which need to be matched by the label. + """ + and: [IssueLabelFilter!] - """Whether the operation was successful.""" - success: Boolean! + """ + Compound filters, one of which need to be matched by the label. + """ + or: [IssueLabelFilter!] } -type WorkflowStatePayload { - """The identifier of the last sync operation.""" - lastSyncId: Float! +""" +Issue label filtering options. +""" +input IssueLabelCollectionFilter { + """ + Comparator for the identifier. + """ + id: IDComparator - """The state that was created or updated.""" - workflowState: WorkflowState! + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """Whether the operation was successful.""" - success: Boolean! -} + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator -interface Node { - """The unique identifier of the entity.""" - id: ID! -} + """ + Comparator for the name. + """ + name: StringComparator -"""Notification subscriptions for models.""" -interface NotificationSubscription implements Entity & Node { - """The unique identifier of the entity.""" - id: ID! + """ + Filters that the issue labels creator must satisfy. + """ + creator: NullableUserFilter - """The time at which the entity was created.""" - createdAt: DateTime! + """ + Filters that the issue labels team must satisfy. + """ + team: NullableTeamFilter """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Filters that the issue label's parent label must satisfy. """ - updatedAt: DateTime! + parent: IssueLabelFilter """ - The time at which the entity was archived. Null if the entity has not been archived. + Compound filters, all of which need to be matched by the label. """ - archivedAt: DateTime + and: [IssueLabelCollectionFilter!] - """The type of the subscription.""" - type: String! + """ + Compound filters, one of which need to be matched by the label. + """ + or: [IssueLabelCollectionFilter!] - """The user associated with notification subscriptions.""" - user: User! + """ + Filters that needs to be matched by some issue labels. + """ + some: IssueLabelFilter - """Subscribed team.""" - team: Team + """ + Filters that needs to be matched by all issue labels. + """ + every: IssueLabelFilter - """Subscribed project.""" - project: Project + """ + Comparator for the collection length. + """ + length: NumberComparator } -"""A notification sent to a user.""" -interface Notification implements Entity & Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! +""" +Comparator for sla status. +""" +input SlaStatusComparator { + """ + Equals constraint. + """ + eq: SlaStatus """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Not-equals constraint. """ - updatedAt: DateTime! + neq: SlaStatus """ - The time at which the entity was archived. Null if the entity has not been archived. + In-array constraint. """ - archivedAt: DateTime + in: [SlaStatus!] - """Notification type""" - type: String! + """ + Not-in-array constraint. + """ + nin: [SlaStatus!] - """The user that caused the notification. If empty it's Linear itself.""" - actor: User + """ + Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. + """ + null: Boolean +} - """The user that received the notification.""" - user: User! +enum SlaStatus { + Breached + HighRisk + MediumRisk + LowRisk + Completed + Failed + Paused +} +""" +Issue filtering options. +""" +input NullableIssueFilter { """ - The time at when the user marked the notification as read. Null, if the the user hasn't read the notification + Comparator for the identifier. """ - readAt: DateTime + id: IDComparator """ - The time at when an email reminder for this notification was sent to the user. Null, if no email - reminder has been sent. + Comparator for the created at date. """ - emailedAt: DateTime + createdAt: DateComparator """ - The time until a notification will be snoozed. After that it will appear in the inbox again. + Comparator for the updated at date. """ - snoozedUntilAt: DateTime - - """The time at which a notification was unsnoozed..""" - unsnoozedAt: DateTime -} - -"""Issue import mapping input""" -input IssueImportMappingInput { - """The mapping configuration for users""" - users: JSONObject + updatedAt: DateComparator - """The mapping configuration for workflow states""" - workflowStates: JSONObject + """ + Comparator for the issues number. + """ + number: NumberComparator - """The mapping configuration for epics""" - epics: JSONObject -} + """ + Comparator for the issues title. + """ + title: StringComparator -input SamlConfigurationInput { - """X.509 Signing Certificate in string form.""" - ssoSigningCert: String + """ + Comparator for the issues description. + """ + description: NullableStringComparator - """Sign in endpoint URL for the identity provider.""" - ssoEndpoint: String + """ + Comparator for the issues priority. + """ + priority: NullableNumberComparator """ - Binding method for authentication call. Can be either `post` (default) or `redirect`. + Comparator for the issues estimate. """ - ssoBinding: String + estimate: EstimateComparator """ - The algorithm of the Signing Certificate. Can be one of `sha1`, `sha256` (default), or `sha512`. + Comparator for the issues started at date. """ - ssoSignAlgo: String + startedAt: NullableDateComparator - """List of allowed email domains for SAML authentication.""" - allowedDomains: [String!] + """ + Comparator for the issues triaged at date. + """ + triagedAt: NullableDateComparator - """The issuer's custom entity ID.""" - issuerEntityId: String -} + """ + Comparator for the issues completed at date. + """ + completedAt: NullableDateComparator -input IntercomSettingsInput { """ - Whether an internal message should be added when a Linear issue changes status (for status types except completed or canceled). + Comparator for the issues canceled at date. """ - sendNoteOnStatusChange: Boolean + canceledAt: NullableDateComparator """ - Whether an internal message should be added when someone comments on an issue. + Comparator for the issues auto closed at date. """ - sendNoteOnComment: Boolean + autoClosedAt: NullableDateComparator """ - Whether a ticket should be automatically reopened when its linked Linear issue is completed. + Comparator for the issues auto archived at date. """ - automateTicketReopeningOnCompletion: Boolean + autoArchivedAt: NullableDateComparator """ - Whether a ticket should be automatically reopened when its linked Linear issue is cancelled. + Comparator for the issues due date. """ - automateTicketReopeningOnCancellation: Boolean + dueDate: NullableTimelessDateComparator """ - Whether a ticket should be automatically reopened when a comment is posted on its linked Linear issue + Comparator for the issues snoozed until date. """ - automateTicketReopeningOnComment: Boolean -} + snoozedUntilAt: NullableDateComparator -input FrontSettingsInput { """ - Whether an internal message should be added when a Linear issue changes status (for status types except completed or canceled). + Filters that the issues assignee must satisfy. """ - sendNoteOnStatusChange: Boolean + assignee: NullableUserFilter """ - Whether an internal message should be added when someone comments on an issue. + Filters that the last applied template must satisfy. """ - sendNoteOnComment: Boolean + lastAppliedTemplate: NullableTemplateFilter """ - Whether a ticket should be automatically reopened when its linked Linear issue is completed. + Filters that the source must satisfy. """ - automateTicketReopeningOnCompletion: Boolean + sourceMetadata: SourceMetadataComparator """ - Whether a ticket should be automatically reopened when its linked Linear issue is cancelled. + Filters that the issues creator must satisfy. """ - automateTicketReopeningOnCancellation: Boolean + creator: NullableUserFilter """ - Whether a ticket should be automatically reopened when a comment is posted on its linked Linear issue + Filters that the issue parent must satisfy. """ - automateTicketReopeningOnComment: Boolean -} + parent: NullableIssueFilter -input SlackPostSettingsInput { - channel: String! - channelId: String! - configurationUrl: String! -} + """ + Filters that the issues snoozer must satisfy. + """ + snoozedBy: NullableUserFilter -input GitHubSettingsInput { - """The avatar URL for the GitHub organization""" - orgAvatarUrl: String! + """ + Filters that issue labels must satisfy. + """ + labels: IssueLabelCollectionFilter - """The GitHub organization's name""" - orgLogin: String! -} + """ + Filters that issue subscribers must satisfy. + """ + subscribers: UserCollectionFilter -input GoogleSheetsSettingsInput { - spreadsheetId: String! - spreadsheetUrl: String! - sheetId: Float! - updatedIssuesAt: DateTime! -} + """ + Filters that the issues team must satisfy. + """ + team: TeamFilter -input JiraProjectDataInput { - """The Jira id for this project.""" - id: String! + """ + Filters that the issues project milestone must satisfy. + """ + projectMilestone: NullableProjectMilestoneFilter - """The Jira key for this project, such as ENG.""" - key: String! + """ + Filters that the issues comments must satisfy. + """ + comments: CommentCollectionFilter - """The Jira name for this project, such as Engineering.""" - name: String! -} + """ + Filters that the issues cycle must satisfy. + """ + cycle: NullableCycleFilter -input JiraLinearMappingInput { - """The Jira id for this project.""" - jiraProjectId: String! + """ + Filters that the issues project must satisfy. + """ + project: NullableProjectFilter - """The Linear team id to map to the given project.""" - linearTeamId: String! -} + """ + Filters that the issues state must satisfy. + """ + state: WorkflowStateFilter -input JiraSettingsInput { - """The mapping of Jira project id => Linear team id.""" - projectMapping: [JiraLinearMappingInput!] + """ + Filters that the child issues must satisfy. + """ + children: IssueCollectionFilter - """The Jira projects for the organization.""" - projects: [JiraProjectDataInput!]! -} + """ + Filters that the issues attachments must satisfy. + """ + attachments: AttachmentCollectionFilter -input SentrySettingsInput { - """The slug of the Sentry organization being connected.""" - organizationSlug: String! -} + """ + [Internal] Comparator for the issues content. + """ + searchableContent: ContentComparator -input ZendeskSettingsInput { """ - Whether an internal message should be added when a Linear issue changes status (for status types except completed or canceled). + Comparator for filtering issues with relations. """ - sendNoteOnStatusChange: Boolean + hasRelatedRelations: RelationExistsComparator """ - Whether an internal message should be added when someone comments on an issue. + Comparator for filtering issues which are duplicates. """ - sendNoteOnComment: Boolean + hasDuplicateRelations: RelationExistsComparator """ - Whether a ticket should be automatically reopened when its linked Linear issue is completed. + Comparator for filtering issues which are blocked. """ - automateTicketReopeningOnCompletion: Boolean + hasBlockedByRelations: RelationExistsComparator """ - Whether a ticket should be automatically reopened when its linked Linear issue is cancelled. + Comparator for filtering issues which are blocking. """ - automateTicketReopeningOnCancellation: Boolean + hasBlockingRelations: RelationExistsComparator """ - Whether a ticket should be automatically reopened when a comment is posted on its linked Linear issue + Comparator for the issues sla status. """ - automateTicketReopeningOnComment: Boolean + slaStatus: SlaStatusComparator - """The subdomain of the Zendesk organization being connected.""" - subdomain: String! + """ + Filter based on the existence of the relation. + """ + null: Boolean - """The URL of the connected Zendesk organization.""" - url: String! + """ + Compound filters, all of which need to be matched by the issue. + """ + and: [NullableIssueFilter!] - """The ID of the Linear bot user.""" - botUserId: String + """ + Compound filters, one of which need to be matched by the issue. + """ + or: [NullableIssueFilter!] } -input IntegrationSettingsInput { - slackPost: SlackPostSettingsInput - slackProjectPost: SlackPostSettingsInput - slackOrgProjectUpdatesPost: SlackPostSettingsInput - googleSheets: GoogleSheetsSettingsInput - gitHub: GitHubSettingsInput - sentry: SentrySettingsInput - zendesk: ZendeskSettingsInput - intercom: IntercomSettingsInput - front: FrontSettingsInput - jira: JiraSettingsInput -} +""" +Issue filtering options. +""" +input IssueFilter { + """ + Comparator for the identifier. + """ + id: IDComparator -"""Relation load request.""" -input BatchRequest { - """The class name of the model to load.""" - modelClass: String! + """ + Comparator for the created at date. + """ + createdAt: DateComparator - """The indexed key to load models for.""" - indexedKey: String! + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator - """The value of the indexed key to load models for.""" - keyValue: String! -} + """ + Comparator for the issues number. + """ + number: NumberComparator -input AdminJobConfiguration { - enabled: Boolean! - delay: Float - currentJob: String - param: String -} + """ + Comparator for the issues title. + """ + title: StringComparator -"""Comparator for booleans.""" -input BooleanComparator { - """Equals constraint.""" - eq: Boolean + """ + Comparator for the issues description. + """ + description: NullableStringComparator - """Not equals constraint.""" - neq: Boolean -} + """ + Comparator for the issues priority. + """ + priority: NullableNumberComparator -"""Comparator for dates.""" -input DateComparator { - """Equals constraint.""" - eq: DateTime + """ + Comparator for the issues estimate. + """ + estimate: EstimateComparator - """Not-equals constraint.""" - neq: DateTime + """ + Comparator for the issues started at date. + """ + startedAt: NullableDateComparator - """In-array constraint.""" - in: [DateTime!] + """ + Comparator for the issues triaged at date. + """ + triagedAt: NullableDateComparator - """Not-in-array constraint.""" - nin: [DateTime!] + """ + Comparator for the issues completed at date. + """ + completedAt: NullableDateComparator """ - Less-than constraint. Matches any values that are less than the given value. + Comparator for the issues canceled at date. """ - lt: DateTime + canceledAt: NullableDateComparator """ - Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. + Comparator for the issues auto closed at date. """ - lte: DateTime + autoClosedAt: NullableDateComparator """ - Greater-than constraint. Matches any values that are greater than the given value. + Comparator for the issues auto archived at date. """ - gt: DateTime + autoArchivedAt: NullableDateComparator """ - Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. + Comparator for the issues due date. """ - gte: DateTime -} + dueDate: NullableTimelessDateComparator -"""Comparator for optional dates.""" -input NullableDateComparator { - """Equals constraint.""" - eq: DateTime + """ + Comparator for the issues snoozed until date. + """ + snoozedUntilAt: NullableDateComparator - """Not-equals constraint.""" - neq: DateTime + """ + Filters that the issues assignee must satisfy. + """ + assignee: NullableUserFilter - """In-array constraint.""" - in: [DateTime!] + """ + Filters that the last applied template must satisfy. + """ + lastAppliedTemplate: NullableTemplateFilter - """Not-in-array constraint.""" - nin: [DateTime!] + """ + Filters that the source must satisfy. + """ + sourceMetadata: SourceMetadataComparator """ - Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. + Filters that the issues creator must satisfy. """ - null: Boolean + creator: NullableUserFilter """ - Less-than constraint. Matches any values that are less than the given value. + Filters that the issue parent must satisfy. """ - lt: DateTime + parent: NullableIssueFilter """ - Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. + Filters that the issues snoozer must satisfy. """ - lte: DateTime + snoozedBy: NullableUserFilter """ - Greater-than constraint. Matches any values that are greater than the given value. + Filters that issue labels must satisfy. """ - gt: DateTime + labels: IssueLabelCollectionFilter """ - Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. + Filters that issue subscribers must satisfy. """ - gte: DateTime -} + subscribers: UserCollectionFilter -"""Comparator for identifiers.""" -input IDComparator { - """Equals constraint.""" - eq: ID + """ + Filters that the issues team must satisfy. + """ + team: TeamFilter - """Not-equals constraint.""" - neq: ID + """ + Filters that the issues project milestone must satisfy. + """ + projectMilestone: NullableProjectMilestoneFilter - """In-array constraint.""" - in: [ID!] + """ + Filters that the issues comments must satisfy. + """ + comments: CommentCollectionFilter - """Not-in-array constraint.""" - nin: [ID!] -} + """ + Filters that the issues cycle must satisfy. + """ + cycle: NullableCycleFilter -"""Comparator for strings.""" -input StringComparator { - """Equals constraint.""" - eq: String + """ + Filters that the issues project must satisfy. + """ + project: NullableProjectFilter - """Not-equals constraint.""" - neq: String + """ + Filters that the issues state must satisfy. + """ + state: WorkflowStateFilter - """In-array constraint.""" - in: [String!] + """ + Filters that the child issues must satisfy. + """ + children: IssueCollectionFilter - """Not-in-array constraint.""" - nin: [String!] + """ + Filters that the issues attachments must satisfy. + """ + attachments: AttachmentCollectionFilter """ - Equals case insensitive. Matches any values that matches the given string case insensitive. + [Internal] Comparator for the issues content. """ - eqIgnoreCase: String + searchableContent: ContentComparator """ - Not-equals case insensitive. Matches any values that don't match the given string case insensitive. + Comparator for filtering issues with relations. """ - neqIgnoreCase: String + hasRelatedRelations: RelationExistsComparator """ - Starts with constraint. Matches any values that start with the given string. + Comparator for filtering issues which are duplicates. """ - startsWith: String + hasDuplicateRelations: RelationExistsComparator """ - Doesn't start with constraint. Matches any values that don't start with the given string. + Comparator for filtering issues which are blocked. """ - notStartsWith: String + hasBlockedByRelations: RelationExistsComparator """ - Ends with constraint. Matches any values that end with the given string. + Comparator for filtering issues which are blocking. """ - endsWith: String + hasBlockingRelations: RelationExistsComparator """ - Doesn't end with constraint. Matches any values that don't end with the given string. + Comparator for the issues sla status. """ - notEndsWith: String + slaStatus: SlaStatusComparator - """Contains constraint. Matches any values that contain the given string.""" - contains: String + """ + Compound filters, all of which need to be matched by the issue. + """ + and: [IssueFilter!] """ - Contains case insensitive constraint. Matches any values that contain the given string case insensitive. + Compound filters, one of which need to be matched by the issue. """ - containsIgnoreCase: String + or: [IssueFilter!] +} +""" +Issue filtering options. +""" +input IssueCollectionFilter { """ - Doesn't contain constraint. Matches any values that don't contain the given string. + Comparator for the identifier. """ - notContains: String + id: IDComparator """ - Doesn't contain case insensitive constraint. Matches any values that don't contain the given string case insensitive. + Comparator for the created at date. """ - notContainsIgnoreCase: String -} + createdAt: DateComparator -"""Comparator for optional strings.""" -input NullableStringComparator { - """Equals constraint.""" - eq: String + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator - """Not-equals constraint.""" - neq: String + """ + Comparator for the issues number. + """ + number: NumberComparator - """In-array constraint.""" - in: [String!] + """ + Comparator for the issues title. + """ + title: StringComparator - """Not-in-array constraint.""" - nin: [String!] + """ + Comparator for the issues description. + """ + description: NullableStringComparator """ - Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. + Comparator for the issues priority. """ - null: Boolean + priority: NullableNumberComparator """ - Equals case insensitive. Matches any values that matches the given string case insensitive. + Comparator for the issues estimate. """ - eqIgnoreCase: String + estimate: EstimateComparator """ - Not-equals case insensitive. Matches any values that don't match the given string case insensitive. + Comparator for the issues started at date. """ - neqIgnoreCase: String + startedAt: NullableDateComparator """ - Starts with constraint. Matches any values that start with the given string. + Comparator for the issues triaged at date. """ - startsWith: String + triagedAt: NullableDateComparator """ - Doesn't start with constraint. Matches any values that don't start with the given string. + Comparator for the issues completed at date. """ - notStartsWith: String + completedAt: NullableDateComparator """ - Ends with constraint. Matches any values that end with the given string. + Comparator for the issues canceled at date. """ - endsWith: String + canceledAt: NullableDateComparator """ - Doesn't end with constraint. Matches any values that don't end with the given string. + Comparator for the issues auto closed at date. """ - notEndsWith: String + autoClosedAt: NullableDateComparator - """Contains constraint. Matches any values that contain the given string.""" - contains: String + """ + Comparator for the issues auto archived at date. + """ + autoArchivedAt: NullableDateComparator """ - Contains case insensitive constraint. Matches any values that contain the given string case insensitive. + Comparator for the issues due date. """ - containsIgnoreCase: String + dueDate: NullableTimelessDateComparator """ - Doesn't contain constraint. Matches any values that don't contain the given string. + Comparator for the issues snoozed until date. """ - notContains: String + snoozedUntilAt: NullableDateComparator """ - Doesn't contain case insensitive constraint. Matches any values that don't contain the given string case insensitive. + Filters that the issues assignee must satisfy. """ - notContainsIgnoreCase: String -} + assignee: NullableUserFilter -"""Team filtering options.""" -input TeamFilter { - """Comparator for the identifier.""" - id: IDComparator + """ + Filters that the last applied template must satisfy. + """ + lastAppliedTemplate: NullableTemplateFilter - """Comparator for the created at date.""" - createdAt: DateComparator + """ + Filters that the source must satisfy. + """ + sourceMetadata: SourceMetadataComparator - """Comparator for the updated at date.""" - updatedAt: DateComparator + """ + Filters that the issues creator must satisfy. + """ + creator: NullableUserFilter - """Comparator for the team name.""" - name: StringComparator + """ + Filters that the issue parent must satisfy. + """ + parent: NullableIssueFilter - """Comparator for the team key.""" - key: StringComparator + """ + Filters that the issues snoozer must satisfy. + """ + snoozedBy: NullableUserFilter - """Comparator for the team description.""" - description: NullableStringComparator + """ + Filters that issue labels must satisfy. + """ + labels: IssueLabelCollectionFilter - """Filters that the teams issues must satisfy.""" - issues: IssueCollectionFilter + """ + Filters that issue subscribers must satisfy. + """ + subscribers: UserCollectionFilter - """Compound filters, all of which need to be matched by the team.""" - and: [TeamFilter!] + """ + Filters that the issues team must satisfy. + """ + team: TeamFilter - """Compound filters, one of which need to be matched by the team.""" - or: [TeamFilter!] -} + """ + Filters that the issues project milestone must satisfy. + """ + projectMilestone: NullableProjectMilestoneFilter -"""Comparator for numbers.""" -input NumberComparator { - """Equals constraint.""" - eq: Float + """ + Filters that the issues comments must satisfy. + """ + comments: CommentCollectionFilter - """Not-equals constraint.""" - neq: Float + """ + Filters that the issues cycle must satisfy. + """ + cycle: NullableCycleFilter - """In-array constraint.""" - in: [Float!] + """ + Filters that the issues project must satisfy. + """ + project: NullableProjectFilter - """Not-in-array constraint.""" - nin: [Float!] + """ + Filters that the issues state must satisfy. + """ + state: WorkflowStateFilter """ - Less-than constraint. Matches any values that are less than the given value. + Filters that the child issues must satisfy. """ - lt: Float + children: IssueCollectionFilter """ - Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. + Filters that the issues attachments must satisfy. """ - lte: Float + attachments: AttachmentCollectionFilter """ - Greater-than constraint. Matches any values that are greater than the given value. + [Internal] Comparator for the issues content. """ - gt: Float + searchableContent: ContentComparator """ - Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. + Comparator for filtering issues with relations. """ - gte: Float -} + hasRelatedRelations: RelationExistsComparator -"""Comparator for optional numbers.""" -input NullableNumberComparator { - """Equals constraint.""" - eq: Float + """ + Comparator for filtering issues which are duplicates. + """ + hasDuplicateRelations: RelationExistsComparator - """Not-equals constraint.""" - neq: Float + """ + Comparator for filtering issues which are blocked. + """ + hasBlockedByRelations: RelationExistsComparator - """In-array constraint.""" - in: [Float!] + """ + Comparator for filtering issues which are blocking. + """ + hasBlockingRelations: RelationExistsComparator - """Not-in-array constraint.""" - nin: [Float!] + """ + Comparator for the issues sla status. + """ + slaStatus: SlaStatusComparator """ - Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. + Compound filters, all of which need to be matched by the issue. """ - null: Boolean + and: [IssueCollectionFilter!] """ - Less-than constraint. Matches any values that are less than the given value. + Compound filters, one of which need to be matched by the issue. """ - lt: Float + or: [IssueCollectionFilter!] """ - Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. + Filters that needs to be matched by some issues. """ - lte: Float + some: IssueFilter """ - Greater-than constraint. Matches any values that are greater than the given value. + Filters that needs to be matched by all issues. """ - gt: Float + every: IssueFilter """ - Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. + Comparator for the collection length. """ - gte: Float + length: NumberComparator } -"""User filtering options.""" -input UserFilter { - """Comparator for the identifier.""" - id: IDComparator - - """Comparator for the created at date.""" - createdAt: DateComparator - - """Comparator for the updated at date.""" - updatedAt: DateComparator - - """Comparator for the user's name.""" - name: StringComparator - - """Comparator for the user's display name.""" - displayName: StringComparator - - """Comparator for the user's email.""" - email: StringComparator - - """Comparator for the user's activity status.""" - active: BooleanComparator - - """Filters that the users assigned issues must satisfy.""" - assignedIssues: IssueCollectionFilter - - """Comparator for the user's admin status.""" - admin: BooleanComparator - +""" +A condition to match for the workflow to be triggered. +""" +input WorkflowCondition { """ - Filter based on the currently authenticated user. Set to true to filter for the authenticated user, false for any other user. + Trigger the workflow when an issue matches the filter. Can only be used when the trigger type is `Issue`. """ - isMe: BooleanComparator - - """Compound filters, all of which need to be matched by the user.""" - and: [UserFilter!] + issueFilter: IssueFilter - """Compound filters, one of which need to be matched by the user.""" - or: [UserFilter!] + """ + Triggers the workflow when a project matches the filter. Can only be used when the trigger type is `Project`. + """ + projectFilter: ProjectFilter } -"""User filtering options.""" -input NullableUserFilter { - """Comparator for the identifier.""" - id: IDComparator - - """Comparator for the created at date.""" - createdAt: DateComparator - - """Comparator for the updated at date.""" - updatedAt: DateComparator - - """Comparator for the user's name.""" - name: StringComparator - - """Comparator for the user's display name.""" - displayName: StringComparator - - """Comparator for the user's email.""" - email: StringComparator - - """Comparator for the user's activity status.""" - active: BooleanComparator - - """Filters that the users assigned issues must satisfy.""" - assignedIssues: IssueCollectionFilter - - """Comparator for the user's admin status.""" - admin: BooleanComparator - +input IssueCreateInput { """ - Filter based on the currently authenticated user. Set to true to filter for the authenticated user, false for any other user. + The identifier in UUID v4 format. If none is provided, the backend will generate one. """ - isMe: BooleanComparator - - """Filter based on the existence of the relation.""" - null: Boolean + id: String - """Compound filters, all of which need to be matched by the user.""" - and: [NullableUserFilter!] + """ + The title of the issue. + """ + title: String - """Compound filters, one of which need to be matched by the user.""" - or: [NullableUserFilter!] -} + """ + The issue description in markdown format. + """ + description: String -"""User filtering options.""" -input UserCollectionFilter { - """Comparator for the identifier.""" - id: IDComparator + """ + The issue description as a Prosemirror document. + """ + descriptionData: JSON - """Comparator for the created at date.""" - createdAt: DateComparator + """ + The identifier of the user to assign the issue to. + """ + assigneeId: String - """Comparator for the updated at date.""" - updatedAt: DateComparator + """ + The identifier of the parent issue. + """ + parentId: String - """Comparator for the user's name.""" - name: StringComparator + """ + The priority of the issue. 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. + """ + priority: Int - """Comparator for the user's display name.""" - displayName: StringComparator + """ + The estimated complexity of the issue. + """ + estimate: Int - """Comparator for the user's email.""" - email: StringComparator + """ + The identifiers of the users subscribing to this ticket. + """ + subscriberIds: [String!] - """Comparator for the user's activity status.""" - active: BooleanComparator + """ + The identifiers of the issue labels associated with this ticket. + """ + labelIds: [String!] - """Filters that the users assigned issues must satisfy.""" - assignedIssues: IssueCollectionFilter + """ + The identifier or key of the team associated with the issue. + """ + teamId: String! - """Comparator for the user's admin status.""" - admin: BooleanComparator + """ + The cycle associated with the issue. + """ + cycleId: String """ - Filter based on the currently authenticated user. Set to true to filter for the authenticated user, false for any other user. + The project associated with the issue. """ - isMe: BooleanComparator + projectId: String - """Compound filters, all of which need to be matched by the user.""" - and: [UserCollectionFilter!] + """ + The project milestone associated with the issue. + """ + projectMilestoneId: String - """Compound filters, one of which need to be matched by the user.""" - or: [UserCollectionFilter!] + """ + The ID of the last template applied to the issue. + """ + lastAppliedTemplateId: String - """Filters that needs to be matched by some users.""" - some: UserFilter + """ + The team state of the issue. + """ + stateId: String - """Filters that needs to be matched by all users.""" - every: UserFilter + """ + The comment the issue is referencing. + """ + referenceCommentId: String - """Comparator for the collection length.""" - length: NumberComparator -} + """ + The position of the issue in its column on the board view. + """ + boardOrder: Float -"""Issue label filtering options.""" -input IssueLabelFilter { - """Comparator for the identifier.""" - id: IDComparator + """ + The position of the issue related to other issues. + """ + sortOrder: Float - """Comparator for the created at date.""" - createdAt: DateComparator + """ + The position of the issue in parent's sub-issue list. + """ + subIssueSortOrder: Float - """Comparator for the updated at date.""" - updatedAt: DateComparator + """ + The date at which the issue is due. + """ + dueDate: TimelessDate - """Comparator for the name.""" - name: StringComparator + """ + Create issue as a user with the provided name. This option is only available to OAuth applications creating issues in `actor=application` mode. + """ + createAsUser: String - """Filters that the issue labels creator must satisfy.""" - creator: NullableUserFilter + """ + Provide an external user avatar URL. Can only be used in conjunction with the `createAsUser` options. This option is only available to OAuth applications creating comments in `actor=application` mode. + """ + displayIconUrl: String - """Filters that the issue labels team must satisfy.""" - team: TeamFilter + """ + Whether the passed sort order should be preserved + """ + preserveSortOrderOnCreate: Boolean - """Filters that the issue label's parent label must satisfy.""" - parent: IssueLabelFilter + """ + The date when the issue was created (e.g. if importing from another system). Must be a date in the past. If none is provided, the backend will generate the time as now. + """ + createdAt: DateTime - """Compound filters, all of which need to be matched by the label.""" - and: [IssueLabelFilter!] + """ + [Internal] The timestamp at which an issue will be considered in breach of SLA. + """ + slaBreachesAt: DateTime - """Compound filters, one of which need to be matched by the label.""" - or: [IssueLabelFilter!] + """ + The identifier of a template the issue should be created from. If other values are provided in the input, they will override template values. + """ + templateId: String } -"""Issue label filtering options.""" -input IssueLabelCollectionFilter { - """Comparator for the identifier.""" - id: IDComparator - - """Comparator for the created at date.""" - createdAt: DateComparator - - """Comparator for the updated at date.""" - updatedAt: DateComparator - - """Comparator for the name.""" - name: StringComparator - - """Filters that the issue labels creator must satisfy.""" - creator: NullableUserFilter - - """Filters that the issue labels team must satisfy.""" - team: TeamFilter - - """Filters that the issue label's parent label must satisfy.""" - parent: IssueLabelFilter - - """Compound filters, all of which need to be matched by the label.""" - and: [IssueLabelCollectionFilter!] +input IssueUpdateInput { + """ + The issue title. + """ + title: String - """Compound filters, one of which need to be matched by the label.""" - or: [IssueLabelCollectionFilter!] + """ + The issue description in markdown format. + """ + description: String - """Filters that needs to be matched by some issue labels.""" - some: IssueLabelFilter + """ + The issue description as a Prosemirror document. + """ + descriptionData: JSON - """Filters that needs to be matched by all issue labels.""" - every: IssueLabelFilter + """ + The identifier of the user to assign the issue to. + """ + assigneeId: String - """Comparator for the collection length.""" - length: NumberComparator -} + """ + The identifier of the parent issue. + """ + parentId: String -"""Comparator for timeless dates.""" -input TimelessDateComparator { - """Equals constraint.""" - eq: TimelessDate + """ + The priority of the issue. 0 = No priority, 1 = Urgent, 2 = High, 3 = Normal, 4 = Low. + """ + priority: Int - """Not-equals constraint.""" - neq: TimelessDate + """ + The estimated complexity of the issue. + """ + estimate: Int - """In-array constraint.""" - in: [TimelessDate!] + """ + The identifiers of the users subscribing to this ticket. + """ + subscriberIds: [String!] - """Not-in-array constraint.""" - nin: [TimelessDate!] + """ + The identifiers of the issue labels associated with this ticket. + """ + labelIds: [String!] """ - Less-than constraint. Matches any values that are less than the given value. + The identifier or key of the team associated with the issue. """ - lt: TimelessDate + teamId: String """ - Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. + The cycle associated with the issue. """ - lte: TimelessDate + cycleId: String """ - Greater-than constraint. Matches any values that are greater than the given value. + The project associated with the issue. """ - gt: TimelessDate + projectId: String """ - Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. + The project milestone associated with the issue. """ - gte: TimelessDate -} - -input NullableTimelessDateComparator { - """Equals constraint.""" - eq: TimelessDate - - """Not-equals constraint.""" - neq: TimelessDate - - """In-array constraint.""" - in: [TimelessDate!] - - """Not-in-array constraint.""" - nin: [TimelessDate!] + projectMilestoneId: String """ - Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. + The ID of the last template applied to the issue. """ - null: Boolean + lastAppliedTemplateId: String """ - Less-than constraint. Matches any values that are less than the given value. + The team state of the issue. """ - lt: TimelessDate + stateId: String """ - Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. + The position of the issue in its column on the board view. """ - lte: TimelessDate + boardOrder: Float """ - Greater-than constraint. Matches any values that are greater than the given value. + The position of the issue related to other issues. """ - gt: TimelessDate + sortOrder: Float """ - Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. + The position of the issue in parent's sub-issue list. """ - gte: TimelessDate -} - -"""Cycle filtering options.""" -input CycleFilter { - """Comparator for the identifier.""" - id: IDComparator - - """Comparator for the created at date.""" - createdAt: DateComparator - - """Comparator for the updated at date.""" - updatedAt: DateComparator - - """Comparator for the cycle number.""" - number: NumberComparator - - """Comparator for the cycle name.""" - name: StringComparator - - """Comparator for the cycle start date.""" - startsAt: DateComparator - - """Comparator for the cycle ends at date.""" - endsAt: DateComparator - - """Comparator for the cycle completed at date.""" - completedAt: DateComparator - - """Comparator for the filtering active cycle.""" - isActive: BooleanComparator + subIssueSortOrder: Float - """Comparator for the filtering next cycle.""" - isNext: BooleanComparator + """ + The date at which the issue is due. + """ + dueDate: TimelessDate - """Comparator for the filtering previous cycle.""" - isPrevious: BooleanComparator + """ + Whether the issue has been trashed. + """ + trashed: Boolean - """Filters that the cycles team must satisfy.""" - team: TeamFilter + """ + [Internal] The timestamp at which an issue will be considered in breach of SLA. + """ + slaBreachesAt: DateTime - """Filters that the cycles issues must satisfy.""" - issues: IssueCollectionFilter + """ + The time until an issue will be snoozed in Triage view. + """ + snoozedUntilAt: DateTime - """Compound filters, all of which need to be matched by the cycle.""" - and: [CycleFilter!] + """ + The identifier of the user who snoozed the issue. + """ + snoozedById: String - """Compound filters, one of which need to be matched by the cycle.""" - or: [CycleFilter!] + """ + The identifiers of the companies associated with this ticket. + """ + companyIds: [String!] } -"""Cycle filtering options.""" -input NullableCycleFilter { - """Comparator for the identifier.""" - id: IDComparator +input AuthApiKeyCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Comparator for the created at date.""" - createdAt: DateComparator + """ + The API key value. + """ + key: String! +} - """Comparator for the updated at date.""" - updatedAt: DateComparator +input ApiKeyCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Comparator for the cycle number.""" - number: NumberComparator + """ + The API key value. + """ + key: String! - """Comparator for the cycle name.""" - name: StringComparator + """ + The label for the API key. + """ + label: String! +} - """Comparator for the cycle start date.""" - startsAt: DateComparator +input AttachmentCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Comparator for the cycle ends at date.""" - endsAt: DateComparator + """ + The attachment title. + """ + title: String! - """Comparator for the cycle completed at date.""" - completedAt: DateComparator + """ + The attachment subtitle. + """ + subtitle: String - """Comparator for the filtering active cycle.""" - isActive: BooleanComparator + """ + Attachment location which is also used as an unique identifier for the attachment. If another attachment is created with the same `url` value, existing record is updated instead. + """ + url: String! - """Comparator for the filtering next cycle.""" - isNext: BooleanComparator + """ + The issue to associate the attachment with. + """ + issueId: String! - """Comparator for the filtering previous cycle.""" - isPrevious: BooleanComparator + """ + 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 - """Filters that the cycles team must satisfy.""" - team: TeamFilter + """ + Attachment metadata object with string and number values. + """ + metadata: JSONObject - """Filters that the cycles issues must satisfy.""" - issues: IssueCollectionFilter + """ + Indicates if attachments for the same source application should be grouped in the Linear UI. + """ + groupBySource: Boolean - """Filter based on the existence of the relation.""" - null: Boolean + """ + Create a linked comment with markdown body. + """ + commentBody: String - """Compound filters, one of which need to be matched by the cycle.""" - and: [NullableCycleFilter!] + """ + Create a linked comment with Prosemirror body. Please use `commentBody` instead + """ + commentBodyData: JSONObject - """Compound filters, one of which need to be matched by the cycle.""" - or: [NullableCycleFilter!] + """ + Create attachment as a user with the provided name. This option is only available to OAuth applications creating attachments in `actor=application` mode. + """ + createAsUser: String } -"""Milestone filtering options.""" -input MilestoneFilter { - """Comparator for the identifier.""" - id: IDComparator - - """Comparator for the created at date.""" - createdAt: DateComparator - - """Comparator for the updated at date.""" - updatedAt: DateComparator - - """Comparator for the milestone name.""" - name: StringComparator - - """Comparator for the milestone sort order.""" - sortOrder: NumberComparator +input AttachmentUpdateInput { + """ + The attachment title. + """ + title: String! - """Filters that the milestones projects must satisfy.""" - projects: ProjectCollectionFilter + """ + The attachment subtitle. + """ + subtitle: String - """Compound filters, all of which need to be matched by the milestone.""" - and: [MilestoneFilter!] + """ + Attachment metadata object with string and number values. + """ + metadata: JSONObject - """Compound filters, one of which need to be matched by the milestone.""" - or: [MilestoneFilter!] + """ + 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 } -"""User filtering options.""" -input NullableMilestoneFilter { - """Comparator for the identifier.""" - id: IDComparator - - """Comparator for the created at date.""" - createdAt: DateComparator - - """Comparator for the updated at date.""" - updatedAt: DateComparator - - """Comparator for the milestone name.""" - name: StringComparator +input GoogleUserAccountAuthInput { + """ + Code returned from Google's OAuth flow. + """ + code: String! - """Comparator for the milestone sort order.""" - sortOrder: NumberComparator + """ + The URI to redirect the user to. + """ + redirectUri: String - """Filters that the milestones projects must satisfy.""" - projects: ProjectCollectionFilter + """ + The timezone of the user's browser. + """ + timezone: String! - """Filter based on the existence of the relation.""" - null: Boolean + """ + The identifiers of the teams to auto-join. + """ + teamIdsToJoin: [String!] - """Compound filters, all of which need to be matched by the milestone.""" - and: [NullableMilestoneFilter!] + """ + Signup code. + """ + signupCode: String - """Compound filters, one of which need to be matched by the milestone.""" - or: [NullableMilestoneFilter!] + """ + An optional invite link for an organization. + """ + inviteLink: String } -"""Roadmap filtering options.""" -input RoadmapFilter { - """Comparator for the identifier.""" - id: IDComparator - - """Comparator for the created at date.""" - createdAt: DateComparator - - """Comparator for the updated at date.""" - updatedAt: DateComparator - - """Comparator for the roadmap name.""" - name: StringComparator +input TokenUserAccountAuthInput { + """ + The email which to login via the magic login code. + """ + email: String! - """Comparator for the roadmap slug ID.""" - slugId: StringComparator + """ + The magic login code. + """ + token: String! - """Filters that the roadmap creator must satisfy.""" - creator: UserFilter + """ + The timezone of the user's browser. + """ + timezone: String! - """Compound filters, all of which need to be matched by the roadmap.""" - and: [RoadmapFilter!] + """ + The identifiers of the teams to auto-join. + """ + teamIdsToJoin: [String!] - """Compound filters, one of which need to be matched by the roadmap.""" - or: [RoadmapFilter!] + """ + An optional invite link for an organization. + """ + inviteLink: String } -"""Roadmap collection filtering options.""" -input RoadmapCollectionFilter { - """Comparator for the identifier.""" - id: IDComparator - - """Comparator for the created at date.""" - createdAt: DateComparator - - """Comparator for the updated at date.""" - updatedAt: DateComparator - - """Comparator for the roadmap name.""" - name: StringComparator - - """Comparator for the roadmap slug ID.""" - slugId: StringComparator - - """Filters that the roadmap creator must satisfy.""" - creator: UserFilter - - """Compound filters, all of which need to be matched by the roadmap.""" - and: [RoadmapCollectionFilter!] +input EmailUserAccountAuthChallengeInput { + """ + The email for which to generate the magic login code. + """ + email: String! - """Compound filters, one of which need to be matched by the roadmap.""" - or: [RoadmapCollectionFilter!] + """ + Whether the login was requested from the desktop app. + """ + isDesktop: Boolean - """Filters that needs to be matched by some roadmaps.""" - some: RoadmapFilter + """ + Auth code for the client initiating the sequence. + """ + clientAuthCode: String - """Filters that needs to be matched by all roadmaps.""" - every: RoadmapFilter + """ + Signup code. + """ + signupCode: String - """Comparator for the collection length.""" - length: NumberComparator + """ + The organization invite link to associate with this authentication. + """ + inviteLink: String } -"""Project filtering options.""" -input ProjectFilter { - """Comparator for the identifier.""" - id: IDComparator - - """Comparator for the created at date.""" - createdAt: DateComparator +input OnboardingCustomerSurvey { + companyRole: String + companySize: String +} - """Comparator for the updated at date.""" - updatedAt: DateComparator +input CreateOrganizationInput { + """ + The name of the organization. + """ + name: String! - """Comparator for the project name.""" - name: StringComparator + """ + The URL key of the organization. + """ + urlKey: String! - """Comparator for the project slug ID.""" - slugId: StringComparator + """ + Whether the organization should allow email domain access. + """ + domainAccess: Boolean - """Comparator for the project state.""" - state: StringComparator + """ + The timezone of the organization, passed in by client. + """ + timezone: String - """Comparator for the project start date.""" - startDate: NullableDateComparator + """ + JSON serialized UTM parameters associated with the creation of the workspace. + """ + utm: String +} - """Comparator for the project target date.""" - targetDate: NullableDateComparator +input JoinOrganizationInput { + """ + The identifier of the organization. + """ + organizationId: String! - """Filters that the projects creator must satisfy.""" - creator: UserFilter + """ + An optional invite link for an organization. + """ + inviteLink: String +} - """Filters that the projects lead must satisfy.""" - lead: NullableUserFilter +input CommentCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Filters that the projects members must satisfy.""" - members: UserFilter + """ + The comment content in markdown format. + """ + body: String - """Filters that the projects milestones must satisfy.""" - milestone: NullableMilestoneFilter + """ + The comment content as a Prosemirror document. + """ + bodyData: JSON - """Filters that the projects issues must satisfy.""" - issues: IssueCollectionFilter + """ + The issue to associate the comment with. + """ + issueId: String - """Filters that the projects roadmaps must satisfy.""" - roadmaps: RoadmapCollectionFilter + """ + The prject update to associate the comment with. + """ + projectUpdateId: String - """Compound filters, all of which need to be matched by the project.""" - and: [ProjectFilter!] + """ + The document content to associate the comment with. + """ + documentContentId: String - """Compound filters, one of which need to be matched by the project.""" - or: [ProjectFilter!] -} + """ + The parent comment under which to nest a current comment. + """ + parentId: String -"""Project filtering options.""" -input NullableProjectFilter { - """Comparator for the identifier.""" - id: IDComparator + """ + Create comment as a user with the provided name. This option is only available to OAuth applications creating comments in `actor=application` mode. + """ + createAsUser: String - """Comparator for the created at date.""" - createdAt: DateComparator + """ + Provide an external user avatar URL. Can only be used in conjunction with the `createAsUser` options. This option is only available to OAuth applications creating comments in `actor=application` mode. + """ + displayIconUrl: String - """Comparator for the updated at date.""" - updatedAt: DateComparator + """ + The date when the comment was created (e.g. if importing from another system). Must be a date in the past. If none is provided, the backend will generate the time as now. + """ + createdAt: DateTime - """Comparator for the project name.""" - name: StringComparator + """ + Flag to prevent auto subscription to the issue the comment is created on. + """ + doNotSubscribeToIssue: Boolean +} - """Comparator for the project slug ID.""" - slugId: StringComparator +input CommentUpdateInput { + """ + The comment content. + """ + body: String - """Comparator for the project state.""" - state: StringComparator + """ + The comment content as a Prosemirror document. + """ + bodyData: JSON +} - """Comparator for the project start date.""" - startDate: NullableDateComparator +input ContactCreateInput { + """ + The type of support contact. + """ + type: String! - """Comparator for the project target date.""" - targetDate: NullableDateComparator + """ + The message the user sent. + """ + message: String! - """Filters that the projects creator must satisfy.""" - creator: UserFilter + """ + User's operating system. + """ + operatingSystem: String - """Filters that the projects lead must satisfy.""" - lead: NullableUserFilter + """ + User's browser information. + """ + browser: String - """Filters that the projects members must satisfy.""" - members: UserFilter + """ + User's device information. + """ + device: String - """Filters that the projects milestones must satisfy.""" - milestone: NullableMilestoneFilter + """ + User's Linear client information. + """ + clientVersion: String - """Filters that the projects issues must satisfy.""" - issues: IssueCollectionFilter + """ + How disappointed the user would be if they could no longer use Linear. + """ + disappointmentRating: Int +} - """Filters that the projects roadmaps must satisfy.""" - roadmaps: RoadmapCollectionFilter +""" +[INTERNAL] Input for sending a message to the Linear Sales team +""" +input ContactSalesCreateInput { + """ + Name of the person requesting information. + """ + name: String! - """Filter based on the existence of the relation.""" - null: Boolean + """ + Work email of the person requesting information. + """ + email: String! - """Compound filters, all of which need to be matched by the project.""" - and: [NullableProjectFilter!] + """ + Size of the company. + """ + companySize: String - """Compound filters, one of which need to be matched by the project.""" - or: [NullableProjectFilter!] + """ + The message the user sent. + """ + message: String } -"""Project filtering options.""" -input ProjectCollectionFilter { - """Comparator for the identifier.""" - id: IDComparator - - """Comparator for the created at date.""" - createdAt: DateComparator - - """Comparator for the updated at date.""" - updatedAt: DateComparator +input CustomViewCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Comparator for the project name.""" - name: StringComparator + """ + The name of the custom view. + """ + name: String! - """Comparator for the project slug ID.""" - slugId: StringComparator + """ + The description of the custom view. + """ + description: String - """Comparator for the project state.""" - state: StringComparator + """ + The icon of the custom view. + """ + icon: String - """Comparator for the project start date.""" - startDate: NullableDateComparator + """ + The color of the icon of the custom view. + """ + color: String - """Comparator for the project target date.""" - targetDate: NullableDateComparator + """ + The id of the team associated with the custom view. + """ + teamId: String - """Filters that the projects creator must satisfy.""" - creator: UserFilter + """ + The owner of the custom view. + """ + ownerId: String - """Filters that the projects lead must satisfy.""" - lead: NullableUserFilter + """ + The filters applied to issues in the custom view. + """ + filters: JSONObject - """Filters that the projects members must satisfy.""" - members: UserFilter + """ + The filter applied to issues in the custom view. + """ + filterData: JSONObject - """Filters that the projects milestones must satisfy.""" - milestone: NullableMilestoneFilter + """ + [ALPHA] The project filter applied to issues in the custom view. + """ + projectFilterData: JSONObject - """Filters that the projects issues must satisfy.""" - issues: IssueCollectionFilter + """ + Whether the custom view is shared with everyone in the organization. + """ + shared: Boolean +} - """Filters that the projects roadmaps must satisfy.""" - roadmaps: RoadmapCollectionFilter +input CustomViewUpdateInput { + """ + The name of the custom view. + """ + name: String - """Compound filters, all of which need to be matched by the project.""" - and: [ProjectCollectionFilter!] + """ + The description of the custom view. + """ + description: String - """Compound filters, one of which need to be matched by the project.""" - or: [ProjectCollectionFilter!] + """ + The icon of the custom view. + """ + icon: String - """Filters that needs to be matched by some projects.""" - some: ProjectFilter + """ + The color of the icon of the custom view. + """ + color: String - """Filters that needs to be matched by all projects.""" - every: ProjectFilter + """ + The id of the team associated with the custom view. + """ + teamId: String - """Comparator for the collection length.""" - length: NumberComparator -} + """ + The owner of the custom view. + """ + ownerId: String -"""Workflow state filtering options.""" -input WorkflowStateFilter { - """Comparator for the identifier.""" - id: IDComparator + """ + The filters applied to issues in the custom view. + """ + filters: JSONObject - """Comparator for the created at date.""" - createdAt: DateComparator + """ + The filter applied to issues in the custom view. + """ + filterData: JSONObject - """Comparator for the updated at date.""" - updatedAt: DateComparator + """ + [ALPHA] The project filter applied to issues in the custom view. + """ + projectFilterData: JSONObject - """Comparator for the workflow state name.""" - name: StringComparator + """ + Whether the custom view is shared with everyone in the organization. + """ + shared: Boolean +} - """Comparator for the workflow state description.""" - description: StringComparator +input CycleCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Comparator for the workflow state position.""" - position: NumberComparator + """ + The custom name of the cycle. + """ + name: String - """Comparator for the workflow state type.""" - type: StringComparator + """ + The description of the cycle. + """ + description: String - """Filters that the workflow states team must satisfy.""" - team: TeamFilter + """ + The team to associate the cycle with. + """ + teamId: String! - """Filters that the workflow states issues must satisfy.""" - issues: IssueCollectionFilter + """ + The start date of the cycle. + """ + startsAt: DateTime! """ - Compound filters, all of which need to be matched by the workflow state. + The end date of the cycle. """ - and: [WorkflowStateFilter!] + endsAt: DateTime! """ - Compound filters, one of which need to be matched by the workflow state. + The completion time of the cycle. If null, the cycle hasn't been completed. """ - or: [WorkflowStateFilter!] + completedAt: DateTime } -"""Comparator for strings.""" -input NestedStringComparator { - """Equals constraint.""" - eq: String - - """Not-equals constraint.""" - neq: String +input CycleUpdateInput { + """ + The custom name of the cycle. + """ + name: String - """In-array constraint.""" - in: [String!] + """ + The description of the cycle. + """ + description: String - """Not-in-array constraint.""" - nin: [String!] + """ + The start date of the cycle. + """ + startsAt: DateTime """ - Equals case insensitive. Matches any values that matches the given string case insensitive. + The end date of the cycle. """ - eqIgnoreCase: String + endsAt: DateTime """ - Not-equals case insensitive. Matches any values that don't match the given string case insensitive. + The end date of the cycle. """ - neqIgnoreCase: String + completedAt: DateTime +} +input DocumentCreateInput { """ - Starts with constraint. Matches any values that start with the given string. + The identifier in UUID v4 format. If none is provided, the backend will generate one. """ - startsWith: String + id: String """ - Doesn't start with constraint. Matches any values that don't start with the given string. + The title of the document. """ - notStartsWith: String + title: String! """ - Ends with constraint. Matches any values that end with the given string. + The icon of the document. """ - endsWith: String + icon: String """ - Doesn't end with constraint. Matches any values that don't end with the given string. + The color of the icon. """ - notEndsWith: String + color: String - """Contains constraint. Matches any values that contain the given string.""" - contains: String + """ + [Internal] The document content as a Prosemirror document. + """ + contentData: JSONObject """ - Contains case insensitive constraint. Matches any values that contain the given string case insensitive. + The document content as markdown. """ - containsIgnoreCase: String + content: String """ - Doesn't contain constraint. Matches any values that don't contain the given string. + Related project for the document. """ - notContains: String + projectId: String! """ - Doesn't contain case insensitive constraint. Matches any values that don't contain the given string case insensitive. + The ID of the last template applied to the document. """ - notContainsIgnoreCase: String + lastAppliedTemplateId: String } -"""Attachment filtering options.""" -input AttachmentFilter { - """Comparator for the identifier.""" - id: IDComparator - - """Comparator for the created at date.""" - createdAt: DateComparator - - """Comparator for the updated at date.""" - updatedAt: DateComparator +input DocumentUpdateInput { + """ + The title of the document. + """ + title: String - """Comparator for the title.""" - title: StringComparator + """ + The icon of the document. + """ + icon: String - """Comparator for the subtitle.""" - subtitle: NullableStringComparator + """ + The color of the icon. + """ + color: String - """Comparator for the url.""" - url: StringComparator + """ + [Internal] The document content as a Prosemirror document. + """ + contentData: JSONObject - """Filters that the attachments creator must satisfy.""" - creator: NullableUserFilter + """ + The document content as markdown. + """ + content: String - """Comparator for the source type.""" - sourceType: NestedStringComparator + """ + Related project for the document. + """ + projectId: String - """Compound filters, all of which need to be matched by the attachment.""" - and: [AttachmentFilter!] + """ + The ID of the last template applied to the document. + """ + lastAppliedTemplateId: String +} - """Compound filters, one of which need to be matched by the attachment.""" - or: [AttachmentFilter!] +input EmailSubscribeInput { + """ + [INTERNAL] Email to subscribe. + """ + email: String! } -"""Attachment collection filtering options.""" -input AttachmentCollectionFilter { - """Comparator for the identifier.""" - id: IDComparator +input EmailUnsubscribeInput { + """ + Email type to unsubscribed from. + """ + type: String! - """Comparator for the created at date.""" - createdAt: DateComparator + """ + The user's email validation token. + """ + token: String! - """Comparator for the updated at date.""" - updatedAt: DateComparator + """ + The identifier of the user. + """ + userId: String! +} - """Comparator for the title.""" - title: StringComparator +input EmojiCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Comparator for the subtitle.""" - subtitle: NullableStringComparator + """ + The name of the custom emoji. + """ + name: String! - """Comparator for the url.""" - url: StringComparator + """ + The URL for the emoji. + """ + url: String! +} - """Filters that the attachments creator must satisfy.""" - creator: NullableUserFilter +input FavoriteCreateInput { + """ + The identifier. If none is provided, the backend will generate one. + """ + id: String - """Comparator for the source type.""" - sourceType: NestedStringComparator + """ + The name of the favorite folder. + """ + folderName: String - """Compound filters, all of which need to be matched by the attachment.""" - and: [AttachmentCollectionFilter!] + """ + The parent folder of the favorite. + """ + parentId: String - """Compound filters, one of which need to be matched by the attachment.""" - or: [AttachmentCollectionFilter!] + """ + The identifier of the issue to favorite. + """ + issueId: String - """Filters that needs to be matched by some attachments.""" - some: AttachmentFilter + """ + The identifier of the project to favorite. + """ + projectId: String - """Filters that needs to be matched by all attachments.""" - every: AttachmentFilter + """ + The identifier of the project team to favorite. + """ + projectTeamId: String - """Comparator for the collection length.""" - length: NumberComparator -} + """ + The type of the predefined view to favorite. + """ + predefinedViewType: String -"""Comment filtering options.""" -input CommentFilter { - """Comparator for the identifier.""" - id: IDComparator + """ + The identifier of team for the predefined view to favorite. + """ + predefinedViewTeamId: String - """Comparator for the created at date.""" - createdAt: DateComparator + """ + The identifier of the cycle to favorite. + """ + cycleId: String - """Comparator for the updated at date.""" - updatedAt: DateComparator + """ + The identifier of the custom view to favorite. + """ + customViewId: String - """Comparator for the comments body.""" - body: StringComparator + """ + The identifier of the document to favorite. + """ + documentId: String - """Filters that the comments creator must satisfy.""" - user: UserFilter + """ + The identifier of the roadmap to favorite. + """ + roadmapId: String - """Filters that the comments issue must satisfy.""" - issue: IssueFilter + """ + The identifier of the label to favorite. + """ + labelId: String - """Compound filters, all of which need to be matched by the comment.""" - and: [CommentFilter!] + """ + The identifier of the user to favorite. + """ + userId: String - """Compound filters, one of which need to be matched by the comment.""" - or: [CommentFilter!] + """ + The position of the item in the favorites list. + """ + sortOrder: Float } -"""Comment filtering options.""" -input CommentCollectionFilter { - """Comparator for the identifier.""" - id: IDComparator - - """Comparator for the created at date.""" - createdAt: DateComparator +input FavoriteUpdateInput { + """ + The position of the item in the favorites list. + """ + sortOrder: Float - """Comparator for the updated at date.""" - updatedAt: DateComparator + """ + The identifier (in UUID v4 format) of the folder to move the favorite under. + """ + parentId: String - """Comparator for the comments body.""" - body: StringComparator + """ + The name of the favorite folder. + """ + folderName: String +} - """Filters that the comments creator must satisfy.""" - user: UserFilter +input IntegrationRequestInput { + """ + Email associated with the request. + """ + email: String - """Filters that the comments issue must satisfy.""" - issue: IssueFilter + """ + Name of the requested integration. + """ + name: String! +} - """Compound filters, all of which need to be matched by the comment.""" - and: [CommentCollectionFilter!] +input JiraConfigurationInput { + """ + The Jira personal access token. + """ + accessToken: String! - """Compound filters, one of which need to be matched by the comment.""" - or: [CommentCollectionFilter!] + """ + The Jira user's email address. + """ + email: String! - """Filters that needs to be matched by some comments.""" - some: CommentFilter + """ + The Jira installation hostname. + """ + hostname: String! - """Filters that needs to be matched by all comments.""" - every: CommentFilter + """ + The Jira project keys to scope the integration to. + """ + project: String +} - """Comparator for the collection length.""" - length: NumberComparator +input AirbyteConfigurationInput { + """ + Linear export API key. + """ + apiKey: String! } -"""[Internal] Comparator for content.""" -input ContentComparator { - """[Internal] Contains constraint.""" - contains: String +input IntegrationsSettingsCreateInput { + """ + Whether to send a Slack message when a new issue is created for the project or the team. + """ + slackIssueCreated: Boolean - """[Internal] Not-contains constraint.""" - notContains: String -} + """ + Whether to send a Slack message when a comment is created on any of the project or team's issues. + """ + slackIssueNewComment: Boolean -"""Comparator for estimates.""" -input EstimateComparator { - """Equals constraint.""" - eq: Float + """ + Whether to send a Slack message when any of the project or team's issues change to completed or cancelled. + """ + slackIssueStatusChangedDone: Boolean - """Not-equals constraint.""" - neq: Float + """ + Whether to send a Slack message when any of the project or team's issues has a change in status. + """ + slackIssueStatusChangedAll: Boolean - """In-array constraint.""" - in: [Float!] + """ + Whether to send a Slack message when a project update is created. + """ + slackProjectUpdateCreated: Boolean - """Not-in-array constraint.""" - nin: [Float!] + """ + Whether to send a Slack message when a project update is created to team channels. + """ + slackProjectUpdateCreatedToTeam: Boolean """ - Null constraint. Matches any non-null values if the given value is false, otherwise it matches null values. + Whether to send a Slack message when a project update is created to workspace channel. """ - null: Boolean + slackProjectUpdateCreatedToWorkspace: Boolean """ - Less-than constraint. Matches any values that are less than the given value. + Whether to send a Slack message when a new issue is added to triage. """ - lt: Float + slackIssueAddedToTriage: Boolean """ - Less-than-or-equal constraint. Matches any values that are less than or equal to the given value. + Whether to send a Slack message when an SLA is at high risk """ - lte: Float + slackIssueSlaHighRisk: Boolean """ - Greater-than constraint. Matches any values that are greater than the given value. + Whether to receive notification when an SLA has breached on Slack. """ - gt: Float + slackIssueSlaBreached: Boolean """ - Greater-than-or-equal constraint. Matches any values that are greater than or equal to the given value. + The identifier in UUID v4 format. If none is provided, the backend will generate one. """ - gte: Float + id: String - """Compound filters, all of which need to be matched by the estimate.""" - or: [NullableNumberComparator!] + """ + The identifier of the team to create settings for. + """ + teamId: String - """Compound filters, one of which need to be matched by the estimate.""" - and: [NullableNumberComparator!] + """ + The identifier of the project to create settings for. + """ + projectId: String } -"""Comparator for relation existence.""" -input RelationExistsComparator { - """Equals constraint.""" - eq: Boolean +input IntegrationsSettingsUpdateInput { + """ + Whether to send a Slack message when a new issue is created for the project or the team. + """ + slackIssueCreated: Boolean - """Not equals constraint.""" - neq: Boolean -} + """ + Whether to send a Slack message when a comment is created on any of the project or team's issues. + """ + slackIssueNewComment: Boolean -"""Issue filtering options.""" -input NullableIssueFilter { - """Comparator for the identifier.""" - id: IDComparator + """ + Whether to send a Slack message when any of the project or team's issues change to completed or cancelled. + """ + slackIssueStatusChangedDone: Boolean - """Comparator for the created at date.""" - createdAt: DateComparator + """ + Whether to send a Slack message when any of the project or team's issues has a change in status. + """ + slackIssueStatusChangedAll: Boolean - """Comparator for the updated at date.""" - updatedAt: DateComparator + """ + Whether to send a Slack message when a project update is created. + """ + slackProjectUpdateCreated: Boolean - """Comparator for the issues number.""" - number: NumberComparator + """ + Whether to send a Slack message when a project update is created to team channels. + """ + slackProjectUpdateCreatedToTeam: Boolean - """Comparator for the issues title.""" - title: StringComparator + """ + Whether to send a Slack message when a project update is created to workspace channel. + """ + slackProjectUpdateCreatedToWorkspace: Boolean - """Comparator for the issues description.""" - description: NullableStringComparator + """ + Whether to send a Slack message when a new issue is added to triage. + """ + slackIssueAddedToTriage: Boolean - """Comparator for the issues priority.""" - priority: NullableNumberComparator + """ + Whether to send a Slack message when an SLA is at high risk + """ + slackIssueSlaHighRisk: Boolean - """Comparator for the issues estimate.""" - estimate: EstimateComparator + """ + Whether to receive notification when an SLA has breached on Slack. + """ + slackIssueSlaBreached: Boolean +} - """Comparator for the issues started at date.""" - startedAt: NullableDateComparator +input IntegrationTemplateCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Comparator for the issues completed at date.""" - completedAt: NullableDateComparator + """ + The identifier of the integration. + """ + integrationId: String! - """Comparator for the issues canceled at date.""" - canceledAt: NullableDateComparator + """ + The identifier of the template. + """ + templateId: String! - """Comparator for the issues auto closed at date.""" - autoClosedAt: NullableDateComparator + """ + The foreign identifier in the other service. + """ + foreignEntityId: String +} - """Comparator for the issues auto archived at date.""" - autoArchivedAt: NullableDateComparator +""" +Issue import mapping input +""" +input IssueImportMappingInput { + """ + The mapping configuration for users + """ + users: JSONObject - """Comparator for the issues due date.""" - dueDate: NullableTimelessDateComparator + """ + The mapping configuration for workflow states + """ + workflowStates: JSONObject - """Comparator for the issues snoozed until date.""" - snoozedUntilAt: NullableDateComparator + """ + The mapping configuration for epics + """ + epics: JSONObject +} - """Filters that the issues assignee must satisfy.""" - assignee: NullableUserFilter +input IssueImportUpdateInput { + """ + The mapping configuration for the import. + """ + mapping: JSONObject! +} - """Filters that the issues creator must satisfy.""" - creator: NullableUserFilter +input IssueLabelCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Filters that the issue parent must satisfy.""" - parent: NullableIssueFilter + """ + The name of the label. + """ + name: String! - """Filters that the issues snoozer must satisfy.""" - snoozedBy: NullableUserFilter + """ + The description of the label. + """ + description: String - """Filters that issue labels must satisfy.""" - labels: IssueLabelCollectionFilter + """ + The color of the label. + """ + color: String - """Filters that issue subscribers must satisfy.""" - subscribers: UserCollectionFilter + """ + The identifier of the parent label. + """ + parentId: String - """Filters that the issues team must satisfy.""" - team: TeamFilter + """ + The team associated with the label. If not given, the label will be associated with the entire workspace. + """ + teamId: String +} - """Filters that the issues comments must satisfy.""" - comments: CommentCollectionFilter +input IssueLabelUpdateInput { + """ + The name of the label. + """ + name: String - """Filters that the issues cycle must satisfy.""" - cycle: NullableCycleFilter + """ + The description of the label. + """ + description: String - """Filters that the issues project must satisfy.""" - project: NullableProjectFilter + """ + The identifier of the parent label. + """ + parentId: String - """Filters that the issues state must satisfy.""" - state: WorkflowStateFilter + """ + The color of the label. + """ + color: String +} - """Filters that the child issues must satisfy.""" - children: IssueCollectionFilter +input IssueRelationCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Filters that the issues attachments must satisfy.""" - attachments: AttachmentCollectionFilter + """ + The type of relation of the issue to the related issue. + """ + type: IssueRelationType! - """[Internal] Comparator for the issues content.""" - searchableContent: ContentComparator + """ + The identifier of the issue that is related to another issue. + """ + issueId: String! - """Comparator for filtering issues with relations.""" - hasRelatedRelations: RelationExistsComparator + """ + The identifier of the related issue. + """ + relatedIssueId: String! +} - """Comparator for filtering issues which are duplicates.""" - hasDuplicateRelations: RelationExistsComparator +""" +The type of the issue relation. +""" +enum IssueRelationType { + blocks + duplicate + related +} - """Comparator for filtering issues which are blocked.""" - hasBlockedByRelations: RelationExistsComparator +input IssueRelationUpdateInput { + """ + The type of relation of the issue to the related issue. + """ + type: String - """Comparator for filtering issues which are blocking.""" - hasBlockingRelations: RelationExistsComparator + """ + The identifier of the issue that is related to another issue. + """ + issueId: String - """Filter based on the existence of the relation.""" - null: Boolean + """ + The identifier of the related issue. + """ + relatedIssueId: String +} - """Compound filters, all of which need to be matched by the issue.""" - and: [NullableIssueFilter!] +input NotificationUpdateInput { + """ + The time when notification was marked as read. + """ + readAt: DateTime - """Compound filters, one of which need to be matched by the issue.""" - or: [NullableIssueFilter!] + """ + The time until a notification will be snoozed. After that it will appear in the inbox again. + """ + snoozedUntilAt: DateTime + + """ + The id of the project update related to the notification. + """ + projectUpdateId: String } -"""Issue filtering options.""" -input IssueFilter { - """Comparator for the identifier.""" - id: IDComparator +""" +Describes the type and id of the entity to target for notifications. +""" +input NotificationEntityInput { + """ + The id of the issue related to the notification. + """ + issueId: String - """Comparator for the created at date.""" - createdAt: DateComparator + """ + The id of the project related to the notification. + """ + projectId: String + + """ + The id of the project update related to the notification. + """ + projectUpdateId: String + + """ + The id of the OAuth client approval related to the notification. + """ + oauthClientApprovalId: String +} - """Comparator for the updated at date.""" - updatedAt: DateComparator +input NotificationSubscriptionCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Comparator for the issues number.""" - number: NumberComparator + """ + The identifier of the custom view to subscribe to. + """ + customViewId: String - """Comparator for the issues title.""" - title: StringComparator + """ + The identifier of the cycle to subscribe to. + """ + cycleId: String - """Comparator for the issues description.""" - description: NullableStringComparator + """ + The identifier of the label to subscribe to. + """ + labelId: String - """Comparator for the issues priority.""" - priority: NullableNumberComparator + """ + The identifier of the project to subscribe to. + """ + projectId: String - """Comparator for the issues estimate.""" - estimate: EstimateComparator + """ + The identifier of the team to subscribe to. + """ + teamId: String - """Comparator for the issues started at date.""" - startedAt: NullableDateComparator + """ + The identifier of the user to subscribe to. + """ + userId: String - """Comparator for the issues completed at date.""" - completedAt: NullableDateComparator + """ + The type of view to which the notification subscription context is associated with. + """ + contextViewType: ContextViewType - """Comparator for the issues canceled at date.""" - canceledAt: NullableDateComparator + """ + The type of user view to which the notification subscription context is associated with. + """ + userContextViewType: UserContextViewType - """Comparator for the issues auto closed at date.""" - autoClosedAt: NullableDateComparator + """ + The types of notifications of the subscription. + """ + notificationSubscriptionTypes: [String!] - """Comparator for the issues auto archived at date.""" - autoArchivedAt: NullableDateComparator + """ + Whether the subscription is active. + """ + active: Boolean +} - """Comparator for the issues due date.""" - dueDate: NullableTimelessDateComparator +input NotificationSubscriptionUpdateInput { + """ + The types of notifications of the subscription. + """ + notificationSubscriptionTypes: [String!] - """Comparator for the issues snoozed until date.""" - snoozedUntilAt: NullableDateComparator + """ + Whether the subscription is active. + """ + active: Boolean +} - """Filters that the issues assignee must satisfy.""" - assignee: NullableUserFilter +input OrganizationDomainCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Filters that the issues creator must satisfy.""" - creator: NullableUserFilter + """ + The domain name to add. + """ + name: String! - """Filters that the issue parent must satisfy.""" - parent: NullableIssueFilter + """ + The email address to which to send the verification code. + """ + verificationEmail: String - """Filters that the issues snoozer must satisfy.""" - snoozedBy: NullableUserFilter + """ + The authentication type this domain is for. + """ + authType: String = "general" +} - """Filters that issue labels must satisfy.""" - labels: IssueLabelCollectionFilter +input OrganizationDomainVerificationInput { + """ + The identifier in UUID v4 format of the domain being verified. + """ + organizationDomainId: String! - """Filters that issue subscribers must satisfy.""" - subscribers: UserCollectionFilter + """ + The verification code sent via email. + """ + verificationCode: String! +} - """Filters that the issues team must satisfy.""" - team: TeamFilter +input OrganizationInviteCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Filters that the issues comments must satisfy.""" - comments: CommentCollectionFilter + """ + The email of the invitee. + """ + email: String! - """Filters that the issues cycle must satisfy.""" - cycle: NullableCycleFilter + """ + What user role the invite should grant. + """ + role: UserRoleType = user - """Filters that the issues project must satisfy.""" - project: NullableProjectFilter + """ + The message to send to the invitee. + """ + message: String - """Filters that the issues state must satisfy.""" - state: WorkflowStateFilter + """ + The teams that the user has been invited to. + """ + teamIds: [String!] - """Filters that the child issues must satisfy.""" - children: IssueCollectionFilter + """ + [INTERNAL] Optional metadata about the invite + """ + metadata: JSONObject +} - """Filters that the issues attachments must satisfy.""" - attachments: AttachmentCollectionFilter +input OrganizationInviteUpdateInput { + """ + The teams that the user has been invited to. + """ + teamIds: [String!]! +} - """[Internal] Comparator for the issues content.""" - searchableContent: ContentComparator +input OrganizationUpdateInput { + """ + The name of the organization. + """ + name: String - """Comparator for filtering issues with relations.""" - hasRelatedRelations: RelationExistsComparator + """ + The logo of the organization. + """ + logoUrl: String - """Comparator for filtering issues which are duplicates.""" - hasDuplicateRelations: RelationExistsComparator + """ + The URL key of the organization. + """ + urlKey: String - """Comparator for filtering issues which are blocked.""" - hasBlockedByRelations: RelationExistsComparator + """ + How git branches are formatted. If null, default formatting will be used. + """ + gitBranchFormat: String - """Comparator for filtering issues which are blocking.""" - hasBlockingRelations: RelationExistsComparator + """ + Whether the Git integration linkback messages should be sent for private repositories. + """ + gitLinkbackMessagesEnabled: Boolean - """Compound filters, all of which need to be matched by the issue.""" - and: [IssueFilter!] + """ + Whether the Git integration linkback messages should be sent for public repositories. + """ + gitPublicLinkbackMessagesEnabled: Boolean - """Compound filters, one of which need to be matched by the issue.""" - or: [IssueFilter!] -} + """ + Whether the organization is using roadmap. + """ + roadmapEnabled: Boolean -"""Issue filtering options.""" -input IssueCollectionFilter { - """Comparator for the identifier.""" - id: IDComparator + """ + The frequency at which project updates are sent. + """ + projectUpdatesReminderFrequency: ProjectUpdateReminderFrequency - """Comparator for the created at date.""" - createdAt: DateComparator + """ + The day at which project updates are sent. + """ + projectUpdateRemindersDay: Day - """Comparator for the updated at date.""" - updatedAt: DateComparator + """ + The hour at which project updates are sent. + """ + projectUpdateRemindersHour: Float - """Comparator for the issues number.""" - number: NumberComparator + """ + Whether the organization has opted for reduced customer support attachment information. + """ + reducedPersonalInformation: Boolean - """Comparator for the issues title.""" - title: StringComparator + """ + Whether the organization has opted for having to approve all OAuth applications for install. + """ + oauthAppReview: Boolean - """Comparator for the issues description.""" - description: NullableStringComparator + """ + Linear Preview feature flags + """ + linearPreviewFlags: JSONObject - """Comparator for the issues priority.""" - priority: NullableNumberComparator + """ + List of services that are allowed to be used for login. + """ + allowedAuthServices: [String!] - """Comparator for the issues estimate.""" - estimate: EstimateComparator + """ + Internal. Whether SLAs have been enabled for the organization. + """ + slaEnabled: Boolean - """Comparator for the issues started at date.""" - startedAt: NullableDateComparator + """ + Which day count to use for SLA calculation. + """ + slaDayCount: SLADayCountType - """Comparator for the issues completed at date.""" - completedAt: NullableDateComparator + """ + Whether member users are allowed to send invites. + """ + allowMembersToInvite: Boolean +} - """Comparator for the issues canceled at date.""" - canceledAt: NullableDateComparator +input DeleteOrganizationInput { + """ + The deletion code to confirm operation. + """ + deletionCode: String! +} - """Comparator for the issues auto closed at date.""" - autoClosedAt: NullableDateComparator +input ProjectLinkCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Comparator for the issues auto archived at date.""" - autoArchivedAt: NullableDateComparator + """ + The URL of the link. + """ + url: String! - """Comparator for the issues due date.""" - dueDate: NullableTimelessDateComparator + """ + The label for the link. + """ + label: String! - """Comparator for the issues snoozed until date.""" - snoozedUntilAt: NullableDateComparator + """ + Related project for the link. + """ + projectId: String! +} - """Filters that the issues assignee must satisfy.""" - assignee: NullableUserFilter +input ProjectLinkUpdateInput { + """ + The URL of the link. + """ + url: String - """Filters that the issues creator must satisfy.""" - creator: NullableUserFilter + """ + The label for the link. + """ + label: String +} - """Filters that the issue parent must satisfy.""" - parent: NullableIssueFilter +input ProjectMilestoneCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Filters that the issues snoozer must satisfy.""" - snoozedBy: NullableUserFilter + """ + The name of the project milestone. + """ + name: String! - """Filters that issue labels must satisfy.""" - labels: IssueLabelCollectionFilter + """ + The description of the project milestone in markdown format. + """ + description: String - """Filters that issue subscribers must satisfy.""" - subscribers: UserCollectionFilter + """ + The description of the project milestone as a Prosemirror document. + """ + descriptionData: JSONObject - """Filters that the issues team must satisfy.""" - team: TeamFilter + """ + The planned target date of the project milestone. + """ + targetDate: TimelessDate - """Filters that the issues comments must satisfy.""" - comments: CommentCollectionFilter + """ + Related project for the project milestone. + """ + projectId: String! - """Filters that the issues cycle must satisfy.""" - cycle: NullableCycleFilter + """ + The sort order for the project milestone within a project. + """ + sortOrder: Float +} - """Filters that the issues project must satisfy.""" - project: NullableProjectFilter +input ProjectMilestoneUpdateInput { + """ + The name of the project milestone. + """ + name: String - """Filters that the issues state must satisfy.""" - state: WorkflowStateFilter + """ + The description of the project milestone in markdown format. + """ + description: String - """Filters that the child issues must satisfy.""" - children: IssueCollectionFilter + """ + The description of the project milestone as a Prosemirror document. + """ + descriptionData: JSONObject - """Filters that the issues attachments must satisfy.""" - attachments: AttachmentCollectionFilter + """ + The planned target date of the project milestone. + """ + targetDate: TimelessDate - """[Internal] Comparator for the issues content.""" - searchableContent: ContentComparator + """ + The sort order for the project milestone within a project. + """ + sortOrder: Float +} - """Comparator for filtering issues with relations.""" - hasRelatedRelations: RelationExistsComparator +input ProjectCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Comparator for filtering issues which are duplicates.""" - hasDuplicateRelations: RelationExistsComparator + """ + The name of the project. + """ + name: String! - """Comparator for filtering issues which are blocked.""" - hasBlockedByRelations: RelationExistsComparator + """ + The icon of the project. + """ + icon: String - """Comparator for filtering issues which are blocking.""" - hasBlockingRelations: RelationExistsComparator + """ + The color of the project. + """ + color: String - """Compound filters, all of which need to be matched by the issue.""" - and: [IssueCollectionFilter!] + """ + The state of the project. + """ + state: String - """Compound filters, one of which need to be matched by the issue.""" - or: [IssueCollectionFilter!] + """ + The description for the project. + """ + description: String - """Filters that needs to be matched by some issues.""" - some: IssueFilter + """ + The identifiers of the teams this project is associated with. + """ + teamIds: [String!]! - """Filters that needs to be matched by all issues.""" - every: IssueFilter + """ + The ID of the issue from which that project is created. + """ + convertedFromIssueId: String - """Comparator for the collection length.""" - length: NumberComparator -} + """ + The ID of the last template applied to the project. + """ + lastAppliedTemplateId: String -input InsightPayload { - """Insight id where to send data to.""" - insightId: String! + """ + The identifier of the project lead. + """ + leadId: String - """Table to run analytical query against.""" - table: FactsTable! + """ + The identifiers of the members of this project. + """ + memberIds: [String!] - """Chart type of the visualization.""" - chartType: ChartType! + """ + The planned start date of the project. + """ + startDate: TimelessDate - """Filters that needs to be matched by some issues.""" - issueFilter: IssueFilter! - measures: [Measure!]! - dimensions: [Dimension!]! + """ + The planned target date of the project. + """ + targetDate: TimelessDate - """If set to true, analytics data will include archived data""" - includeArchived: Boolean + """ + The sort order for the project within shared views. + """ + sortOrder: Float } -"""Different facts tables to run analytical queries against.""" -enum FactsTable { - issueSnapshot - issue -} +input ProjectUpdateInput { + """ + The state of the project. + """ + state: String -"""All possible chart types.""" -enum ChartType { - nivoBar - nivoScatterPlot -} + """ + The name of the project. + """ + name: String -"""Object describing a measure in analytical query.""" -input Measure { - """name of the measure""" - name: MeasureName! + """ + The description for the project. + """ + description: String - """aggregation function to be applied on the measure column""" - aggregation: Aggregation! -} + """ + The ID of the issue from which that project is created. + """ + convertedFromIssueId: String -"""All possible measures that can be applied to analytical queries.""" -enum MeasureName { - id - effort - cycleTime - timeToTriage -} + """ + The ID of the last template applied to the project. + """ + lastAppliedTemplateId: String -"""Different aggregation functions for analytical queries.""" -enum Aggregation { - count - avg - max - min - sum - median - p90 - p95 - p99 -} + """ + The icon of the project. + """ + icon: String -"""Object describing a dimension in analytical query, value to group by.""" -input Dimension { - """name of the dimension column""" - name: DimensionName! + """ + The color of the project. + """ + color: String - """aggregation function to be applied on date dimensions""" - dateAggregation: DateAggregation -} + """ + The identifiers of the teams this project is associated with. + """ + teamIds: [String!] -"""All possible dimensions that can be applied to analytical queries.""" -enum DimensionName { - stateName - priority - estimate - cycle - label - stateType - creator - assignee - snapshotAt - completedAt - dueDate - createdAt - project - team -} + """ + The time until which project update reminders are paused. + """ + projectUpdateRemindersPausedUntilAt: DateTime -"""Different date aggregation functions for date dimension.""" -enum DateAggregation { - day - week - month - year - thirtyMinutes -} + """ + The identifier of the project lead. + """ + leadId: String -input EventCreateInput { - """The category of the event to create.""" - category: String! + """ + The identifiers of the members of this project. + """ + memberIds: [String!] - """The subject of the event.""" - subject: String! + """ + The planned start date of the project. + """ + startDate: TimelessDate - """The target identifier of the event.""" - targetId: String + """ + The planned target date of the project. + """ + targetDate: TimelessDate - """The value of the event.""" - value: Float + """ + The date when the project was completed. + """ + completedAt: DateTime - """Additional data of the event, encoded as JSON.""" - data: JSON -} + """ + The date when the project was canceled. + """ + canceledAt: DateTime -input ApiKeyCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + Whether to send new issue notifications to Slack. """ - id: String + slackNewIssue: Boolean - """The label for the API key.""" - label: String! + """ + Whether to send new issue comment notifications to Slack. + """ + slackIssueComments: Boolean - """The API key value.""" - key: String! + """ + Whether to send issue status update notifications to Slack. + """ + slackIssueStatuses: Boolean + + """ + The sort order for the project in shared views. + """ + sortOrder: Float } -input AttachmentCreateInput { +input ProjectUpdateInteractionCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + The identifier. If none is provided, the backend will generate one. """ id: String - """The attachment title.""" - title: String! - - """The attachment subtitle.""" - subtitle: String + """ + The id of the project update that has been interacted with. + """ + projectUpdateId: String! """ - Attachment location which is also used as an unique identifier for the attachment. If another attachment is created with the same `url` value, existing record is updated instead. + The time at which the user read the project update. """ - url: String! + readAt: DateTime! +} - """The issue to associate the attachment with.""" - issueId: String! +""" +ProjectUpdate filtering options. +""" +input ProjectUpdateFilter { + """ + Comparator for the identifier. + """ + id: IDComparator """ - 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. + Comparator for the created at date. """ - iconUrl: String + createdAt: DateComparator - """Attachment metadata object with string and number values.""" - metadata: JSONObject + """ + Comparator for the updated at date. + """ + updatedAt: DateComparator """ - Indicates if attachments for the same source application should be grouped in the Linear UI. + Filters that the project update creator must satisfy. """ - groupBySource: Boolean + user: UserFilter - """Create a linked comment with markdown body.""" - commentBody: String + """ + Filters that the project update project must satisfy. + """ + project: ProjectFilter """ - Create a linked comment with Prosemirror body. Please use `commentBody` instead + Compound filters, all of which need to be matched by the ProjectUpdate. """ - commentBodyData: JSONObject + and: [ProjectUpdateFilter!] """ - Create attachment as a user with the provided name. This option is only available to OAuth applications creating attachments in `actor=application` mode. + Compound filters, one of which need to be matched by the ProjectUpdate. """ - createAsUser: String + or: [ProjectUpdateFilter!] } -input AttachmentUpdateInput { - """The attachment title.""" - title: String! +input ProjectUpdateCreateInput { + """ + The identifier. If none is provided, the backend will generate one. + """ + id: String - """The attachment subtitle.""" - subtitle: String + """ + The content of the project update in markdown format. + """ + body: String - """Attachment metadata object with string and number values.""" - metadata: JSONObject + """ + The content of the project update as a Prosemirror document. + """ + bodyData: JSON """ - 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. + The project to associate the project update with. """ - iconUrl: String + projectId: String! + + """ + The health of the project at the time of the update. + """ + health: ProjectUpdateHealthType } -"""Audit entry filtering options.""" -input AuditEntryFilter { - """Comparator for the identifier.""" - id: IDComparator +input ProjectUpdateUpdateInput { + """ + The content of the project update in markdown format. + """ + body: String - """Comparator for the created at date.""" - createdAt: DateComparator + """ + The content of the project update as a Prosemirror document. + """ + bodyData: JSON - """Comparator for the updated at date.""" - updatedAt: DateComparator + """ + The health of the project at the time of the update. + """ + health: ProjectUpdateHealthType +} - """Comparator for the type.""" - type: StringComparator +input PushSubscriptionCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Comparator for the IP address.""" - ip: StringComparator + """ + The user identifier of the subscription. + """ + userId: String - """Comparator for the country code.""" - countryCode: StringComparator + """ + The data of the subscription in stringified JSON format. + """ + data: String! - """Filters that the audit entry actor must satisfy.""" - actor: NullableUserFilter + """ + Whether this is a subscription payload for Google Cloud Messaging or Apple Push Notification service + """ + type: PushSubscriptionType = web } -input OnboardingCustomerSurvey { - companyRole: String - companySize: String +""" +The different push subscription types +""" +enum PushSubscriptionType { + web + apple + appleDevelopment + firebase } -input CreateOrganizationInput { - """The name of the organization.""" - name: String! - - """The URL key of the organization.""" - urlKey: String! - - """Whether the organization should allow email domain access.""" - domainAccess: Boolean - - """The timezone of the organization, passed in by client.""" - timezone: String +input ReactionCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one + """ + id: String """ - JSON serialized UTM parameters associated with the creation of the workspace. + The emoji the user reacted with. """ - utm: String -} + emoji: String -input JoinOrganizationInput { - """The identifier of the organization.""" - organizationId: String! -} + """ + The comment to associate the reaction with. + """ + commentId: String -input EmailUserAccountAuthChallengeInput { - """The email for which to generate the magic login code.""" - email: String! + """ + The project update to associate the reaction with. + """ + projectUpdateId: String - """Whether the login was requested from the desktop app.""" - isDesktop: Boolean + """ + The issue to associate the reaction with. + """ + issueId: String +} - """Auth code for the client initiating the sequence.""" - clientAuthCode: String +input RoadmapCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """Signup code.""" - signupCode: String -} + """ + The name of the roadmap. + """ + name: String! -input TokenUserAccountAuthInput { - """The email which to login via the magic login code.""" - email: String! + """ + The description of the roadmap. + """ + description: String - """The magic login code.""" - token: String! + """ + The owner of the roadmap + """ + ownerId: String - """The timezone of the user's browser.""" - timezone: String! + """ + The sort order of the roadmap within the organization. + """ + sortOrder: Float - """The identifiers of the teams to auto-join.""" - teamIdsToJoin: [String!] + """ + The roadmap's color. + """ + color: String } -input GoogleUserAccountAuthInput { - """Code returned from Google's OAuth flow.""" - code: String! +input RoadmapUpdateInput { + """ + The name of the roadmap. + """ + name: String - """The URI to redirect the user to.""" - redirectUri: String + """ + The description of the roadmap. + """ + description: String - """The timezone of the user's browser.""" - timezone: String! + """ + The owner of the roadmap + """ + ownerId: String - """The identifiers of the teams to auto-join.""" - teamIdsToJoin: [String!] + """ + The sort order of the roadmap within the organization. + """ + sortOrder: Float - """Signup code.""" - signupCode: String + """ + The roadmap's color. + """ + color: String } -input CommentCreateInput { +input RoadmapToProjectCreateInput { """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String - """The comment content in markdown format.""" - body: String - - """The comment content as a Prosemirror document.""" - bodyData: JSON - - """The issue to associate the comment with.""" - issueId: String! - - """[Internal] The parent under which to nest the comment.""" - parentId: String - """ - Create comment as a user with the provided name. This option is only available to OAuth applications creating comments in `actor=application` mode. + The identifier of the project. """ - createAsUser: String + projectId: String! """ - Provide an external user avatar URL. Can only be used in conjunction with the `createAsUser` options. This option is only available to OAuth applications creating comments in `actor=application` mode. + The identifier of the roadmap. """ - displayIconUrl: String + roadmapId: String! """ - The date when the comment was created (e.g. if importing from another system). Must be a date in the past. If none is provided, the backend will generate the time as now. + The sort order for the project within its organization. """ - createdAt: DateTime + sortOrder: Float } -input CommentUpdateInput { - """The comment content.""" - body: String - - """The comment content as a Prosemirror document.""" - bodyData: JSON +input RoadmapToProjectUpdateInput { + """ + The sort order for the project within its organization. + """ + sortOrder: Float } -input ContactCreateInput { - """The type of support contact.""" - type: String! - - """The message the user sent.""" - message: String! - - """User's operating system.""" - operatingSystem: String +input TeamMembershipCreateInput { + """ + The identifier in UUID v4 format. If none is provided, the backend will generate one. + """ + id: String - """User's browser information.""" - browser: String + """ + The identifier of the user associated with the membership. + """ + userId: String! - """User's device information.""" - device: String + """ + The identifier of the team associated with the membership. + """ + teamId: String! - """User's Linear client information.""" - clientVersion: String + """ + Internal. Whether the user is the owner of the team. + """ + owner: Boolean - """How disappointed the user would be if they could no longer use Linear.""" - disappointmentRating: Int + """ + The position of the item in the users list. + """ + sortOrder: Float } -"""[INTERNAL] Input for sending a message to the Linear Sales team""" -input ContactSalesCreateInput { - """Name of the person requesting information.""" - name: String! - - """Work email of the person requesting information.""" - email: String! +input TeamMembershipUpdateInput { + """ + Internal. Whether the user is the owner of the team. + """ + owner: Boolean - """The message the user sent.""" - message: String + """ + The position of the item in the users list. + """ + sortOrder: Float } -input CustomViewCreateInput { +input TeamCreateInput { """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String - """The name of the custom view.""" + """ + The name of the team. + """ name: String! - """The description of the custom view.""" + """ + The description of the team. + """ description: String - """The icon of the custom view.""" - icon: String - - """The color of the icon of the custom view.""" - color: String - - """The id of the team associated with the custom view.""" - teamId: String - - """The filters applied to issues in the custom view.""" - filters: JSONObject - - """The filter applied to issues in the custom view.""" - filterData: JSONObject - - """Whether the custom view is shared with everyone in the organization.""" - shared: Boolean -} - -input CustomViewUpdateInput { - """The name of the custom view.""" - name: String - - """The description of the custom view.""" - description: String + """ + The key of the team. If not given, the key will be generated based on the name of the team. + """ + key: String - """The icon of the custom view.""" + """ + The icon of the team. + """ icon: String - """The color of the icon of the custom view.""" + """ + The color of the team. + """ color: String - """The id of the team associated with the custom view.""" - teamId: String - - """The filters applied to issues in the custom view.""" - filters: JSONObject - - """The filter applied to issues in the custom view.""" - filterData: JSONObject - - """Whether the custom view is shared with everyone in the organization.""" - shared: Boolean -} + """ + The organization associated with the team. + """ + organizationId: String -input CycleCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + Whether the team uses cycles. """ - id: String + cyclesEnabled: Boolean - """The custom name of the cycle.""" - name: String + """ + The day of the week that a new cycle starts. + """ + cycleStartDay: Float - """The description of the cycle.""" - description: String + """ + The duration of each cycle in weeks. + """ + cycleDuration: Int - """The team to associate the cycle with.""" - teamId: String! + """ + The cooldown time after each cycle in weeks. + """ + cycleCooldownTime: Int - """The start date of the cycle.""" - startsAt: DateTime! + """ + Auto assign started issues to current active cycle setting. + """ + cycleIssueAutoAssignStarted: Boolean - """The end date of the cycle.""" - endsAt: DateTime! + """ + Auto assign completed issues to current active cycle setting. + """ + cycleIssueAutoAssignCompleted: Boolean """ - The completion time of the cycle. If null, the cycle hasn't been completed. + Only allow issues issues with cycles in Active Issues. """ - completedAt: DateTime -} + cycleLockToActive: Boolean -input CycleUpdateInput { - """The custom name of the cycle.""" - name: String + """ + How many upcoming cycles to create. + """ + upcomingCycleCount: Float - """The description of the cycle.""" - description: String + """ + Whether triage mode is enabled for the team. + """ + triageEnabled: Boolean - """The start date of the cycle.""" - startsAt: DateTime + """ + Whether an issue needs to have a priority set before leaving triage. + """ + requirePriorityToLeaveTriage: Boolean - """The end date of the cycle.""" - endsAt: DateTime + """ + The timezone of the team. + """ + timezone: String - """The end date of the cycle.""" - completedAt: DateTime -} + """ + Whether issues without priority should be sorted first. + """ + issueOrderingNoPriorityFirst: Boolean -input DocumentCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + The issue estimation type to use. Must be one of "notUsed", "exponential", "fibonacci", "linear", "tShirt". """ - id: String + issueEstimationType: String - """The title of the document.""" - title: String! + """ + Whether to allow zeros in issues estimates. + """ + issueEstimationAllowZero: Boolean - """The icon of the document.""" - icon: String + """ + Whether to move issues to bottom of the column when changing state. + """ + issueSortOrderDefaultToBottom: Boolean - """The color of the icon.""" - color: String + """ + Whether to add additional points to the estimate scale. + """ + issueEstimationExtended: Boolean - """The document content as a Prosemirror document.""" - contentData: JSONObject + """ + What to use as an default estimate for unestimated issues. + """ + defaultIssueEstimate: Float - """The document content as markdown.""" - content: String + """ + Whether to group recent issue history entries. + """ + groupIssueHistory: Boolean - """Related project for the document.""" - projectId: String! -} + """ + The identifier of the default template for members of this team. + """ + defaultTemplateForMembersId: String -input DocumentUpdateInput { - """The title of the document.""" - title: String + """ + The identifier of the default template for non-members of this team. + """ + defaultTemplateForNonMembersId: String - """The icon of the document.""" - icon: String + """ + The identifier of the default project template of this team. + """ + defaultProjectTemplateId: String - """The color of the icon.""" - color: String + """ + Internal. Whether the team is private or not. + """ + private: Boolean - """The document content as a Prosemirror document.""" - contentData: JSONObject + """ + Period after which issues are automatically closed, in months. + """ + autoClosePeriod: Float - """The document content as markdown.""" - content: String + """ + The canceled workflow state which auto closed issues will be set to. + """ + autoCloseStateId: String - """Related project for the document.""" - projectId: String -} + """ + Period after which closed and completed issues are automatically archived, in months. 0 means disabled. + """ + autoArchivePeriod: Float -input EmailSubscribeInput { - """Email to subscribe.""" - email: String! + """ + The workflow state into which issues are moved when they are marked as a duplicate of another issue. + """ + markedAsDuplicateWorkflowStateId: String } -input EmailUnsubscribeInput { - """Email type to unsubscribed from.""" - type: String! - - """The user's email validation token.""" - token: String! +input TeamUpdateInput { + """ + The name of the team. + """ + name: String - """The identifier of the user.""" - userId: String! -} + """ + The description of the team. + """ + description: String -input EmojiCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + The key of the team. """ - id: String + key: String - """The name of the custom emoji.""" - name: String! + """ + The icon of the team. + """ + icon: String - """The URL for the emoji.""" - url: String! -} + """ + The color of the team. + """ + color: String -input FavoriteCreateInput { - """The identifier. If none is provided, the backend will generate one.""" - id: String + """ + Whether the team uses cycles. + """ + cyclesEnabled: Boolean - """The name of the favorite folder.""" - folderName: String + """ + The day of the week that a new cycle starts. + """ + cycleStartDay: Float - """The parent folder of the favorite.""" - parentId: String + """ + The duration of each cycle in weeks. + """ + cycleDuration: Int - """The identifier of the issue to favorite.""" - issueId: String + """ + The cooldown time after each cycle in weeks. + """ + cycleCooldownTime: Int - """The identifier of the project to favorite.""" - projectId: String + """ + Auto assign started issues to current active cycle setting. + """ + cycleIssueAutoAssignStarted: Boolean - """The identifier of the project team to favorite.""" - projectTeamId: String + """ + Auto assign completed issues to current active cycle setting. + """ + cycleIssueAutoAssignCompleted: Boolean - """The type of the predefined view to favorite.""" - predefinedViewType: String + """ + Only allow issues with cycles in Active Issues. + """ + cycleLockToActive: Boolean - """The identifier of team for the predefined view to favorite.""" - predefinedViewTeamId: String + """ + Whether the first cycle should start in the current or the next week. + """ + cycleEnabledStartWeek: String - """The identifier of the cycle to favorite.""" - cycleId: String + """ + How many upcoming cycles to create. + """ + upcomingCycleCount: Float - """The identifier of the custom view to favorite.""" - customViewId: String + """ + The timezone of the team. + """ + timezone: String - """The identifier of the document to favorite.""" - documentId: String + """ + Whether issues without priority should be sorted first. + """ + issueOrderingNoPriorityFirst: Boolean - """The identifier of the roadmap to favorite.""" - roadmapId: String + """ + The issue estimation type to use. Must be one of "notUsed", "exponential", "fibonacci", "linear", "tShirt". + """ + issueEstimationType: String - """The identifier of the label to favorite.""" - labelId: String + """ + Whether to allow zeros in issues estimates. + """ + issueEstimationAllowZero: Boolean - """The position of the item in the favorites list.""" - sortOrder: Float -} + """ + Whether to move issues to bottom of the column when changing state. + """ + issueSortOrderDefaultToBottom: Boolean -input FavoriteUpdateInput { - """The position of the item in the favorites list.""" - sortOrder: Float + """ + Whether to add additional points to the estimate scale. + """ + issueEstimationExtended: Boolean """ - The identifier (in UUID v4 format) of the folder to move the favorite under. + What to use as an default estimate for unestimated issues. """ - parentId: String + defaultIssueEstimate: Float - """The name of the favorite folder.""" - folderName: String -} + """ + The workflow state into which issues are moved when a draft PR has been opened. + """ + draftWorkflowStateId: String -input FeedbackCreateInput { - """The feedback the user sent.""" - feedback: String! + """ + The workflow state into which issues are moved when a PR has been opened. + """ + startWorkflowStateId: String """ - How disappointed the user would be if he/she could no longer use Linear. + The workflow state into which issues are moved when a review has been requested for the PR. """ - disappointmentRating: Float! -} + reviewWorkflowStateId: String -"""Initiative filtering options.""" -input InitiativeFilter { - """Comparator for the identifier.""" - id: IDComparator + """ + The workflow state into which issues are moved when a PR is ready to be merged. + """ + mergeableWorkflowStateId: String - """Comparator for the created at date.""" - createdAt: DateComparator + """ + The workflow state into which issues are moved when a PR has been merged. + """ + mergeWorkflowStateId: String - """Comparator for the updated at date.""" - updatedAt: DateComparator + """ + Whether to send new issue notifications to Slack. + """ + slackNewIssue: Boolean - """Comparator for the initiative name.""" - name: StringComparator + """ + Whether to send new issue comment notifications to Slack. + """ + slackIssueComments: Boolean - """Comparator for the initiative sort order.""" - sortOrder: NumberComparator + """ + Whether to send issue status update notifications to Slack. + """ + slackIssueStatuses: Boolean - """Filters that the initiatives projects must satisfy.""" - projects: ProjectCollectionFilter + """ + Whether to group recent issue history entries. + """ + groupIssueHistory: Boolean - """Compound filters, all of which need to be matched by the initiative.""" - and: [InitiativeFilter!] + """ + The identifier of the default template for members of this team. + """ + defaultTemplateForMembersId: String - """Compound filters, one of which need to be matched by the initiative.""" - or: [InitiativeFilter!] -} + """ + The identifier of the default template for non-members of this team. + """ + defaultTemplateForNonMembersId: String -"""User filtering options.""" -input NullableInitiativeFilter { - """Comparator for the identifier.""" - id: IDComparator + """ + The identifier of the default project template of this team. + """ + defaultProjectTemplateId: String - """Comparator for the created at date.""" - createdAt: DateComparator + """ + Whether the team is private or not. + """ + private: Boolean - """Comparator for the updated at date.""" - updatedAt: DateComparator + """ + Whether triage mode is enabled for the team. + """ + triageEnabled: Boolean - """Comparator for the initiative name.""" - name: StringComparator + """ + Whether an issue needs to have a priority set before leaving triage. + """ + requirePriorityToLeaveTriage: Boolean - """Comparator for the initiative sort order.""" - sortOrder: NumberComparator + """ + Default status for newly created issues. + """ + defaultIssueStateId: String - """Filters that the initiatives projects must satisfy.""" - projects: ProjectCollectionFilter + """ + Period after which issues are automatically closed, in months. + """ + autoClosePeriod: Float - """Filter based on the existence of the relation.""" - null: Boolean + """ + The canceled workflow state which auto closed issues will be set to. + """ + autoCloseStateId: String - """Compound filters, all of which need to be matched by the initiative.""" - and: [NullableInitiativeFilter!] + """ + Period after which closed and completed issues are automatically archived, in months. + """ + autoArchivePeriod: Float - """Compound filters, one of which need to be matched by the initiative.""" - or: [NullableInitiativeFilter!] + """ + The workflow state into which issues are moved when they are marked as a duplicate of another issue. + """ + markedAsDuplicateWorkflowStateId: String } -input InitiativeCreateInput { +input TemplateCreateInput { """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String - """The name of the initiative.""" - name: String! - - """The sort order of the initiative.""" - sortOrder: Float -} + """ + The template type, e.g. 'issue'. + """ + type: String! -input InitiativeUpdateInput { - """The name of the initiative.""" - name: String + """ + The identifier or key of the team associated with the template. If not given, the template will be shared across all teams. + """ + teamId: String - """The sort order of the initiative.""" - sortOrder: Float -} + """ + The template name. + """ + name: String! -input IntegrationRequestInput { - """Email associated with the request.""" - email: String + """ + The template description. + """ + description: String - """Name of the requested integration.""" - name: String! + """ + The template data as JSON encoded attributes of the type of entity, such as an issue. + """ + templateData: JSON! } -input JiraConfigurationInput { - """The Jira personal access token.""" - accessToken: String! - - """The Jira user's email address.""" - email: String! +input TemplateUpdateInput { + """ + The template name. + """ + name: String - """The Jira installation hostname.""" - hostname: String! + """ + The template description. + """ + description: String - """The Jira project keys to scope the integration to.""" - project: String -} + """ + The identifier or key of the team associated with the template. If set to null, the template will be shared across all teams. + """ + teamId: String -input AirbyteConfigurationInput { - """Linear export API key.""" - apiKey: String! + """ + The template data as JSON encoded attributes of the type of entity, such as an issue. + """ + templateData: JSON } -input IntegrationsSettingsCreateInput { +input UserUpdateInput { """ - Whether to send a Slack message when a new issue is created for the project or the team. + The name of the user. """ - slackIssueCreated: Boolean + name: String """ - Whether to send a Slack message when a comment is created on any of the project or team's issues. + The display name of the user. """ - slackIssueNewComment: Boolean + displayName: String """ - Whether to send a Slack message when any of the project or team's issues change to completed or cancelled. + The avatar image URL of the user. """ - slackIssueStatusChangedDone: Boolean + avatarUrl: String """ - Whether to send a Slack message when any of the project or team's issues has a change in status. + Whether the user account is active. """ - slackIssueStatusChangedAll: Boolean - - """Whether to send a Slack message when a project update is created.""" - slackProjectUpdateCreated: Boolean + active: Boolean """ - Whether to send a Slack message when a project update is created to team channels. + Reason for deactivation. """ - slackProjectUpdateCreatedToTeam: Boolean + disableReason: String """ - Whether to send a Slack message when a project update is created to milestone channels. + Whether the user account has admin privileges. """ - slackProjectUpdateCreatedToMilestone: Boolean + admin: Boolean """ - Whether to send a Slack message when a project update is created to workspace channel. + The user description or a short bio. """ - slackProjectUpdateCreatedToWorkspace: Boolean + description: String """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + The emoji part of the user status. """ - id: String - - """The identifier of the team to create settings for.""" - teamId: String - - """The identifier of the project to create settings for.""" - projectId: String -} + statusEmoji: String -input IntegrationsSettingsUpdateInput { """ - Whether to send a Slack message when a new issue is created for the project or the team. + The label part of the user status. """ - slackIssueCreated: Boolean + statusLabel: String """ - Whether to send a Slack message when a comment is created on any of the project or team's issues. + When the user status should be cleared. """ - slackIssueNewComment: Boolean + statusUntilAt: DateTime """ - Whether to send a Slack message when any of the project or team's issues change to completed or cancelled. + The local timezone of the user. """ - slackIssueStatusChangedDone: Boolean + timezone: String +} +input UserSettingsUpdateInput { """ - Whether to send a Slack message when any of the project or team's issues has a change in status. + The user's settings. """ - slackIssueStatusChangedAll: Boolean - - """Whether to send a Slack message when a project update is created.""" - slackProjectUpdateCreated: Boolean + settings: JSONObject """ - Whether to send a Slack message when a project update is created to team channels. + The types of emails the user has unsubscribed from. """ - slackProjectUpdateCreatedToTeam: Boolean + unsubscribedFrom: [String!] """ - Whether to send a Slack message when a project update is created to milestone channels. + The user's notification preferences. """ - slackProjectUpdateCreatedToMilestone: Boolean + notificationPreferences: JSONObject """ - Whether to send a Slack message when a project update is created to workspace channel. + [Internal] The user's usage warning history. """ - slackProjectUpdateCreatedToWorkspace: Boolean + usageWarningHistory: JSONObject } -input IntegrationTemplateCreateInput { +input ViewPreferencesCreateInput { """ 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! -} - -input IssueImportUpdateInput { - """The mapping configuration for the import.""" - mapping: JSONObject! -} - -input IssueLabelCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + The type of view preferences (either user or organization level preferences). """ - id: String - - """The name of the label.""" - name: String! - - """The description of the label.""" - description: String - - """The color of the label.""" - color: String - - """The identifier of the parent label.""" - parentId: String + type: ViewPreferencesType! """ - The team associated with the label. If not given, the label will be associated with the entire workspace. + The view type of the view preferences are associated with. """ - teamId: String -} - -input IssueLabelUpdateInput { - """The name of the label.""" - name: String - - """The description of the label.""" - description: String - - """The identifier of the parent label.""" - parentId: String - - """The color of the label.""" - color: String -} + viewType: ViewType! -input IssueRelationCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + View preferences object. """ - id: String - - """The type of relation of the issue to the related issue.""" - type: IssueRelationType! - - """The identifier of the issue that is related to another issue.""" - issueId: String! - - """The identifier of the related issue.""" - relatedIssueId: String! -} - -"""The type of the issue relation.""" -enum IssueRelationType { - blocks - duplicate - related -} - -input IssueRelationUpdateInput { - """The type of relation of the issue to the related issue.""" - type: String - - """The identifier of the issue that is related to another issue.""" - issueId: String - - """The identifier of the related issue.""" - relatedIssueId: String -} + preferences: JSONObject! -input IssueCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + The default parameters for the insight on that view. """ - id: String - - """The title of the issue.""" - title: String! - - """The issue description in markdown format.""" - description: String - - """The issue description as a Prosemirror document.""" - descriptionData: JSON - - """The identifier of the user to assign the issue to.""" - assigneeId: String - - """The identifier of the parent issue.""" - parentId: String - - """The priority of the issue.""" - priority: Int - - """The estimated complexity of the issue.""" - estimate: Int - - """The identifiers of the users subscribing to this ticket.""" - subscriberIds: [String!] + insights: JSONObject - """The identifiers of the issue labels associated with this ticket.""" - labelIds: [String!] - - """The identifier or key of the team associated with the issue.""" - teamId: String! - - """The cycle associated with the issue.""" - cycleId: String + """ + The team these view preferences are associated with. + """ + teamId: String - """The project associated with the issue.""" + """ + The project these view preferences are associated with. + """ projectId: String - """The team state of the issue.""" - stateId: String - - """The comment the issue is referencing.""" - referenceCommentId: String - - """The position of the issue in its column on the board view.""" - boardOrder: Float - - """The position of the issue related to other issues.""" - sortOrder: Float - - """The position of the issue in parent's sub-issue list.""" - subIssueSortOrder: Float - - """The date at which the issue is due.""" - dueDate: TimelessDate - """ - Create issue as a user with the provided name. This option is only available to OAuth applications creating issues in `actor=application` mode. + The roadmap these view preferences are associated with. """ - createAsUser: String + roadmapId: String """ - Provide an external user avatar URL. Can only be used in conjunction with the `createAsUser` options. This option is only available to OAuth applications creating comments in `actor=application` mode. + The label these view preferences are associated with. """ - displayIconUrl: String + labelId: String """ - The date when the issue was created (e.g. if importing from another system). Must be a date in the past. If none is provided, the backend will generate the time as now. + The cycle these view preferences are associated with. """ - createdAt: DateTime -} - -input IssueUpdateInput { - """The issue title.""" - title: String - - """The issue description in markdown format.""" - description: String - - """The issue description as a Prosemirror document.""" - descriptionData: JSON - - """The identifier of the user to assign the issue to.""" - assigneeId: String - - """The identifier of the parent issue.""" - parentId: String - - """The priority of the issue.""" - priority: Int - - """The estimated complexity of the issue.""" - estimate: Int - - """The identifiers of the users subscribing to this ticket.""" - subscriberIds: [String!] - - """The identifiers of the issue labels associated with this ticket.""" - labelIds: [String!] - - """The identifier or key of the team associated with the issue.""" - teamId: String - - """The cycle associated with the issue.""" cycleId: String - """The project associated with the issue.""" - projectId: String - - """The team state of the issue.""" - stateId: String - - """The position of the issue in its column on the board view.""" - boardOrder: Float - - """The position of the issue related to other issues.""" - sortOrder: Float - - """The position of the issue in parent's sub-issue list.""" - subIssueSortOrder: Float - - """The date at which the issue is due.""" - dueDate: TimelessDate - - """Wether the issue has been trashed.""" - trashed: Boolean - - """The time until an issue will be snoozed in Triage view.""" - snoozedUntilAt: DateTime - - """The identifier of the user who snoozed the issue.""" - snoozedById: String -} - -input MilestoneCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + The custom view these view preferences are associated with. """ - id: String - - """The name of the milestone.""" - name: String! - - """The sort order of the milestone.""" - sortOrder: Float - - """[ALPHA] The description for the milestone.""" - description: String - - """[ALPHA] The planned target date of the milestone.""" - targetDate: TimelessDate + customViewId: String """ - [ALPHA] The identifiers of the teams this milestone is associated with. + The user profile these view preferences are associated with. """ - teamIds: [String!] + userId: String } -input MilestoneUpdateInput { - """The name of the milestone.""" - name: String - - """The sort order of the milestone.""" - sortOrder: Float - - """[ALPHA] The description for the milestone.""" - description: String +""" +The type of view preferences (either user or organization level preferences). +""" +enum ViewPreferencesType { + organization + user +} - """[ALPHA] The planned target date of the milestone.""" - targetDate: TimelessDate +""" +The client view this custom view is targeting. +""" +enum ViewType { + inbox + myIssues + myIssuesCreatedByMe + myIssuesSubscribedTo + myIssuesActivity + userProfile + userProfileCreatedByUser + board + completedCycle + cycle + project + label + triage + activeIssues + backlog + allIssues + customView + customViews + customRoadmap + roadmap + roadmaps + roadmapAll + roadmapClosed + roadmapBacklog + projects + projectsAll + projectsBacklog + projectsClosed + search + teams + archive + quickView +} +input ViewPreferencesUpdateInput { """ - [ALPHA] The identifiers of the teams this milestone is associated with. + View preferences. """ - teamIds: [String!] -} - -input MilestonesMigrateInput { - """IDs of the milestones to migrate.""" - milestonesToMigrate: [String!] - - """IDs of the milestones to delete.""" - milestonesToDelete: [String!] -} - -input NotificationUpdateInput { - """The time when notification was marked as read.""" - readAt: DateTime + preferences: JSONObject """ - The time until a notification will be snoozed. After that it will appear in the inbox again. + The default parameters for the insight on that view. """ - snoozedUntilAt: DateTime - - """The id of the project update related to the notification.""" - projectUpdateId: String + insights: JSONObject } -input NotificationSubscriptionCreateInput { +input WebhookCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + Label for the webhook. """ - id: String - - """The identifier of the team to subscribe to.""" - teamId: String - - """The identifier of the project to subscribe to.""" - projectId: String - - """The type of the project subscription.""" - projectNotificationSubscriptionType: ProjectNotificationSubscriptionType -} - -input NotificationSubscriptionUpdateInput { - """The type of the project subscription.""" - projectNotificationSubscriptionType: ProjectNotificationSubscriptionType! -} + label: String -input OauthClientApprovalCreateInput { """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String - """The client id of OAuth client being requested for approval.""" - clientId: String! - - """The scopes being requested for approval.""" - scopes: [String!]! - - """The reason the person wants to install this OAuth client.""" - requestReason: String -} - -input OauthClientApprovalUpdateInput { """ - The status for the OAuth client approval request. Must be approved or denied. + Whether this webhook is enabled. """ - status: OAuthClientApprovalStatus! - - """The reason the request for the OAuth client approval was denied.""" - denyReason: String -} + enabled: Boolean = true -input OauthClientCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + A secret token used to sign the webhook payload. """ - id: String - - """The application's name.""" - name: String! - - """User facing description of the application.""" - description: String - - """Name of the developer of the application.""" - developer: String! - - """Url of the developer (homepage or docs).""" - developerUrl: String! - - """List of allowed redirect URIs for the application.""" - redirectUris: [String!]! - - """URL for the app icon.""" - imageUrl: String + secret: String """ - Whether the OAuth application should be publicly visible, or only visible to the creating workspace. + The URL that will be called on data changes. """ - publicEnabled: Boolean - - """The URL that will be called on data changes.""" - webhookUrl: String - - """List of resources the webhooks should subscribe to.""" - webhookResourceTypes: [String!]! -} - -input OauthClientUpdateInput { - """The application's name.""" - name: String - - """User facing description of the application.""" - description: String - - """Name of the developer of the application.""" - developer: String - - """URL of the developer (homepage or docs).""" - developerUrl: String - - """List of allowed redirect URIs for the application.""" - redirectUris: [String!] - - """URL for the app icon.""" - imageUrl: String + url: String! """ - Whether the OAuth application should be publicly visible, or only visible to the creating workspace. + List of resources the webhook should subscribe to. """ - publicEnabled: Boolean - - """The URL that will be called on data changes.""" - webhookUrl: String - - """List of resources the webhooks should subscribe to.""" - webhookResourceTypes: [String!] -} + resourceTypes: [String!]! -input OrganizationDomainCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + The identifier or key of the team associated with the Webhook. """ - id: String - - """The domain name to add.""" - name: String! - - """The email address to which to send the verification code.""" - verificationEmail: String! - - """The authentication type this domain is for.""" - authType: String = "general" -} - -input OrganizationDomainVerificationInput { - """The identifier in UUID v4 format of the domain being verified.""" - organizationDomainId: String! - - """The verification code sent via email.""" - verificationCode: String! -} + teamId: String -input OrganizationInviteCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + Whether this webhook is enabled for all public teams. """ - id: String - - """The email of the invitee.""" - email: String! - - """What user role the invite should grant.""" - role: UserRoleType = user - - """The message to send to the invitee.""" - message: String - - """The teams that the user has been invited to.""" - teamIds: [String!] -} - -input OrganizationInviteUpdateInput { - """The teams that the user has been invited to.""" - teamIds: [String!]! + allPublicTeams: Boolean } -input UpdateOrganizationInput { - """The name of the organization.""" - name: String - - """The logo of the organization.""" - logoUrl: String - - """The URL key of the organization.""" - urlKey: String - +input WebhookUpdateInput { """ - How git branches are formatted. If null, default formatting will be used. + Label for the webhook. """ - gitBranchFormat: String + label: String """ - Whether the Git integration linkback messages should be sent for private repositories. + A secret token used to sign the webhook payload. """ - gitLinkbackMessagesEnabled: Boolean + secret: String """ - Whether the Git integration linkback messages should be sent for public repositories. + Whether this webhook is enabled. """ - gitPublicLinkbackMessagesEnabled: Boolean - - """Whether the organization is using roadmap.""" - roadmapEnabled: Boolean - - """The frequency at which project updates are sent.""" - projectUpdatesReminderFrequency: ProjectUpdateReminderFrequency - - """The day at which project updates are sent.""" - projectUpdateRemindersDay: Day - - """The hour at which project updates are sent.""" - projectUpdateRemindersHour: Float + enabled: Boolean """ - Whether the organization has opted for reduced customer support attachment information. + The URL that will be called on data changes. """ - reducedPersonalInformation: Boolean + url: String """ - Whether the organization has opted for having to approve all OAuth applications for install. + List of resources the webhook should subscribe to. """ - oauthAppReview: Boolean - - """Linear Preview feature flags""" - linearPreviewFlags: JSONObject - - """List of services that are allowed to be used for login.""" - allowedAuthServices: [String!] -} - -input DeleteOrganizationInput { - """The deletion code to confirm operation.""" - deletionCode: String! + resourceTypes: [String!] } -input ProjectLinkCreateInput { +input WorkflowStateCreateInput { """ The identifier in UUID v4 format. If none is provided, the backend will generate one. """ id: String - """The URL of the link.""" - url: String! - - """The label for the link.""" - label: String! - - """Related project for the link.""" - projectId: String! -} - -input ProjectLinkUpdateInput { - """The URL of the link.""" - url: String - - """The label for the link.""" - label: String -} - -input ProjectCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + The workflow type. """ - id: String + type: String! - """The name of the project.""" + """ + The name of the state. + """ name: String! - """The icon of the project.""" - icon: String - - """The color of the project.""" - color: String - - """The state of the project.""" - state: String + """ + The color of the state. + """ + color: String! - """The description for the project.""" + """ + The description of the state. + """ description: String - """The identifier of the milestone to associate the project with.""" - milestoneId: String - - """The identifiers of the teams this project is associated with.""" - teamIds: [String!]! - - """The identifier of the project lead.""" - leadId: String - - """The identifiers of the members of this project.""" - memberIds: [String!] - - """The planned start date of the project.""" - startDate: TimelessDate - - """The planned target date of the project.""" - targetDate: TimelessDate + """ + The position of the state. + """ + position: Float - """The sort order for the project within shared views.""" - sortOrder: Float + """ + The team associated with the state. + """ + teamId: String! } -input ProjectUpdateInput { - """The state of the project.""" - state: String - - """The name of the project.""" +input WorkflowStateUpdateInput { + """ + The name of the state. + """ name: String - """The description for the project.""" - description: String - - """The identifier of the milestone to associate the project with.""" - milestoneId: String - - """The icon of the project.""" - icon: String - - """The color of the project.""" + """ + The color of the state. + """ color: String - """The identifiers of the teams this project is associated with.""" - teamIds: [String!] - - """The time until which project update reminders are paused.""" - projectUpdateRemindersPausedUntilAt: DateTime - - """The identifier of the project lead.""" - leadId: String - - """The identifiers of the members of this project.""" - memberIds: [String!] - - """The planned start date of the project.""" - startDate: TimelessDate - - """The planned target date of the project.""" - targetDate: TimelessDate - - """The date when the project was completed.""" - completedAt: DateTime - - """The date when the project was canceled.""" - canceledAt: DateTime - - """Whether to send new issue notifications to Slack.""" - slackNewIssue: Boolean - - """Whether to send new issue comment notifications to Slack.""" - slackIssueComments: Boolean - - """Whether to send issue status update notifications to Slack.""" - slackIssueStatuses: Boolean - - """The sort order for the project in shared views.""" - sortOrder: Float -} - -input ProjectUpdateInteractionCreateInput { - """The identifier. If none is provided, the backend will generate one.""" - id: String - - """The id of the project update that has been interacted with.""" - projectUpdateId: String! + """ + The description of the state. + """ + description: String - """The time at which the user read the project update.""" - readAt: DateTime! + """ + The position of the state. + """ + position: Float } -input ProjectUpdateCreateInput { - """The identifier. If none is provided, the backend will generate one.""" - id: String - - """The content of the project update in markdown format.""" - body: String - - """The content of the project update as a Prosemirror document.""" - bodyData: JSON - - """The project to associate the project update with.""" - projectId: String! +""" +An issue related notification +""" +type IssueNotification implements Notification & Entity & Node { + """ + The unique identifier of the entity. + """ + id: ID! - """The health of the project at the time of the update.""" - health: ProjectUpdateHealthType -} + """ + The time at which the entity was created. + """ + createdAt: DateTime! -input ProjectUpdateUpdateInput { - """The content of the project update in markdown format.""" - body: String + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! - """The content of the project update as a Prosemirror document.""" - bodyData: JSON + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime - """The health of the project at the time of the update.""" - health: ProjectUpdateHealthType -} + """ + Notification type + """ + type: String! -input PushSubscriptionCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + The user that caused the notification. """ - id: String + actor: User - """The user identifier of the subscription.""" - userId: String! + """ + The external user that caused the notification. + """ + externalUserActor: ExternalUser - """The data of the subscription in stringified JSON format.""" - data: String! + """ + The user that received the notification. + """ + user: User! """ - Whether this is a subscription payload for Google Cloud Messaging or Apple Push Notification service + The time at when the user marked the notification as read. Null, if the the user hasn't read the notification """ - type: PushSubscriptionType = web -} + readAt: DateTime -"""The different push subscription types""" -enum PushSubscriptionType { - web - apple -} + """ + The time at when an email reminder for this notification was sent to the user. Null, if no email + reminder has been sent. + """ + emailedAt: DateTime -input ReactionCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one + The time until a notification will be snoozed. After that it will appear in the inbox again. """ - id: String + snoozedUntilAt: DateTime - """The emoji the user reacted with.""" - emoji: String + """ + The time at which a notification was unsnoozed.. + """ + unsnoozedAt: DateTime - """The comment to associate the reaction with.""" - commentId: String + """ + The bot that caused the notification. + """ + botActor: ActorBot - """The project update to associate the reaction with.""" - projectUpdateId: String -} + """ + Name of the reaction emoji related to the notification. + """ + reactionEmoji: String -input RoadmapCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + The issue related to the notification. """ - id: String + issue: Issue! - """The name of the roadmap.""" - name: String! + """ + The comment related to the notification. + """ + comment: Comment - """The description of the roadmap.""" - description: String + """ + The team related to the notification. + """ + team: Team! - """The owner of the roadmap""" - ownerId: String + """ + The subscriptions related to the notification. + """ + subscriptions: [NotificationSubscription!] } -input RoadmapUpdateInput { - """The name of the roadmap.""" - name: String +""" +A project related notification +""" +type ProjectNotification implements Notification & Entity & Node { + """ + The unique identifier of the entity. + """ + id: ID! - """The description of the roadmap.""" - description: String + """ + The time at which the entity was created. + """ + createdAt: DateTime! - """The owner of the roadmap""" - ownerId: String -} + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! -input RoadmapToProjectCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + The time at which the entity was archived. Null if the entity has not been archived. """ - id: String + archivedAt: DateTime - """The identifier of the project.""" - projectId: String! + """ + Notification type + """ + type: String! - """The identifier of the roadmap.""" - roadmapId: String! + """ + The user that caused the notification. + """ + actor: User - """The sort order for the project within its milestone.""" - sortOrder: Float -} + """ + The external user that caused the notification. + """ + externalUserActor: ExternalUser -input RoadmapToProjectUpdateInput { - """The sort order for the project within its milestone.""" - sortOrder: Float -} + """ + The user that received the notification. + """ + user: User! -input TeamMembershipCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + The time at when the user marked the notification as read. Null, if the the user hasn't read the notification """ - id: String + readAt: DateTime - """The identifier of the user associated with the membership.""" - userId: String! + """ + The time at when an email reminder for this notification was sent to the user. Null, if no email + reminder has been sent. + """ + emailedAt: DateTime - """The identifier of the team associated with the membership.""" - teamId: String! + """ + The time until a notification will be snoozed. After that it will appear in the inbox again. + """ + snoozedUntilAt: DateTime - """Internal. Whether the user is the owner of the team.""" - owner: Boolean + """ + The time at which a notification was unsnoozed.. + """ + unsnoozedAt: DateTime - """The position of the item in the users list.""" - sortOrder: Float -} + """ + The bot that caused the notification. + """ + botActor: ActorBot -input TeamMembershipUpdateInput { - """Internal. Whether the user is the owner of the team.""" - owner: Boolean + """ + The project related to the notification. + """ + project: Project! - """The position of the item in the users list.""" - sortOrder: Float + """ + The project update related to the notification. + """ + projectUpdate: ProjectUpdate } -input TeamCreateInput { +""" +An oauth client approval related notification +""" +type OauthClientApprovalNotification implements Notification & Entity & Node { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + The unique identifier of the entity. """ - id: String - - """The name of the team.""" - name: String! - - """The description of the team.""" - description: String + id: ID! """ - The key of the team. If not given, the key will be generated based on the name of the team. + The time at which the entity was created. """ - key: String + createdAt: DateTime! - """The icon of the team.""" - icon: String + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! - """The color of the team.""" - color: String + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime - """The organization associated with the team.""" - organizationId: String + """ + Notification type + """ + type: String! - """Whether the team uses cycles.""" - cyclesEnabled: Boolean + """ + The user that caused the notification. + """ + actor: User - """The day of the week that a new cycle starts.""" - cycleStartDay: Float + """ + The external user that caused the notification. + """ + externalUserActor: ExternalUser - """The duration of each cycle in weeks.""" - cycleDuration: Int + """ + The user that received the notification. + """ + user: User! - """The cooldown time after each cycle in weeks.""" - cycleCooldownTime: Int + """ + The time at when the user marked the notification as read. Null, if the the user hasn't read the notification + """ + readAt: DateTime - """Auto assign started issues to current active cycle setting.""" - cycleIssueAutoAssignStarted: Boolean + """ + The time at when an email reminder for this notification was sent to the user. Null, if no email + reminder has been sent. + """ + emailedAt: DateTime - """Auto assign completed issues to current active cycle setting.""" - cycleIssueAutoAssignCompleted: Boolean + """ + The time until a notification will be snoozed. After that it will appear in the inbox again. + """ + snoozedUntilAt: DateTime - """Only allow issues issues with cycles in Active Issues.""" - cycleLockToActive: Boolean + """ + The time at which a notification was unsnoozed.. + """ + unsnoozedAt: DateTime - """How many upcoming cycles to create.""" - upcomingCycleCount: Float + """ + The bot that caused the notification. + """ + botActor: ActorBot - """Whether triage mode is enabled for the team.""" - triageEnabled: Boolean + """ + The OAuth client approval request related to the notification. + """ + oauthClientApproval: OauthClientApproval! +} - """The timezone of the team.""" - timezone: String +""" +A custom view notification subscription. +""" +type CustomViewNotificationSubscription implements NotificationSubscription & Entity & Node { + """ + The unique identifier of the entity. + """ + id: ID! - """Whether issues without priority should be sorted first.""" - issueOrderingNoPriorityFirst: Boolean + """ + The time at which the entity was created. + """ + createdAt: DateTime! - """The issue estimation type to use.""" - issueEstimationType: String + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! - """Whether to allow zeros in issues estimates.""" - issueEstimationAllowZero: Boolean + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime - """Whether to move issues to bottom of the column when changing state.""" - issueSortOrderDefaultToBottom: Boolean + """ + The user that subscribed to receive notifications. + """ + subscriber: User! - """Whether to add additional points to the estimate scale.""" - issueEstimationExtended: Boolean + """ + The custom view subscribed to. + """ + customView: CustomView! - """What to use as an default estimate for unestimated issues.""" - defaultIssueEstimate: Float + """ + The contextual cycle view associated with the notification subscription. + """ + cycle: Cycle - """Whether to group recent issue history entries.""" - groupIssueHistory: Boolean + """ + The contextual label view associated with the notification subscription. + """ + label: IssueLabel - """The identifier of the default template for members of this team.""" - defaultTemplateForMembersId: String + """ + The contextual project view associated with the notification subscription. + """ + project: Project - """The identifier of the default template for non-members of this team.""" - defaultTemplateForNonMembersId: String + """ + The team associated with the notification subscription. + """ + team: Team - """Internal. Whether the team is private or not.""" - private: Boolean + """ + The user view associated with the notification subscription. + """ + user: User - """Period after which issues are automatically closed, in months.""" - autoClosePeriod: Float + """ + The type of view to which the notification subscription context is associated with. + """ + contextViewType: ContextViewType - """The canceled workflow state which auto closed issues will be set to.""" - autoCloseStateId: String + """ + The type of user view to which the notification subscription context is associated with. + """ + userContextViewType: UserContextViewType """ - Period after which closed and completed issues are automatically archived, in months. 0 means disabled. + Whether the subscription is active or not """ - autoArchivePeriod: Float + active: Boolean! """ - The workflow state into which issues are moved when they are marked as a duplicate of another issue. + The type of subscription. """ - markedAsDuplicateWorkflowStateId: String + notificationSubscriptionTypes: [String!]! } -input TeamUpdateInput { - """The name of the team.""" - name: String +""" +A cycle notification subscription. +""" +type CycleNotificationSubscription implements NotificationSubscription & Entity & Node { + """ + The unique identifier of the entity. + """ + id: ID! - """The description of the team.""" - description: String + """ + The time at which the entity was created. + """ + createdAt: DateTime! - """The key of the team.""" - key: String + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! - """The icon of the team.""" - icon: String + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime - """The color of the team.""" - color: String + """ + The user that subscribed to receive notifications. + """ + subscriber: User! - """Whether the team uses cycles.""" - cyclesEnabled: Boolean + """ + The contextual custom view associated with the notification subscription. + """ + customView: CustomView - """The day of the week that a new cycle starts.""" - cycleStartDay: Float + """ + The cycle subscribed to. + """ + cycle: Cycle! - """The duration of each cycle in weeks.""" - cycleDuration: Int + """ + The contextual label view associated with the notification subscription. + """ + label: IssueLabel - """The cooldown time after each cycle in weeks.""" - cycleCooldownTime: Int + """ + The contextual project view associated with the notification subscription. + """ + project: Project - """Auto assign started issues to current active cycle setting.""" - cycleIssueAutoAssignStarted: Boolean + """ + The team associated with the notification subscription. + """ + team: Team - """Auto assign completed issues to current active cycle setting.""" - cycleIssueAutoAssignCompleted: Boolean + """ + The user view associated with the notification subscription. + """ + user: User - """Only allow issues with cycles in Active Issues.""" - cycleLockToActive: Boolean + """ + The type of view to which the notification subscription context is associated with. + """ + contextViewType: ContextViewType - """Whether the first cycle should start in the current or the next week.""" - cycleEnabledStartWeek: String + """ + The type of user view to which the notification subscription context is associated with. + """ + userContextViewType: UserContextViewType - """How many upcoming cycles to create.""" - upcomingCycleCount: Float + """ + Whether the subscription is active or not + """ + active: Boolean! - """The timezone of the team.""" - timezone: String + """ + The type of subscription. + """ + notificationSubscriptionTypes: [String!]! +} - """Whether issues without priority should be sorted first.""" - issueOrderingNoPriorityFirst: Boolean +""" +A label notification subscription. +""" +type LabelNotificationSubscription implements NotificationSubscription & Entity & Node { + """ + The unique identifier of the entity. + """ + id: ID! - """The issue estimation type to use.""" - issueEstimationType: String + """ + The time at which the entity was created. + """ + createdAt: DateTime! - """Whether to allow zeros in issues estimates.""" - issueEstimationAllowZero: Boolean + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! - """Whether to move issues to bottom of the column when changing state.""" - issueSortOrderDefaultToBottom: Boolean + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime - """Whether to add additional points to the estimate scale.""" - issueEstimationExtended: Boolean + """ + The user that subscribed to receive notifications. + """ + subscriber: User! - """What to use as an default estimate for unestimated issues.""" - defaultIssueEstimate: Float + """ + The contextual custom view associated with the notification subscription. + """ + customView: CustomView """ - The workflow state into which issues are moved when a draft PR has been opened. + The contextual cycle view associated with the notification subscription. """ - draftWorkflowStateId: String + cycle: Cycle """ - The workflow state into which issues are moved when a PR has been opened. + The label subscribed to. """ - startWorkflowStateId: String + label: IssueLabel! """ - The workflow state into which issues are moved when a review has been requested for the PR. + The contextual project view associated with the notification subscription. """ - reviewWorkflowStateId: String + project: Project """ - The workflow state into which issues are moved when a PR has been merged. + The team associated with the notification subscription. """ - mergeWorkflowStateId: String + team: Team - """Whether to send new issue notifications to Slack.""" - slackNewIssue: Boolean + """ + The user view associated with the notification subscription. + """ + user: User - """Whether to send new issue comment notifications to Slack.""" - slackIssueComments: Boolean + """ + The type of view to which the notification subscription context is associated with. + """ + contextViewType: ContextViewType - """Whether to send issue status update notifications to Slack.""" - slackIssueStatuses: Boolean + """ + The type of user view to which the notification subscription context is associated with. + """ + userContextViewType: UserContextViewType - """Whether to group recent issue history entries.""" - groupIssueHistory: Boolean + """ + Whether the subscription is active or not + """ + active: Boolean! - """The identifier of the default template for members of this team.""" - defaultTemplateForMembersId: String + """ + The type of subscription. + """ + notificationSubscriptionTypes: [String!]! +} - """The identifier of the default template for non-members of this team.""" - defaultTemplateForNonMembersId: String +""" +A project notification subscription. +""" +type ProjectNotificationSubscription implements NotificationSubscription & Entity & Node { + """ + The unique identifier of the entity. + """ + id: ID! - """Whether the team is private or not.""" - private: Boolean + """ + The time at which the entity was created. + """ + createdAt: DateTime! - """Whether triage mode is enabled for the team.""" - triageEnabled: Boolean + """ + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. + """ + updatedAt: DateTime! - """Default status for newly created issues.""" - defaultIssueStateId: String + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime - """Period after which issues are automatically closed, in months.""" - autoClosePeriod: Float + """ + The user that subscribed to receive notifications. + """ + subscriber: User! - """The canceled workflow state which auto closed issues will be set to.""" - autoCloseStateId: String + """ + The contextual custom view associated with the notification subscription. + """ + customView: CustomView """ - Period after which closed and completed issues are automatically archived, in months. + The contextual cycle view associated with the notification subscription. """ - autoArchivePeriod: Float + cycle: Cycle """ - The workflow state into which issues are moved when they are marked as a duplicate of another issue. + The contextual label view associated with the notification subscription. """ - markedAsDuplicateWorkflowStateId: String -} + label: IssueLabel -input TemplateCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + The project subscribed to. """ - id: String + project: Project! - """The template type, e.g. 'issue'.""" - type: String! + """ + The team associated with the notification subscription. + """ + team: Team """ - The identifier or key of the team associated with the template. If not given, the template will be shared across all teams. + The user view associated with the notification subscription. """ - teamId: String + user: User - """The template name.""" - name: String! + """ + The type of view to which the notification subscription context is associated with. + """ + contextViewType: ContextViewType - """The template description.""" - description: String + """ + The type of user view to which the notification subscription context is associated with. + """ + userContextViewType: UserContextViewType """ - The template data as JSON encoded attributes of the type of entity, such as an issue. + Whether the subscription is active or not """ - templateData: JSON! + active: Boolean! + + """ + The type of subscription. + """ + notificationSubscriptionTypes: [String!]! } -input TemplateUpdateInput { - """The template name.""" - name: String +""" +A team notification subscription. +""" +type TeamNotificationSubscription implements NotificationSubscription & Entity & Node { + """ + The unique identifier of the entity. + """ + id: ID! - """The template description.""" - description: String + """ + The time at which the entity was created. + """ + createdAt: DateTime! """ - The identifier or key of the team associated with the template. If set to null, the template will be shared across all teams. + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. """ - teamId: String + updatedAt: DateTime! """ - The template data as JSON encoded attributes of the type of entity, such as an issue. + The time at which the entity was archived. Null if the entity has not been archived. """ - templateData: JSON -} + archivedAt: DateTime -input UpdateUserInput { - """The name of the user.""" - name: String + """ + The user that subscribed to receive notifications. + """ + subscriber: User! - """The display name of the user.""" - displayName: String + """ + The contextual custom view associated with the notification subscription. + """ + customView: CustomView - """The avatar image URL of the user.""" - avatarUrl: String + """ + The contextual cycle view associated with the notification subscription. + """ + cycle: Cycle - """Whether the user account is active.""" - active: Boolean + """ + The contextual label view associated with the notification subscription. + """ + label: IssueLabel - """Reason for deactivation.""" - disableReason: String + """ + The contextual project view associated with the notification subscription. + """ + project: Project - """Whether the user account has admin privileges.""" - admin: Boolean + """ + The team subscribed to. + """ + team: Team! - """The user description or a short bio.""" - description: String + """ + The user view associated with the notification subscription. + """ + user: User - """The emoji part of the user status.""" - statusEmoji: String + """ + The type of view to which the notification subscription context is associated with. + """ + contextViewType: ContextViewType - """The label part of the user status.""" - statusLabel: String + """ + The type of user view to which the notification subscription context is associated with. + """ + userContextViewType: UserContextViewType - """When the user status should be cleared.""" - statusUntilAt: DateTime + """ + Whether the subscription is active or not + """ + active: Boolean! - """The local timezone of the user.""" - timezone: String + """ + The type of subscription. + """ + notificationSubscriptionTypes: [String!]! } -input UserSettingsUpdateInput { - """The user's settings.""" - settings: String - - """The types of emails the user has unsubscribed from.""" - unsubscribedFrom: [String!] - - """The user's notification preferences.""" - notificationPreferences: JSONObject -} +""" +A user notification subscription. +""" +type UserNotificationSubscription implements NotificationSubscription & Entity & Node { + """ + The unique identifier of the entity. + """ + id: ID! -input ViewPreferencesCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + The time at which the entity was created. """ - id: String + createdAt: DateTime! """ - The type of view preferences (either user or organization level preferences). + The last time at which the entity was meaningfully updated, i.e. for all changes of syncable properties except those + for which updates should not produce an update to updatedAt (see skipUpdatedAtKeys). This is the same as the creation time if the entity hasn't + been updated after creation. """ - type: ViewPreferencesType! + updatedAt: DateTime! - """The view type of the view preferences are associated with.""" - viewType: ViewType! + """ + The time at which the entity was archived. Null if the entity has not been archived. + """ + archivedAt: DateTime - """View preferences object.""" - preferences: JSONObject! + """ + The user that subscribed to receive notifications. + """ + subscriber: User! - """The team these view preferences are associated with.""" - teamId: String + """ + The contextual custom view associated with the notification subscription. + """ + customView: CustomView - """The project these view preferences are associated with.""" - projectId: String + """ + The contextual cycle view associated with the notification subscription. + """ + cycle: Cycle - """The roadmap these view preferences are associated with.""" - roadmapId: String + """ + The contextual label view associated with the notification subscription. + """ + label: IssueLabel - """The label these view preferences are associated with.""" - labelId: String + """ + The contextual project view associated with the notification subscription. + """ + project: Project - """The user profile these view preferences are associated with.""" - userId: String + """ + The team associated with the notification subscription. + """ + team: Team - """The cycle these view preferences are associated with.""" - cycleId: String + """ + The user subscribed to. + """ + user: User! - """The custom view these view preferences are associated with.""" - customViewId: String -} + """ + The type of view to which the notification subscription context is associated with. + """ + contextViewType: ContextViewType -""" -The type of view preferences (either user or organization level preferences). -""" -enum ViewPreferencesType { - organization - user -} + """ + The type of user view to which the notification subscription context is associated with. + """ + userContextViewType: UserContextViewType -"""The client view this custom view is targeting.""" -enum ViewType { - inbox - myIssues - myIssuesCreatedByMe - myIssuesSubscribedTo - userProfile - userProfileCreatedByUser - board - completedCycle - cycle - project - label - triage - activeIssues - backlog - allIssues - customView - customRoadmap - roadmap - roadmapAll - roadmapClosed - roadmapBacklog - projects - projectsAll - projectsBacklog - projectsClosed - search - teams - archive -} + """ + Whether the subscription is active or not + """ + active: Boolean! -input ViewPreferencesUpdateInput { - """View preferences.""" - preferences: JSONObject! + """ + The type of subscription. + """ + notificationSubscriptionTypes: [String!]! } -input WebhookCreateInput { - """Label for the webhook.""" - label: String - +type Query { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + All API keys for the user. """ - id: String + apiKeys( + """ + A cursor to be used with last for backward pagination. + """ + before: String - """Whether this webhook is enabled.""" - enabled: Boolean = true + """ + A cursor to be used with first for forward pagination + """ + after: String - """An optional secret token used to sign the webhook payload.""" - secret: String + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int - """The URL that will be called on data changes.""" - url: String! + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int - """List of resources the webhook should subscribe to.""" - resourceTypes: [String!]! + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean - """The identifier or key of the team associated with the Webhook.""" - teamId: String + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): ApiKeyConnection! - """Whether this webhook is enabled for all public teams.""" - allPublicTeams: Boolean -} + """ + Get basic information for an application. + """ + applicationInfo( + """ + The client ID of the application. + """ + clientId: String! + ): Application! -input WebhookUpdateInput { - """Label for the webhook.""" - label: String + """ + [INTERNAL] Get basic information for a list of applications + """ + applicationInfoByIds( + """ + The IDs of the applications. + """ + ids: [String!]! + ): [Application!]! - """An optional secret token used to sign the Webhook payload.""" - secret: String + """ + Get information for an application and whether a user has approved it for the given scopes. + """ + applicationWithAuthorization( + """ + Actor mode used for the authorization. + """ + actor: String = "user" - """Whether this webhook is enabled.""" - enabled: Boolean + """ + Redirect URI for the application. + """ + redirectUri: String - """The URL that will be called on data changes.""" - url: String + """ + Scopes being requested by the application + """ + scope: [String!]! - """List of resources the webhook should subscribe to.""" - resourceTypes: [String!] -} + """ + The client ID of the application. + """ + clientId: String! + ): UserAuthorizedApplication! -input WorkflowStateCreateInput { """ - The identifier in UUID v4 format. If none is provided, the backend will generate one. + [INTERNAL] Get all authorized applications for a user """ - id: String - - """The workflow type.""" - type: String! - - """The name of the state.""" - name: String! - - """The color of the state.""" - color: String! + authorizedApplications: [AuthorizedApplication!]! - """The description of the state.""" - description: String + """ + [INTERNAL] Get all authorized applications (with limited fields) for a workspace + """ + workspaceAuthorizedApplications: [WorkspaceAuthorizedApplication!]! - """The position of the state.""" - position: Float + """ + All issue attachments. - """The team associated with the state.""" - teamId: String! -} + To get attachments for a given URL, use `attachmentsForURL` query. + """ + attachments( + """ + Filter returned attachments. + """ + filter: AttachmentFilter -input WorkflowStateUpdateInput { - """The name of the state.""" - name: String + """ + A cursor to be used with last for backward pagination. + """ + before: String - """The color of the state.""" - color: String + """ + A cursor to be used with first for forward pagination + """ + after: String - """The description of the state.""" - description: String + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int - """The position of the state.""" - position: Float -} + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int -"""A project notification subscription.""" -type ProjectNotificationSubscription implements NotificationSubscription & Entity & Node { - """The unique identifier of the entity.""" - id: ID! + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean - """The time at which the entity was created.""" - createdAt: DateTime! + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): AttachmentConnection! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + One specific issue attachment. + [Deprecated] 'url' can no longer be used as the 'id' parameter. Use 'attachmentsForUrl' instead """ - updatedAt: DateTime! + attachment(id: String!): Attachment! """ - The time at which the entity was archived. Null if the entity has not been archived. + Returns issue attachments for a given `url`. """ - archivedAt: DateTime + attachmentsForURL( + """ + A cursor to be used with last for backward pagination. + """ + before: String - """The type of the subscription.""" - type: String! + """ + A cursor to be used with first for forward pagination + """ + after: String - """The user associated with notification subscriptions.""" - user: User! + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int - """Subscribed team.""" - team: Team + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int - """The project subscribed to.""" - project: Project! + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy - """The type of the project subscription.""" - projectNotificationSubscriptionType: ProjectNotificationSubscriptionType! -} + """ + The attachment URL. + """ + url: String! + ): AttachmentConnection! -"""A team notification subscription.""" -type TeamNotificationSubscription implements NotificationSubscription & Entity & Node { - """The unique identifier of the entity.""" - id: ID! + """ + Query an issue by its associated attachment, and its id. + """ + 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." + ) - """The time at which the entity was created.""" - createdAt: DateTime! + """ + [Internal] Get a list of all unique attachment sources in the workspace + """ + attachmentSources( + """ + (optional) if provided will only return attachment sources for the given team + """ + teamId: String + ): AttachmentSourcesPayload! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + List of audit entry types. """ - updatedAt: DateTime! + auditEntryTypes: [AuditEntryType!]! """ - The time at which the entity was archived. Null if the entity has not been archived. + All audit log entries. """ - archivedAt: DateTime + auditEntries( + """ + Filter returned audit entries. + """ + filter: AuditEntryFilter - """The type of the subscription.""" - type: String! + """ + A cursor to be used with last for backward pagination. + """ + before: String - """The user associated with notification subscriptions.""" - user: User! + """ + A cursor to be used with first for forward pagination + """ + after: String - """The team subscribed to.""" - team: Team! + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int - """Subscribed project.""" - project: Project -} + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int -"""An issue related notification""" -type IssueNotification implements Notification & Entity & Node { - """The unique identifier of the entity.""" - id: ID! + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean - """The time at which the entity was created.""" - createdAt: DateTime! + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): AuditEntryConnection! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Fetch users belonging to this user account. """ - updatedAt: DateTime! + availableUsers: AuthResolverResponse! """ - The time at which the entity was archived. Null if the entity has not been archived. + User's active sessions. """ - archivedAt: DateTime - - """Notification type""" - type: String! - - """The user that caused the notification. If empty it's Linear itself.""" - actor: User - - """The user that received the notification.""" - user: User! + authenticationSessions: [AuthenticationSessionResponse!]! """ - The time at when the user marked the notification as read. Null, if the the user hasn't read the notification + Fetch SSO login URL for the email provided. """ - readAt: DateTime + ssoUrlFromEmail( + """ + Whether the client is the desktop app. + """ + isDesktop: Boolean - """ - The time at when an email reminder for this notification was sent to the user. Null, if no email - reminder has been sent. - """ - emailedAt: DateTime + """ + Email to query the SSO login URL by. + """ + email: String! + ): SsoUrlFromEmailResponse! """ - The time until a notification will be snoozed. After that it will appear in the inbox again. + All comments. """ - snoozedUntilAt: DateTime - - """The time at which a notification was unsnoozed..""" - unsnoozedAt: DateTime + comments( + """ + Filter returned comments. + """ + filter: CommentFilter - """The issue related to the notification.""" - issue: Issue! + """ + A cursor to be used with last for backward pagination. + """ + before: String - """The team related to the notification.""" - team: Team! + """ + A cursor to be used with first for forward pagination + """ + after: String - """The comment related to the notification.""" - comment: Comment + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int - """Name of the reaction emoji related to the notification.""" - reactionEmoji: String -} + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int -"""A project related notification""" -type ProjectNotification implements Notification & Entity & Node { - """The unique identifier of the entity.""" - id: ID! + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean - """The time at which the entity was created.""" - createdAt: DateTime! + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): CommentConnection! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + A specific comment. """ - updatedAt: DateTime! + comment( + """ + The identifier of the comment to retrieve. + """ + id: String! + ): Comment! """ - The time at which the entity was archived. Null if the entity has not been archived. + Custom views for the user. """ - archivedAt: DateTime + customViews( + """ + A cursor to be used with last for backward pagination. + """ + before: String - """Notification type""" - type: String! + """ + A cursor to be used with first for forward pagination + """ + after: String - """The user that caused the notification. If empty it's Linear itself.""" - actor: User + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int - """The user that received the notification.""" - user: User! + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int - """ - The time at when the user marked the notification as read. Null, if the the user hasn't read the notification - """ - readAt: DateTime + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): CustomViewConnection! """ - The time at when an email reminder for this notification was sent to the user. Null, if no email - reminder has been sent. + One specific custom view. """ - emailedAt: DateTime + customView(id: String!): CustomView! """ - The time until a notification will be snoozed. After that it will appear in the inbox again. + [INTERNAL] Suggests metadata for a view based on it's filters. """ - snoozedUntilAt: DateTime - - """The time at which a notification was unsnoozed..""" - unsnoozedAt: DateTime - - """The project related to the notification.""" - project: Project! - - """The project update related to the notification.""" - projectUpdate: ProjectUpdate -} - -"""An oauth client approval related notification""" -type OauthClientApprovalNotification implements Notification & Entity & Node { - """The unique identifier of the entity.""" - id: ID! - - """The time at which the entity was created.""" - createdAt: DateTime! + customViewDetailsSuggestion( + modelName: String + filter: JSONObject! + ): CustomViewSuggestionPayload! """ - The last time at which the entity was updated. This is the same as the creation time if the - entity hasn't been updated after creation. + Whether a custom view has other subscribers than the current user in the organization. """ - updatedAt: DateTime! + customViewHasSubscribers( + """ + The identifier of the custom view. + """ + id: String! + ): CustomViewHasSubscribersPayload! """ - The time at which the entity was archived. Null if the entity has not been archived. + All cycles. """ - archivedAt: DateTime + cycles( + """ + Filter returned users. + """ + filter: CycleFilter - """Notification type""" - type: String! + """ + A cursor to be used with last for backward pagination. + """ + before: String - """The user that caused the notification. If empty it's Linear itself.""" - actor: User + """ + A cursor to be used with first for forward pagination + """ + after: String - """The user that received the notification.""" - user: User! + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int + + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int + + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean + + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): CycleConnection! """ - The time at when the user marked the notification as read. Null, if the the user hasn't read the notification + One specific cycle. """ - readAt: DateTime + cycle(id: String!): Cycle! """ - The time at when an email reminder for this notification was sent to the user. Null, if no email - reminder has been sent. + A collection of document content history entries. """ - emailedAt: DateTime + documentContentHistory(id: String!): DocumentContentHistoryPayload! """ - The time until a notification will be snoozed. After that it will appear in the inbox again. + All documents in the workspace. """ - snoozedUntilAt: DateTime + documents( + """ + A cursor to be used with last for backward pagination. + """ + before: String - """The time at which a notification was unsnoozed..""" - unsnoozedAt: DateTime + """ + A cursor to be used with first for forward pagination + """ + after: String - """The OAuth client approval request related to the notification.""" - oauthClientApproval: OauthClientApproval! -} + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int -type Query { - """Fetch data to catch up the client to the state of the world.""" - syncBootstrap( - """If defined, only models of the given type will be loaded.""" - onlyModels: [String!] + """ + The number of items to backward paginate (used with before). Defaults to 50. + """ + last: Int - """If defined, only models for the given sync groups will be loaded.""" - syncGroups: [String!] - ): SyncResponse! + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean - """Retrieves how many entities the user has access to.""" - syncEntityCount: EntityCountResponse! + """ + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + """ + orderBy: PaginationOrderBy + ): DocumentConnection! - """Syncs a batch of models.""" - syncBatch( - """The requests to load.""" - requests: [BatchRequest!]! - ): SyncBatchResponse! + """ + One specific document. + """ + document(id: String!): Document! - """Fetches the dependencies of a model.""" - dependentModelSync( + """ + All custom emojis. + """ + emojis( """ - Whether to also include the dependent model referenced by the given identifier in the response. + A cursor to be used with last for backward pagination. """ - includeDependent: Boolean - - """The identifier of the model whose dependencies to load.""" - identifier: String! - - """The class name of the model to load.""" - modelClass: String! - ): DependencyResponse! + before: String - """Fetches an archived model.""" - archivedModelSync( """ - The identifier of the model to load. What an identifier is specific to the model class. + A cursor to be used with first for forward pagination """ - identifier: String! - - """The class name of the model to load.""" - modelClass: String! - ): ArchiveResponse! - - """Fetches archived models.""" - archivedModelsSync( - """The class name of the models to load.""" - modelClass: String! + after: String - """The teamId for which to load archived models.""" - teamId: String! + """ + The number of items to forward paginate (used with after). Defaults to 50. + """ + first: Int """ - How trashed issues should be loaded. Defaults to TrashOptionType.excludeTrash + The number of items to backward paginate (used with before). Defaults to 50. """ - trashOption: TrashOptionType + last: Int - """Retrieve issues that have been archived before this date.""" - before: DateTime + """ + Should archived resources be included (default: false) + """ + includeArchived: Boolean """ - To proper page through entities with same "archivedAt" date we also need last id + By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ - beforeId: String + orderBy: PaginationOrderBy + ): EmojiConnection! - """The number of issues to load.""" - last: Int - ): ArchiveResponse! + """ + A specific emoji. + """ + emoji( + """ + The identifier of the emoji to retrieve. + """ + id: String! + ): Emoji! - """All API keys for the user.""" - apiKeys( - """A cursor to be used with last for backward pagination.""" + """ + All external users for the organization. + """ + externalUsers( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -9860,65 +17936,39 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): ApiKeyConnection! - - """Get basic information for an application.""" - applicationInfo( - """The client ID of the application.""" - clientId: String! - ): Application! - - """[INTERNAL] Get basic information for a list of applications""" - applicationInfoByIds( - """The IDs of the applications.""" - ids: [String!]! - ): [Application!]! - - """ - Get information for an application and whether a user has approved it for the given scopes. - """ - applicationWithAuthorization( - """Actor mode used for the authorization.""" - actor: String = "user" - - """Redirect URI for the application.""" - redirectUri: String - - """Scopes being requested by the application""" - scope: [String!]! - - """The client ID of the application.""" - clientId: String! - ): UserAuthorizedApplication! - - """[INTERNAL] Get all authorized applications for a user""" - authorizedApplications: [AuthorizedApplication!]! + ): ExternalUserConnection! """ - [INTERNAL] Get all authorized applications (with limited fields) for a workspace + One specific external user. """ - workspaceAuthorizedApplications: [WorkspaceAuthorizedApplication!]! + externalUser( + """ + The identifier of the external user to retrieve. + """ + id: String! + ): ExternalUser! """ - All issue attachments. - - To get attachments for a given URL, use `attachmentsForURL` query. + The user's favorites. """ - attachments( - """Filter returned attachments.""" - filter: AttachmentFilter - - """A cursor to be used with last for backward pagination.""" + favorites( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -9931,28 +17981,34 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): AttachmentConnection! + ): FavoriteConnection! """ - - One specific issue attachment. - [Deprecated] 'url' can no longer be used as the 'id' parameter. Use 'attachmentsForUrl' instead + One specific favorite. """ - attachment(id: String!): Attachment! + favorite(id: String!): Favorite! - """Returns issue attachments for a given `url`.""" - attachmentsForURL( - """A cursor to be used with last for backward pagination.""" + """ + All integrations. + """ + integrations( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -9965,42 +18021,39 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - - """The attachment URL.""" - url: String! - ): AttachmentConnection! + ): IntegrationConnection! """ - - Query an issue by its associated attachment, and its id. + One specific integration. + """ + integration(id: String!): Integration! """ - attachmentIssue( + All project updates. + """ + projectUpdates( """ - `id` of the attachment for which you'll want to get the issue for. [Deprecated] `url` as the `id` parameter. + Filter returned project updates. """ - id: String! - ): Issue! @deprecated(reason: "Will be removed in near future, please use `attachmentsForURL` to get attachments and their issues instead.") + filter: ProjectUpdateFilter - """List of audit entry types.""" - auditEntryTypes: [AuditEntryType!]! - - """All audit log entries.""" - auditEntries( - """Filter returned audit entries.""" - filter: AuditEntryFilter - - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10013,36 +18066,34 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): AuditEntryConnection! - - """Fetch users belonging to this user account.""" - availableUsers: AuthResolverResponse! - - """Fetch SSO login URL for the email provided.""" - ssoUrlFromEmail( - """Whether the client is the desktop app.""" - isDesktop: Boolean - - """Email to query the SSO login URL by.""" - email: String! - ): SsoUrlFromEmailResponse! + ): ProjectUpdateConnection! - """All comments.""" - comments( - """Filter returned comments.""" - filter: CommentFilter + """ + One specific set of settings. + """ + integrationsSettings(id: String!): IntegrationsSettings! - """A cursor to be used with last for backward pagination.""" + """ + Template and integration connections. + """ + integrationTemplates( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10055,27 +18106,64 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): CommentConnection! + ): IntegrationTemplateConnection! - """A specific comment.""" - comment( - """The identifier of the comment to retrieve.""" - id: String! - ): Comment! + """ + One specific integrationTemplate. + """ + integrationTemplate(id: String!): IntegrationTemplate! - """Custom views for the user.""" - customViews( - """A cursor to be used with last for backward pagination.""" + """ + Fetches the GitHub token, completing the OAuth flow. + """ + issueImportFinishGithubOAuth( + """ + OAuth code. + """ + code: String! + ): GithubOAuthTokenPayload! + + """ + Checks a CSV file validity against a specific import service. + """ + issueImportCheckCSV( + """ + CSV storage url + """ + csvUrl: String! + + """ + The service the CSV containing data from + """ + service: String! + ): IssueImportCheckPayload! + + """ + All issue labels. + """ + issueLabels( + """ + Filter returned issue labels. + """ + filter: IssueLabelFilter + + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10088,27 +18176,34 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): CustomViewConnection! - - """One specific custom view.""" - customView(id: String!): CustomView! + ): IssueLabelConnection! - """All cycles.""" - cycles( - """Filter returned users.""" - filter: CycleFilter + """ + One specific label. + """ + issueLabel(id: String!): IssueLabel! - """A cursor to be used with last for backward pagination.""" + """ + All issue relationships. + """ + issueRelations( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10121,24 +18216,39 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): CycleConnection! + ): IssueRelationConnection! - """One specific cycle.""" - cycle(id: String!): Cycle! + """ + One specific issue relation. + """ + issueRelation(id: String!): IssueRelation! - """All documents for the project.""" - documents( - """A cursor to be used with last for backward pagination.""" + """ + All issues. + """ + issues( + """ + Filter returned issues. + """ + filter: IssueFilter + + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10151,24 +18261,39 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): DocumentConnection! + ): IssueConnection! - """One specific document.""" - document(id: String!): Document! + """ + One specific issue. + """ + issue(id: String!): Issue! - """All custom emojis.""" - emojis( - """A cursor to be used with last for backward pagination.""" + """ + [DEPRECATED] Search issues. This endpoint is deprecated and will be removed in the future – use `searchIssues` instead. + """ + issueSearch( + """ + Filter returned issues. + """ + filter: IssueFilter + + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10181,27 +18306,44 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): EmojiConnection! - """A specific emoji.""" - emoji( - """The identifier of the emoji to retrieve.""" - id: String! - ): Emoji! + """ + [Deprecated] Search string to look for. + """ + query: String + ): IssueConnection! + + """ + Find issue based on the VCS branch name. + """ + issueVcsBranchSearch( + """ + The VCS branch name to search for. + """ + branchName: String! + ): Issue - """The user's favorites.""" - favorites( - """A cursor to be used with last for backward pagination.""" + """ + Find issues that are related to a given Figma file key. + """ + issueFigmaFileKeySearch( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10214,38 +18356,44 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): FavoriteConnection! - """One specific favorite.""" - favorite(id: String!): Favorite! + """ + The Figma file key. + """ + fileKey: String! + ): IssueConnection! """ - Fetch Figma screenshot and other information with file and node identifiers. + Issue priority values and corresponding labels. """ - figmaEmbedInfo( - """Figma node identifier.""" - nodeId: String - - """Figma file identifier.""" - fileId: String! - ): FigmaEmbedPayload! + issuePriorityValues: [IssuePriorityValue!]! - """[ALPHA] All initiatives.""" - initiatives( - """Filter returned projects.""" - filter: InitiativeFilter + """ + Suggests filters for an issue view based on a text prompt. + """ + issueFilterSuggestion(prompt: String!): IssueFilterSuggestionPayload! - """A cursor to be used with last for backward pagination.""" + """ + All notifications. + """ + notifications( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10258,24 +18406,34 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): InitiativeConnection! + ): NotificationConnection! - """[ALPHA] One specific initiative.""" - initiative(id: String!): Initiative! + """ + One specific notification. + """ + notification(id: String!): Notification! - """All integrations.""" - integrations( - """A cursor to be used with last for backward pagination.""" + """ + The user's notification subscriptions. + """ + notificationSubscriptions( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10288,26 +18446,44 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): IntegrationConnection! + ): NotificationSubscriptionConnection! - """One specific integration.""" - integration(id: String!): Integration! + """ + One specific notification subscription. + """ + notificationSubscription(id: String!): NotificationSubscription! + + """ + [INTERNAL] Checks whether the domain can be claimed. + """ + organizationDomainClaimRequest( + """ + The ID of the organization domain to claim. + """ + id: String! + ): OrganizationDomainClaimPayload! """ - All integrations resources (e.g. linked GitHub pull requests for issues). + All invites for the organization. """ - integrationResources( - """A cursor to be used with last for backward pagination.""" + organizationInvites( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10320,26 +18496,49 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): IntegrationResourceConnection! @deprecated(reason: "This query will soon be deprecated, please use `attachments` instead") + ): OrganizationInviteConnection! """ - One specific integration resource. (e.g. linked GitHub pull requests for an issue) + One specific organization invite. """ - integrationResource(id: String!): IntegrationResource! @deprecated(reason: "This query will soon be deprecated, please use `attachment` instead") + organizationInvite(id: String!): OrganizationInvite! - """All project updates.""" - projectUpdates( - """A cursor to be used with last for backward pagination.""" + """ + One specific organization invite. + """ + organizationInviteDetails(id: String!): OrganizationInviteDetailsPayload! + + """ + The user's organization. + """ + organization: Organization! + + """ + Does the organization exist. + """ + organizationExists(urlKey: String!): OrganizationExistsPayload! + + """ + All links for the project. + """ + projectLinks( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10352,24 +18551,39 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): ProjectUpdateConnection! + ): ProjectLinkConnection! - """One specific set of settings.""" - integrationsSettings(id: String!): IntegrationsSettings! + """ + One specific project link. + """ + projectLink(id: String!): ProjectLink! - """Template and integration connections.""" - integrationTemplates( - """A cursor to be used with last for backward pagination.""" + """ + All milestones for the project. + """ + ProjectMilestones( + """ + Filter returned project milestones. + """ + filter: ProjectMilestoneFilter + + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10382,33 +18596,39 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): IntegrationTemplateConnection! + ): ProjectMilestoneConnection! - """One specific integrationTemplate.""" - integrationTemplate(id: String!): IntegrationTemplate! - - """Fetches the GitHub token, completing the OAuth flow.""" - issueImportFinishGithubOAuth( - """OAuth code.""" - code: String! - ): GithubOAuthTokenPayload! + """ + One specific project milestone. + """ + ProjectMilestone(id: String!): ProjectMilestone! - """All issue labels.""" - issueLabels( - """Filter returned issue labels.""" - filter: IssueLabelFilter + """ + All projects. + """ + projects( + """ + Filter returned projects. + """ + filter: ProjectFilter - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10421,24 +18641,39 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): IssueLabelConnection! + ): ProjectConnection! - """One specific label.""" - issueLabel(id: String!): IssueLabel! + """ + One specific project. + """ + project(id: String!): Project! - """All issue relationships.""" - issueRelations( - """A cursor to be used with last for backward pagination.""" + """ + Suggests filters for a project view based on a text prompt. + """ + projectFilterSuggestion(prompt: String!): ProjectFilterSuggestionPayload! + + """ + All interactions on project updates. + """ + projectUpdateInteractions( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10451,27 +18686,59 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): IssueRelationConnection! + ): ProjectUpdateInteractionConnection! - """One specific issue relation.""" - issueRelation(id: String!): IssueRelation! + """ + A specific interaction on a project update. + """ + projectUpdateInteraction( + """ + The identifier of the project update interaction to retrieve. + """ + id: String! + ): ProjectUpdateInteraction! - """All issues.""" - issues( - """Filter returned issues.""" - filter: IssueFilter + """ + A specific project update. + """ + projectUpdate( + """ + The identifier of the project update to retrieve. + """ + id: String! + ): ProjectUpdate! + + """ + Sends a test push message. + """ + pushSubscriptionTest: PushSubscriptionTestPayload! + + """ + The status of the rate limiter. + """ + rateLimitStatus: RateLimitPayload! - """A cursor to be used with last for backward pagination.""" + """ + All roadmaps in the workspace. + """ + roadmaps( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10484,29 +18751,34 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): IssueConnection! - - """One specific issue.""" - issue(id: String!): Issue! + ): RoadmapConnection! """ - [ALPHA] Search issues. This query is experimental and is subject to change without notice. + One specific roadmap. """ - issueSearch( - """Filter returned issues.""" - filter: IssueFilter + roadmap(id: String!): Roadmap! - """A cursor to be used with last for backward pagination.""" + """ + Custom views for the user. + """ + roadmapToProjects( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10519,36 +18791,34 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy + ): RoadmapToProjectConnection! - """[Deprecated] Search string to look for.""" - query: String! - ): IssueConnection! - - """Find issue based on the VCS branch name.""" - issueVcsBranchSearch( - """The VCS branch name to search for.""" - branchName: String! - ): Issue - - """Issue priority values and corresponding labels.""" - issuePriorityValues: [IssuePriorityValue!]! - - """All milestones.""" - milestones( - """Filter returned projects.""" - filter: MilestoneFilter + """ + One specific roadmapToProject. + """ + roadmapToProject(id: String!): RoadmapToProject! - """A cursor to be used with last for backward pagination.""" + """ + Search documents. + """ + searchDocuments( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10561,24 +18831,44 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): MilestoneConnection! @deprecated(reason: "Milestones will be removed. Use roadmaps instead.") - """One specific milestone.""" - milestone(id: String!): Milestone! @deprecated(reason: "Milestones will be removed. Use roadmaps instead.") + """ + Search string to look for. + """ + term: String! - """All notifications.""" - notifications( - """A cursor to be used with last for backward pagination.""" + """ + Should associated comments be searched (default: true) + """ + includeComments: Boolean + + """ + UUID of a team to use as a boost + """ + teamId: String + ): DocumentSearchPayload! + + """ + Search projects. + """ + searchProjects( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10591,60 +18881,49 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): NotificationConnection! - - """One specific notification.""" - notification(id: String!): Notification! - - """The user's notification subscriptions.""" - notificationSubscriptions( - """A cursor to be used with last for backward pagination.""" - before: String - - """A cursor to be used with first for forward pagination""" - after: String """ - The number of items to forward paginate (used with after). Defaults to 50. + Search string to look for. """ - first: Int + term: String! """ - The number of items to backward paginate (used with before). Defaults to 50. + Should associated comments be searched (default: true) """ - last: Int + includeComments: Boolean - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + UUID of a team to use as a boost + """ + teamId: String + ): ProjectSearchPayload! + """ + Search issues. + """ + searchIssues( """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + Filter returned issues. """ - orderBy: PaginationOrderBy - ): NotificationSubscriptionConnection! - - """One specific notification subscription.""" - notificationSubscription(id: String!): NotificationSubscription! - - """[INTERNAL] Checks whether the domain can be claimed.""" - organizationDomainClaimRequest( - """The ID of the organization domain to claim.""" - id: String! - ): OrganizationDomainClaimPayload! + filter: IssueFilter - """All invites for the organization.""" - organizationInvites( - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10657,33 +18936,44 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): OrganizationInviteConnection! - - """One specific organization invite.""" - organizationInvite(id: String!): OrganizationInvite! - """One specific organization invite.""" - organizationInviteDetails(id: String!): OrganizationInviteDetailsPayload! + """ + Search string to look for. + """ + term: String! - """The user's organization.""" - organization: Organization! + """ + Should associated comments be searched (default: true) + """ + includeComments: Boolean - """Does the organization exist.""" - organizationExists(urlKey: String!): OrganizationExistsPayload! + """ + UUID of a team to use as a boost + """ + teamId: String + ): IssueSearchPayload! - """All links for the project.""" - projectLinks( - """A cursor to be used with last for backward pagination.""" + """ + All team memberships. + """ + teamMemberships( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10696,27 +18986,39 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): ProjectLinkConnection! + ): TeamMembershipConnection! - """One specific project link.""" - projectLink(id: String!): ProjectLink! + """ + One specific team membership. + """ + teamMembership(id: String!): TeamMembership! - """All projects.""" - projects( - """Filter returned projects.""" - filter: ProjectFilter + """ + All teams whose issues can be accessed by the user. This might be different from `administrableTeams`, which also includes teams whose settings can be changed by the user. + """ + teams( + """ + Filter returned teams. + """ + filter: TeamFilter - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10729,24 +19031,34 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): ProjectConnection! + ): TeamConnection! - """One specific project.""" - project(id: String!): Project! + """ + All teams you the user can administrate. Administrable teams are teams whose settings the user can change, but to whose issues the user doesn't necessarily have access to. + """ + administrableTeams( + """ + Filter returned teams. + """ + filter: TeamFilter - """All interactions on project updates.""" - projectUpdateInteractions( - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10759,69 +19071,69 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): ProjectUpdateInteractionConnection! - - """A specific interaction on a project update.""" - projectUpdateInteraction( - """The identifier of the project update interaction to retrieve.""" - id: String! - ): ProjectUpdateInteraction! - - """A specific project update.""" - projectUpdate( - """The identifier of the project update to retrieve.""" - id: String! - ): ProjectUpdate! - - """Sends a test push message.""" - pushSubscriptionTest: PushSubscriptionTestPayload! - - """The status of the rate limiter.""" - rateLimitStatus: RateLimitPayload! + ): TeamConnection! - """All roadmaps in the workspace.""" - roadmaps( - """A cursor to be used with last for backward pagination.""" - before: String + """ + One specific team. + """ + team(id: String!): Team! - """A cursor to be used with first for forward pagination""" - after: String + """ + All templates from all users. + """ + templates: [Template!]! + """ + A specific template. + """ + template( """ - The number of items to forward paginate (used with after). Defaults to 50. + The identifier of the template to retrieve. """ - first: Int + id: String! + ): Template! + """ + Returns all templates that are associated with the integration type. + """ + templatesForIntegration( """ - The number of items to backward paginate (used with before). Defaults to 50. + The type of integration for which to return associated templates """ - last: Int - - """Should archived resources be included (default: false)""" - includeArchived: Boolean + integrationType: String! + ): [Template!]! + """ + All users for the organization. + """ + users( """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + Filter returned users. """ - orderBy: PaginationOrderBy - ): RoadmapConnection! + filter: UserFilter - """One specific roadmap.""" - roadmap(id: String!): Roadmap! + """ + Should query return disabled/suspended users (default: false). + """ + includeDisabled: Boolean - """Custom views for the user.""" - roadmapToProjects( - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10834,24 +19146,49 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): RoadmapToProjectConnection! + ): UserConnection! - """One specific roadmapToProject.""" - roadmapToProject(id: String!): RoadmapToProject! + """ + One specific user. + """ + user( + """ + The identifier of the user to retrieve. To retrieve the authenticated user, use `viewer` query. + """ + id: String! + ): User! - """All team memberships.""" - teamMemberships( - """A cursor to be used with last for backward pagination.""" + """ + The currently authenticated user. + """ + viewer: User! + + """ + The user's settings. + """ + userSettings: UserSettings! + + """ + All webhooks. + """ + webhooks( + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10864,29 +19201,44 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): TeamMembershipConnection! + ): WebhookConnection! - """One specific team membership.""" - teamMembership(id: String!): TeamMembership! + """ + A specific webhook. + """ + webhook( + """ + The identifier of the webhook to retrieve. + """ + id: String! + ): Webhook! """ - All teams whose issues can be accessed by the user. This might be different from `administrableTeams`, which also includes teams whose settings can be changed by the user. + All issue workflow states. """ - teams( - """Filter returned teams.""" - filter: TeamFilter + workflowStates( + """ + Filter returned workflow states. + """ + filter: WorkflowStateFilter - """A cursor to be used with last for backward pagination.""" + """ + A cursor to be used with last for backward pagination. + """ before: String - """A cursor to be used with first for forward pagination""" + """ + A cursor to be used with first for forward pagination + """ after: String """ @@ -10899,302 +19251,443 @@ type Query { """ last: Int - """Should archived resources be included (default: false)""" + """ + Should archived resources be included (default: false) + """ includeArchived: Boolean """ By which field should the pagination order by. Available options are createdAt (default) and updatedAt. """ orderBy: PaginationOrderBy - ): TeamConnection! + ): WorkflowStateConnection! """ - All teams you the user can administrate. Administrable teams are teams whose settings the user can change, but to whose issues the user doesn't necessarily have access to. + One specific state. """ - administrableTeams( - """Filter returned teams.""" - filter: TeamFilter + workflowState(id: String!): WorkflowState! +} - """A cursor to be used with last for backward pagination.""" - before: String +union OrganizationInviteDetailsPayload = + OrganizationInviteFullDetailsPayload + | OrganizationAcceptedOrExpiredInviteDetailsPayload - """A cursor to be used with first for forward pagination""" - after: String +type Mutation { + """ + Creates a new API key. + """ + apiKeyCreate( + """ + The api key object to create. + """ + input: ApiKeyCreateInput! + ): ApiKeyPayload! + """ + Deletes an API key. + """ + apiKeyDelete( """ - The number of items to forward paginate (used with after). Defaults to 50. + The identifier of the API key to delete. """ - first: Int + id: String! + ): DeletePayload! + """ + Creates a new attachment, or updates existing if the same `url` and `issueId` is used. + """ + attachmentCreate( """ - The number of items to backward paginate (used with before). Defaults to 50. + The attachment object to create. """ - last: Int + input: AttachmentCreateInput! + ): AttachmentPayload! - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + Updates an existing issue attachment. + """ + attachmentUpdate( + """ + A partial attachment object to update the attachment with. + """ + input: AttachmentUpdateInput! """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + The identifier of the attachment to update. """ - orderBy: PaginationOrderBy - ): TeamConnection! + id: String! + ): AttachmentPayload! - """One specific team.""" - team(id: String!): Team! + """ + Unsyncs an existing synced Slack attachment. + """ + attachmentUnsyncSlack( + """ + The identifier of the attachment to unsync. + """ + id: String! + ): AttachmentPayload! - """All templates from all users.""" - templates: [Template!]! + """ + Link any url to an issue. + """ + attachmentLinkURL( + """ + Create attachment as a user with the provided name. This option is only available to OAuth applications creating attachments in `actor=application` mode. + """ + createAsUser: String - """A specific template.""" - template( - """The identifier of the template to retrieve.""" - id: String! - ): Template! + """ + Provide an external user avatar URL. Can only be used in conjunction with the `createAsUser` options. This option is only available to OAuth applications creating comments in `actor=application` mode. + """ + displayIconUrl: String - """All users for the organization.""" - users( - """Filter returned users.""" - filter: UserFilter + """ + The url to link. + """ + url: String! + + """ + The issue for which to link the url. + """ + issueId: String! + + """ + The title to use for the attachment. + """ + title: String - """Should query return disabled/suspended users (default: false).""" - includeDisabled: Boolean + """ + The id for the attachment. + """ + id: String + ): AttachmentPayload! - """A cursor to be used with last for backward pagination.""" - before: String + """ + Link an existing GitLab MR to an issue. + """ + attachmentLinkGitLabMR( + """ + Create attachment as a user with the provided name. This option is only available to OAuth applications creating attachments in `actor=application` mode. + """ + createAsUser: String - """A cursor to be used with first for forward pagination""" - after: String + """ + Provide an external user avatar URL. Can only be used in conjunction with the `createAsUser` options. This option is only available to OAuth applications creating comments in `actor=application` mode. + """ + displayIconUrl: String """ - The number of items to forward paginate (used with after). Defaults to 50. + The issue for which to link the GitLab merge request. """ - first: Int + issueId: String! """ - The number of items to backward paginate (used with before). Defaults to 50. + Optional attachment ID that may be provided through the API """ - last: Int + id: String - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + The URL of the GitLab merge request to link. + """ + url: String! """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + The owner of the GitLab repository. """ - orderBy: PaginationOrderBy - ): UserConnection! + owner: String! - """One specific user.""" - user( """ - The identifier of the user to retrieve. To retrieve the authenticated user, use `viewer` query. + The name of the GitLab repository. """ - id: String! - ): User! + repo: String! - """The currently authenticated user.""" - viewer: User! + """ + The GitLab merge request number to link. + """ + number: Float! + ): AttachmentPayload! - """The user's settings.""" - userSettings: UserSettings! + """ + Link an existing GitHub PR to an issue. + """ + attachmentLinkGitHubPR( + """ + Create attachment as a user with the provided name. This option is only available to OAuth applications creating attachments in `actor=application` mode. + """ + createAsUser: String - """All webhooks.""" - webhooks( - """A cursor to be used with last for backward pagination.""" - before: String + """ + Provide an external user avatar URL. Can only be used in conjunction with the `createAsUser` options. This option is only available to OAuth applications creating comments in `actor=application` mode. + """ + displayIconUrl: String - """A cursor to be used with first for forward pagination""" - after: String + """ + The issue for which to link the GitHub pull request. + """ + issueId: String! """ - The number of items to forward paginate (used with after). Defaults to 50. + Optional attachment ID that may be provided through the API """ - first: Int + id: String """ - The number of items to backward paginate (used with before). Defaults to 50. + The URL of the GitHub pull request to link. """ - last: Int + url: String! - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + The owner of the GitHub repository. + """ + owner: String! """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + The name of the GitHub repository. """ - orderBy: PaginationOrderBy - ): WebhookConnection! + repo: String! - """A specific webhook.""" - webhook( - """The identifier of the webhook to retrieve.""" - id: String! - ): Webhook! + """ + The GitHub pull request number to link. + """ + number: Float! + ): AttachmentPayload! - """All issue workflow states.""" - workflowStates( - """Filter returned workflow states.""" - filter: WorkflowStateFilter + """ + Link an existing Zendesk ticket to an issue. + """ + attachmentLinkZendesk( + """ + Create attachment as a user with the provided name. This option is only available to OAuth applications creating attachments in `actor=application` mode. + """ + createAsUser: String - """A cursor to be used with last for backward pagination.""" - before: String + """ + Provide an external user avatar URL. Can only be used in conjunction with the `createAsUser` options. This option is only available to OAuth applications creating comments in `actor=application` mode. + """ + displayIconUrl: String - """A cursor to be used with first for forward pagination""" - after: String + """ + The Zendesk ticket ID to link. + """ + ticketId: String! """ - The number of items to forward paginate (used with after). Defaults to 50. + The issue for which to link the Zendesk ticket. """ - first: Int + issueId: String! """ - The number of items to backward paginate (used with before). Defaults to 50. + Optional attachment ID that may be provided through the API """ - last: Int + id: String + ): AttachmentPayload! - """Should archived resources be included (default: false)""" - includeArchived: Boolean + """ + Link an existing Discord message to an issue. + """ + attachmentLinkDiscord( + """ + Create attachment as a user with the provided name. This option is only available to OAuth applications creating attachments in `actor=application` mode. + """ + createAsUser: String """ - By which field should the pagination order by. Available options are createdAt (default) and updatedAt. + Provide an external user avatar URL. Can only be used in conjunction with the `createAsUser` options. This option is only available to OAuth applications creating comments in `actor=application` mode. """ - orderBy: PaginationOrderBy - ): WorkflowStateConnection! + displayIconUrl: String - """One specific state.""" - workflowState(id: String!): WorkflowState! -} + """ + The issue for which to link the Discord message. + """ + issueId: String! -"""How trashed models should be loaded.""" -enum TrashOptionType { - includeTrash - excludeTrash - trashOnly -} + """ + Optional attachment ID that may be provided through the API + """ + id: String -type Mutation { - """[Deprecated] Creates a new event.""" - eventCreate( - """The event to create.""" - input: EventCreateInput! - ): EventPayload! + """ + The Discord channel ID for the message to link. + """ + channelId: String! - """Creates a new API key.""" - apiKeyCreate( - """The api key object to create.""" - input: ApiKeyCreateInput! - ): ApiKeyPayload! + """ + The Discord message ID for the message to link. + """ + messageId: String! - """Deletes an API key.""" - apiKeyDelete( - """The identifier of the API key to delete.""" - id: String! - ): ArchivePayload! + """ + The Discord message URL for the message to link. + """ + url: String! + ): AttachmentPayload! """ - Creates a new attachment, or updates existing if the same `url` and `issueId` is used. + Link an existing Slack message to an issue. """ - attachmentCreate( - """The attachment object to create.""" - input: AttachmentCreateInput! - ): AttachmentPayload! + attachmentLinkSlack( + """ + Create attachment as a user with the provided name. This option is only available to OAuth applications creating attachments in `actor=application` mode. + """ + createAsUser: String - """Updates an existing issue attachment.""" - attachmentUpdate( - """A partial attachment object to update the attachment with.""" - input: AttachmentUpdateInput! + """ + Provide an external user avatar URL. Can only be used in conjunction with the `createAsUser` options. This option is only available to OAuth applications creating comments in `actor=application` mode. + """ + displayIconUrl: String - """The identifier of the attachment to update.""" - id: String! - ): AttachmentPayload! + """ + The Slack channel ID for the message to link. + """ + channel: String! - """Link any url to an issue.""" - attachmentLinkURL( - """The title to use for the attachment.""" - title: String + """ + Unique identifier of either a thread's parent message or a message in the thread. + """ + ts: String - """The issue for which to link the url.""" + """ + The latest timestamp for the Slack message. + """ + latest: String! + + """ + The issue to which to link the Slack message. + """ issueId: String! - """The url to link.""" + """ + The Slack message URL for the message to link. + """ url: String! - ): AttachmentPayload! - """Link an existing Zendesk ticket to an issue.""" - attachmentLinkZendesk( - """The issue for which to link the Zendesk ticket.""" - issueId: String! + """ + Optional title that may be provided through the API + """ + title: String - """The Zendesk ticket ID to link.""" - ticketId: String! + """ + Optional attachment ID that may be provided through the API + """ + id: String ): AttachmentPayload! - """Link an existing Discord message to an issue.""" - attachmentLinkDiscord( - """The issue for which to link the Discord message.""" - issueId: String! - - """The Discord channel ID for the message to link.""" - channelId: String! + """ + Link an existing Front conversation to an issue. + """ + attachmentLinkFront( + """ + Create attachment as a user with the provided name. This option is only available to OAuth applications creating attachments in `actor=application` mode. + """ + createAsUser: String - """The Discord message ID for the message to link.""" - messageId: String! + """ + Provide an external user avatar URL. Can only be used in conjunction with the `createAsUser` options. This option is only available to OAuth applications creating comments in `actor=application` mode. + """ + displayIconUrl: String - """The Discord message URL for the message to link.""" - url: String! - ): AttachmentPayload! + """ + The Front conversation ID to link. + """ + conversationId: String! - """Link an existing Front conversation to an issue.""" - attachmentLinkFront( - """The issue for which to link the Front conversation.""" + """ + The issue for which to link the Front conversation. + """ issueId: String! - """The Front conversation ID to link.""" - conversationId: String! + """ + Optional attachment ID that may be provided through the API + """ + id: String ): FrontAttachmentPayload! - """Link an existing Intercom conversation to an issue.""" + """ + Link an existing Intercom conversation to an issue. + """ attachmentLinkIntercom( - """The issue for which to link the Intercom conversation.""" - issueId: String! + """ + Create attachment as a user with the provided name. This option is only available to OAuth applications creating attachments in `actor=application` mode. + """ + createAsUser: String + + """ + Provide an external user avatar URL. Can only be used in conjunction with the `createAsUser` options. This option is only available to OAuth applications creating comments in `actor=application` mode. + """ + displayIconUrl: String - """The Intercom conversation ID to link.""" + """ + The Intercom conversation ID to link. + """ conversationId: String! + + """ + Optional attachment ID that may be provided through the API + """ + id: String + + """ + The issue for which to link the Intercom conversation. + """ + issueId: String! ): AttachmentPayload! - """Link an existing Jira issue to an issue.""" + """ + Link an existing Jira issue to an issue. + """ attachmentLinkJiraIssue( - """The issue for which to link the Jira issue.""" + """ + The issue for which to link the Jira issue. + """ issueId: String! - """The Jira issue key or ID to link.""" + """ + The Jira issue key or ID to link. + """ jiraIssueId: String! ): AttachmentPayload! - """[DEPRECATED] Archives an issue attachment.""" + """ + [DEPRECATED] Archives an issue attachment. + """ attachmentArchive( - """The identifier of the attachment to archive.""" + """ + The identifier of the attachment to archive. + """ id: String! - ): ArchivePayload! @deprecated(reason: "This mutation is deprecated, please use `attachmentDelete` instead") + ): AttachmentArchivePayload! + @deprecated( + reason: "This mutation is deprecated, please use `attachmentDelete` instead" + ) - """Deletes an issue attachment.""" + """ + Deletes an issue attachment. + """ attachmentDelete( - """The identifier of the attachment to delete.""" + """ + The identifier of the attachment to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! """ Finds or creates a new user account by email and sends an email with token. """ emailUserAccountAuthChallenge( - """The data used for email authentication.""" + """ + The data used for email authentication. + """ input: EmailUserAccountAuthChallengeInput! ): EmailUserAccountAuthChallengeResponse! - """Authenticates a user account via email and authentication token.""" + """ + Authenticates a user account via email and authentication token. + """ emailTokenUserAccountAuth( - """The data used for token authentication.""" + """ + The data used for token authentication. + """ input: TokenUserAccountAuthInput! ): AuthResolverResponse! @@ -11202,7 +19695,9 @@ type Mutation { Authenticates a user account via email and authentication token for SAML. """ samlTokenUserAccountAuth( - """The data used for token authentication.""" + """ + The data used for token authentication. + """ input: TokenUserAccountAuthInput! ): AuthResolverResponse! @@ -11210,118 +19705,236 @@ type Mutation { Authenticate user account through Google OAuth. This is the 2nd step of OAuth flow. """ googleUserAccountAuth( - """The data used for Google authentication.""" + """ + The data used for Google authentication. + """ input: GoogleUserAccountAuthInput! ): AuthResolverResponse! - """Creates an organization from onboarding.""" + """ + Creates an organization from onboarding. + """ createOrganizationFromOnboarding( - """Onboarding survey.""" + """ + Onboarding survey. + """ survey: OnboardingCustomerSurvey - """Organization details for the new organization.""" + """ + Organization details for the new organization. + """ input: CreateOrganizationInput! ): CreateOrJoinOrganizationResponse! - """Join an organization from onboarding.""" + """ + Join an organization from onboarding. + """ joinOrganizationFromOnboarding( - """Organization details for the organization to join.""" + """ + Organization details for the organization to join. + """ input: JoinOrganizationInput! ): CreateOrJoinOrganizationResponse! - """Leave an organization.""" + """ + Leave an organization. + """ leaveOrganization( - """ID of the organization to leave.""" + """ + ID of the organization to leave. + """ organizationId: String! ): CreateOrJoinOrganizationResponse! - """Logout of all clients.""" + """ + Logout the client. + """ logout: LogoutResponse! - """Creates a new comment.""" + """ + Logout an individual session with its ID. + """ + logoutSession( + """ + ID of the session to logout. + """ + sessionId: String! + ): LogoutResponse! + + """ + Logout all of user's sessions including the active one. + """ + logoutAllSessions: LogoutResponse! + + """ + Logout all of user's sessions excluding the current one. + """ + logoutOtherSessions: LogoutResponse! + + """ + Creates a new comment. + """ commentCreate( - """The comment object to create.""" + """ + The comment object to create. + """ input: CommentCreateInput! ): CommentPayload! - """Updates a comment.""" + """ + Updates a comment. + """ commentUpdate( - """A partial comment object to update the comment with.""" + """ + A partial comment object to update the comment with. + """ input: CommentUpdateInput! - """The identifier of the comment to update.""" + """ + The identifier of the comment to update. + """ id: String! ): CommentPayload! - """Deletes a comment.""" + """ + Deletes a comment. + """ commentDelete( - """The identifier of the comment to delete.""" + """ + The identifier of the comment to delete. + """ + id: String! + ): DeletePayload! + + """ + [ALPHA] Resolves a comment. + """ + commentResolve( + resolvingCommentId: String + + """ + The identifier of the comment to update. + """ + id: String! + ): CommentPayload! + + """ + [ALPHA] Unresolves a comment. + """ + commentUnresolve( + """ + The identifier of the comment to update. + """ id: String! - ): ArchivePayload! + ): CommentPayload! - """Saves user message.""" + """ + Saves user message. + """ contactCreate( - """The contact entry to create.""" + """ + The contact entry to create. + """ input: ContactCreateInput! ): ContactPayload! - """[INTERNAL] Saves sales pricing inquiry to Front.""" + """ + [INTERNAL] Saves sales pricing inquiry to Front. + """ contactSalesCreate( - """The contact entry to create.""" + """ + The contact entry to create. + """ input: ContactSalesCreateInput! ): ContactPayload! - """Creates a new custom view.""" + """ + Creates a new custom view. + """ customViewCreate( - """The properties of the custom view to create.""" + """ + The properties of the custom view to create. + """ input: CustomViewCreateInput! ): CustomViewPayload! - """Updates a custom view.""" + """ + Updates a custom view. + """ customViewUpdate( - """The properties of the custom view to update.""" + """ + The properties of the custom view to update. + """ input: CustomViewUpdateInput! - """The identifier of the custom view to update.""" + """ + The identifier of the custom view to update. + """ id: String! ): CustomViewPayload! - """Deletes a custom view.""" + """ + Deletes a custom view. + """ customViewDelete( - """The identifier of the custom view to delete.""" + """ + The identifier of the custom view to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Creates a new cycle.""" + """ + Creates a new cycle. + """ cycleCreate( - """The cycle object to create.""" + """ + The cycle object to create. + """ input: CycleCreateInput! ): CyclePayload! - """Updates a cycle.""" + """ + Updates a cycle. + """ cycleUpdate( - """A partial cycle object to update the cycle with.""" + """ + A partial cycle object to update the cycle with. + """ input: CycleUpdateInput! - """The identifier of the cycle to update.""" + """ + The identifier of the cycle to update. + """ id: String! ): CyclePayload! - """Archives a cycle.""" + """ + Archives a cycle. + """ cycleArchive( - """The identifier of the cycle to archive.""" + """ + The identifier of the cycle to archive. + """ id: String! - ): ArchivePayload! + ): CycleArchivePayload! - """Creates a new document.""" + """ + Creates a new document. + """ documentCreate( - """The document to create.""" + """ + The document to create. + """ input: DocumentCreateInput! ): DocumentPayload! - """Updates a document.""" + """ + Updates a document. + """ documentUpdate( - """A partial document object to update the document with.""" + """ + A partial document object to update the document with. + """ input: DocumentUpdateInput! """ @@ -11330,366 +19943,651 @@ type Mutation { id: String! ): DocumentPayload! - """Deletes a document.""" + """ + Deletes a document. + """ documentDelete( - """The identifier of the document to delete.""" + """ + The identifier of the document to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Subscribes the email to the newsletter.""" + """ + [INTERNAL] Subscribes the email to the newsletter. + """ emailSubscribe( - """Subscription details.""" + """ + Subscription details. + """ input: EmailSubscribeInput! ): EmailSubscribePayload! - """Unsubscribes the user from one type of emails.""" + """ + Unsubscribes the user from one type of emails. + """ emailUnsubscribe( - """Unsubscription details.""" + """ + Unsubscription details. + """ input: EmailUnsubscribeInput! ): EmailUnsubscribePayload! - """Creates a custom emoji.""" + """ + Creates a custom emoji. + """ emojiCreate( - """The emoji object to create.""" + """ + The emoji object to create. + """ input: EmojiCreateInput! ): EmojiPayload! - """Deletes an emoji.""" + """ + Deletes an emoji. + """ emojiDelete( - """The identifier of the emoji to delete.""" + """ + The identifier of the emoji to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Creates a new favorite (project, cycle etc).""" + """ + Creates a new favorite (project, cycle etc). + """ favoriteCreate( - """The favorite object to create.""" + """ + The favorite object to create. + """ input: FavoriteCreateInput! ): FavoritePayload! - """Updates a favorite.""" + """ + Updates a favorite. + """ favoriteUpdate( - """A partial favorite object to update the favorite with.""" + """ + A partial favorite object to update the favorite with. + """ input: FavoriteUpdateInput! - """The identifier of the favorite to update.""" + """ + The identifier of the favorite to update. + """ id: String! ): FavoritePayload! - """Deletes a favorite reference.""" + """ + Deletes a favorite reference. + """ favoriteDelete( - """The identifier of the favorite reference to delete.""" + """ + The identifier of the favorite reference to delete. + """ id: String! - ): ArchivePayload! - - """Saves user feedback.""" - feedbackCreate( - """The feedback entry to create.""" - input: FeedbackCreateInput! - ): FeedbackPayload! + ): DeletePayload! """ XHR request payload to upload an images, video and other attachments directly to Linear's cloud storage. """ fileUpload( - """Optional metadata.""" + """ + Optional metadata. + """ metaData: JSON - """Should the file be made publicly accessible (default: false).""" + """ + Should the file be made publicly accessible (default: false). + """ makePublic: Boolean - """File size of the uploaded file.""" + """ + File size of the uploaded file. + """ size: Int! - """MIME type of the uploaded file.""" + """ + MIME type of the uploaded file. + """ contentType: String! - """Filename of the uploaded file.""" + """ + Filename of the uploaded file. + """ filename: String! ): UploadPayload! - """Upload an image from an URL to Linear.""" - imageUploadFromUrl( - """URL of the file to be uploaded to Linear.""" - url: String! - ): ImageUploadFromUrlPayload! + """ + XHR request payload to upload a file for import, directly to Linear's cloud storage. + """ + importFileUpload( + """ + Optional metadata. + """ + metaData: JSON - """Creates a new initiative.""" - initiativeCreate( - """The issue object to create.""" - input: InitiativeCreateInput! - ): InitiativePayload! + """ + File size of the uploaded file. + """ + size: Int! - """Updates a initiative.""" - initiativeUpdate( - """A partial initiative object to update the initiative with.""" - input: InitiativeUpdateInput! + """ + MIME type of the uploaded file. + """ + contentType: String! - """The identifier of the initiative to update.""" - id: String! - ): InitiativePayload! + """ + Filename of the uploaded file. + """ + filename: String! + ): UploadPayload! - """Deletes a initiative.""" - initiativeDelete( - """The identifier of the initiative to delete.""" - id: String! - ): ArchivePayload! + """ + Upload an image from an URL to Linear. + """ + imageUploadFromUrl( + """ + URL of the file to be uploaded to Linear. + """ + url: String! + ): ImageUploadFromUrlPayload! - """Requests a currently unavailable integration.""" + """ + Requests a currently unavailable integration. + """ integrationRequest( - """Integration request details.""" + """ + Integration request details. + """ input: IntegrationRequestInput! ): IntegrationRequestPayload! - """[INTERNAL] Updates the integration.""" + """ + [INTERNAL] Updates the integration. + """ integrationSettingsUpdate( - """An integration settings object.""" + """ + An integration settings object. + """ input: IntegrationSettingsInput! - """The identifier of the integration to update.""" + """ + The identifier of the integration to update. + """ id: String! ): IntegrationPayload! - """Generates a webhook for the GitHub commit integration.""" + """ + Generates a webhook for the GitHub commit integration. + """ integrationGithubCommitCreate: GitHubCommitIntegrationPayload! - """Connects the organization with the GitHub App.""" + """ + Connects the organization with the GitHub App. + """ integrationGithubConnect( - """The GitHub data to connect with.""" + """ + The GitHub data to connect with. + """ + installationId: String! + ): IntegrationPayload! + + """ + Connects the organization with the GitHub Sync App. + """ + integrationGithubSync( + """ + The GitHub data to connect with. + """ installationId: String! ): IntegrationPayload! - """Connects the organization with a GitLab Access Token.""" + """ + Connects the organization with a GitLab Access Token. + """ integrationGitlabConnect( - """The URL of the GitLab installation""" + """ + The URL of the GitLab installation + """ gitlabUrl: String! - """The GitLab Access Token to connect with.""" + """ + The GitLab Access Token to connect with. + """ accessToken: String! ): IntegrationPayload! - """Creates an integration api key for Airbyte to connect with Linear""" + """ + Creates an integration api key for Airbyte to connect with Linear + """ airbyteIntegrationConnect( - """Airbyte integration settings.""" + """ + Airbyte integration settings. + """ input: AirbyteConfigurationInput! ): IntegrationPayload! + """ + [Internal] Connects the Google Calendar to the user to this Linear account via OAuth2. + """ + integrationGoogleCalendarPersonalConnect( + """ + [Internal] The Google OAuth code. + """ + code: String! + ): IntegrationPayload! + """ [INTERNAL] Connects the organization with a Jira Personal Access Token. """ jiraIntegrationConnect( - """Jira integration settings.""" + """ + Jira integration settings. + """ input: JiraConfigurationInput! ): IntegrationPayload! - """Integrates the organization with Intercom.""" + """ + Integrates the organization with Intercom. + """ integrationIntercom( - """The Intercom OAuth redirect URI.""" + """ + 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! - """The Intercom OAuth code.""" + """ + The Intercom OAuth code. + """ code: String! ): IntegrationPayload! - """Disconnects the organization from Intercom.""" + """ + Disconnects the organization from Intercom. + """ integrationIntercomDelete: IntegrationPayload! - """[DEPRECATED] Updates settings on the Intercom integration.""" + """ + [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: "This mutation is deprecated, please use `integrationSettingsUpdate` instead") + ): IntegrationPayload! + @deprecated( + reason: "This mutation is deprecated, please use `integrationSettingsUpdate` instead" + ) - """Integrates the organization with Discord.""" + """ + Integrates the organization with Discord. + """ integrationDiscord( - """The Discord OAuth redirect URI.""" + """ + The Discord OAuth redirect URI. + """ + redirectUri: String! + + """ + The Discord OAuth code. + """ + code: String! + ): IntegrationPayload! + + """ + [INTERNAL] Integrates the organization with PagerDuty. + """ + integrationPagerDutyConnect( + """ + The PagerDuty OAuth code. + """ + code: String! + + """ + The PagerDuty OAuth redirect URI. + """ + redirectUri: String! + ): IntegrationPayload! + + """ + [INTERNAL] Refresh PagerDuty schedule mappings. + """ + integrationPagerDutyRefreshScheduleMappings: IntegrationPayload! + + """ + Updates the organization's Slack integration. + """ + integrationUpdateSlack( + """ + The Slack OAuth redirect URI. + """ redirectUri: String! - """The Discord OAuth code.""" + """ + The Slack OAuth code. + """ code: String! ): IntegrationPayload! - """Integrates the organization with Slack.""" + """ + Integrates the organization with Slack. + """ integrationSlack( """ - [DEPRECATED] Whether or not v2 of Slack OAuth should be used. No longer used. + [DEPRECATED] Whether or not v2 of Slack OAuth should be used. No longer used. + """ + shouldUseV2Auth: Boolean + + """ + The Slack OAuth redirect URI. + """ + redirectUri: String! + + """ + The Slack OAuth code. + """ + code: String! + ): IntegrationPayload! + + """ + Integrates the organization with the Slack Asks app + """ + integrationSlackAsks( + """ + The Slack OAuth redirect URI. + """ + redirectUri: String! + + """ + The Slack OAuth code. + """ + code: String! + ): IntegrationPayload! + + """ + Integrates your personal notifications with Slack. + """ + integrationSlackPersonal( + """ + The Slack OAuth redirect URI. """ - shouldUseV2Auth: Boolean - - """The Slack OAuth redirect URI.""" redirectUri: String! - """The Slack OAuth code.""" + """ + The Slack OAuth code. + """ code: String! ): IntegrationPayload! - """Integrates your personal notifications with Slack.""" - integrationSlackPersonal( - """The Slack OAuth redirect URI.""" + """ + Connect a Slack channel to Asks. + """ + integrationAsksConnectChannel( + """ + The Slack OAuth redirect URI. + """ redirectUri: String! - """The Slack OAuth code.""" + """ + The Slack OAuth code. + """ code: String! - ): IntegrationPayload! + ): AsksChannelConnectPayload! - """Slack webhook integration.""" + """ + Slack webhook integration. + """ integrationSlackPost( """ [DEPRECATED] Whether or not v2 of Slack OAuth should be used. No longer used. """ shouldUseV2Auth: Boolean - """The Slack OAuth redirect URI.""" + """ + The Slack OAuth redirect URI. + """ redirectUri: String! - """Integration's associated team.""" + """ + Integration's associated team. + """ teamId: String! - """The Slack OAuth code.""" + """ + The Slack OAuth code. + """ code: String! ): IntegrationPayload! - """Slack integration for project notifications.""" + """ + Slack integration for project notifications. + """ integrationSlackProjectPost( """ The service to enable once connected, either 'notifications' or 'updates'. """ service: String! - """The Slack OAuth redirect URI.""" + """ + The Slack OAuth redirect URI. + """ redirectUri: String! - """Integration's associated project.""" + """ + Integration's associated project. + """ projectId: String! - """The Slack OAuth code.""" + """ + The Slack OAuth code. + """ code: String! ): IntegrationPayload! - """Slack integration for organization level project update notifications.""" + """ + Slack integration for organization level project update notifications. + """ integrationSlackOrgProjectUpdatesPost( - """The Slack OAuth redirect URI.""" + """ + The Slack OAuth redirect URI. + """ redirectUri: String! - """The Slack OAuth code.""" + """ + The Slack OAuth code. + """ code: String! ): IntegrationPayload! - """Imports custom emojis from your Slack workspace.""" + """ + Imports custom emojis from your Slack workspace. + """ integrationSlackImportEmojis( - """The Slack OAuth redirect URI.""" + """ + The Slack OAuth redirect URI. + """ redirectUri: String! - """The Slack OAuth code.""" + """ + The Slack OAuth code. + """ code: String! ): IntegrationPayload! - """Integrates the organization with Figma.""" + """ + Integrates the organization with Figma. + """ integrationFigma( - """The Figma OAuth redirect URI.""" + """ + The Figma OAuth redirect URI. + """ redirectUri: String! - """The Figma OAuth code.""" + """ + The Figma OAuth code. + """ code: String! ): IntegrationPayload! - """Integrates the organization with Google Sheets.""" + """ + Integrates the organization with Google Sheets. + """ integrationGoogleSheets( - """The Google OAuth code.""" + """ + The Google OAuth code. + """ code: String! ): IntegrationPayload! - """Manually update Google Sheets data.""" + """ + Manually update Google Sheets data. + """ refreshGoogleSheetsData( - """The identifier of the Google Sheets integration to update.""" + """ + The identifier of the Google Sheets integration to update. + """ id: String! ): IntegrationPayload! - """Integrates the organization with Sentry.""" + """ + Integrates the organization with Sentry. + """ integrationSentryConnect( - """The slug of the Sentry organization being connected.""" + """ + The slug of the Sentry organization being connected. + """ organizationSlug: String! - """The Sentry grant code that's exchanged for OAuth tokens.""" + """ + The Sentry grant code that's exchanged for OAuth tokens. + """ code: String! - """The Sentry installationId to connect with.""" + """ + The Sentry installationId to connect with. + """ installationId: String! ): IntegrationPayload! - """Integrates the organization with Front.""" + """ + Integrates the organization with Front. + """ integrationFront( - """The Front OAuth redirect URI.""" + """ + The Front OAuth redirect URI. + """ redirectUri: String! - """The Front OAuth code.""" + """ + The Front OAuth code. + """ code: String! ): IntegrationPayload! - """Integrates the organization with Zendesk.""" + """ + Integrates the organization with Zendesk. + """ integrationZendesk( - """The Zendesk OAuth redirect URI.""" - redirectUri: String! - - """The Zendesk OAuth scopes.""" - scope: String! + """ + The Zendesk installation subdomain. + """ + subdomain: String! - """The Zendesk OAuth code.""" + """ + The Zendesk OAuth code. + """ code: String! - """The Zendesk installation subdomain.""" - subdomain: String! + """ + The Zendesk OAuth scopes. + """ + scope: String! + + """ + The Zendesk OAuth redirect URI. + """ + redirectUri: String! ): IntegrationPayload! - """Enables Loom integration for the organization.""" + """ + Enables Loom integration for the organization. + """ integrationLoom: IntegrationPayload! @deprecated(reason: "Not available.") - """Deletes an integration.""" + """ + Deletes an integration. + """ integrationDelete( - """The identifier of the integration to delete.""" - id: String! - ): ArchivePayload! - - """Archives an integration resource.""" - integrationResourceArchive( - """The identifier of the integration resource to archive.""" + """ + The identifier of the integration to delete. + """ id: String! - ): ArchivePayload! @deprecated(reason: "This query will soon be deprecated, please use `attachmentArchive` instead") + ): DeletePayload! - """Creates new settings for one or more integrations.""" + """ + Creates new settings for one or more integrations. + """ integrationsSettingsCreate( - """The settings to create.""" + """ + The settings to create. + """ input: IntegrationsSettingsCreateInput! ): IntegrationsSettingsPayload! - """Updates settings related to integrations for a project or a team.""" + """ + Updates settings related to integrations for a project or a team. + """ integrationsSettingsUpdate( - """A settings object to update the settings with.""" + """ + A settings object to update the settings with. + """ input: IntegrationsSettingsUpdateInput! - """The identifier of the settings to update.""" + """ + The identifier of the settings to update. + """ id: String! ): IntegrationsSettingsPayload! - """Creates a new integrationTemplate join.""" + """ + Creates a new integrationTemplate join. + """ integrationTemplateCreate( - """The properties of the integrationTemplate to create.""" + """ + The properties of the integrationTemplate to create. + """ input: IntegrationTemplateCreateInput! ): IntegrationTemplatePayload! - """Deletes a integrationTemplate.""" + """ + Deletes a integrationTemplate. + """ integrationTemplateDelete( - """The identifier of the integrationTemplate to delete.""" + """ + The identifier of the integrationTemplate to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Kicks off a GitHub import job.""" + """ + Kicks off a GitHub import job. + """ issueImportCreateGithub( - """ID of issue import. If not provided it will be generated.""" + """ + ID of issue import. If not provided it will be generated. + """ id: String - """Whether or not we should collect the data for closed issues.""" + """ + Whether or not we should collect the data for closed issues. + """ includeClosedIssues: Boolean """ @@ -11697,7 +20595,9 @@ type Mutation { """ instantProcess: Boolean - """Whether or not we should import GitHub organization level projects.""" + """ + Whether or not we should import GitHub organization level projects. + """ githubShouldImportOrgProjects: Boolean """ @@ -11705,28 +20605,44 @@ type Mutation { """ githubRepoOwner: String! - """GitHub repository name from which we will import data.""" + """ + GitHub repository name from which we will import data. + """ githubRepoName: String! - """GitHub token to fetch information from the GitHub API.""" + """ + GitHub token to fetch information from the GitHub API. + """ githubToken: String! - """Name of new team. When teamId is not set.""" + """ + Name of new team. When teamId is not set. + """ teamName: String - """ID of the team into which to import data.""" + """ + ID of the team into which to import data. + """ teamId: String - """ID of the organization into which to import data.""" + """ + ID of the organization into which to import data. + """ organizationId: String ): IssueImportPayload! - """Kicks off a Jira import job.""" + """ + Kicks off a Jira import job. + """ issueImportCreateJira( - """ID of issue import. If not provided it will be generated.""" + """ + ID of issue import. If not provided it will be generated. + """ id: String - """Whether or not we should collect the data for closed issues.""" + """ + Whether or not we should collect the data for closed issues. + """ includeClosedIssues: Boolean """ @@ -11734,34 +20650,94 @@ type Mutation { """ instantProcess: Boolean - """Jira installation or cloud hostname.""" + """ + Jira installation or cloud hostname. + """ jiraHostname: String! - """Jira user account email.""" + """ + Jira user account email. + """ jiraEmail: String! - """Jira project key from which we will import data.""" + """ + Jira project key from which we will import data. + """ jiraProject: String! - """Jira personal access token to access Jira REST API.""" + """ + Jira personal access token to access Jira REST API. + """ jiraToken: String! - """Name of new team. When teamId is not set.""" + """ + Name of new team. When teamId is not set. + """ teamName: String - """ID of the team into which to import data. Empty to create new team.""" + """ + ID of the team into which to import data. Empty to create new team. + """ teamId: String - """ID of the organization into which to import data.""" + """ + ID of the organization into which to import data. + """ + organizationId: String + ): IssueImportPayload! + + """ + Kicks off a Jira import job from a CSV. + """ + issueImportCreateCSVJira( + """ + ID of the organization into which to import data. + """ organizationId: String + + """ + ID of the team into which to import data. Empty to create new team. + """ + teamId: String + + """ + Name of new team. When teamId is not set. + """ + teamName: String + + """ + URL for the CSV. + """ + csvUrl: String! + + """ + Jira installation or cloud hostname. + """ + jiraHostname: String + + """ + Jira personal access token to access Jira REST API. + """ + jiraToken: String + + """ + Jira user account email. + """ + jiraEmail: String ): IssueImportPayload! - """Kicks off a Shortcut (formerly Clubhouse) import job.""" + """ + Kicks off a Shortcut (formerly Clubhouse) import job. + """ issueImportCreateClubhouse( - """ID of issue import. If not provided it will be generated.""" + """ + ID of issue import. If not provided it will be generated. + """ id: String - """Whether or not we should collect the data for closed issues.""" + """ + Whether or not we should collect the data for closed issues. + """ includeClosedIssues: Boolean """ @@ -11770,31 +20746,43 @@ type Mutation { instantProcess: Boolean """ - Shortcut (formerly Clubhouse) team name to choose which issues we should import. + Shortcut (formerly Clubhouse) group name to choose which issues we should import. """ - clubhouseTeamName: String! + clubhouseGroupName: String! """ Shortcut (formerly Clubhouse) token to fetch information from the Clubhouse API. """ clubhouseToken: String! - """Name of new team. When teamId is not set.""" + """ + Name of new team. When teamId is not set. + """ teamName: String - """ID of the team into which to import data.""" + """ + ID of the team into which to import data. + """ teamId: String - """ID of the organization into which to import data.""" + """ + ID of the organization into which to import data. + """ organizationId: String ): IssueImportPayload! - """Kicks off an Asana import job.""" + """ + Kicks off an Asana import job. + """ issueImportCreateAsana( - """ID of issue import. If not provided it will be generated.""" + """ + ID of issue import. If not provided it will be generated. + """ id: String - """Whether or not we should collect the data for closed issues.""" + """ + Whether or not we should collect the data for closed issues. + """ includeClosedIssues: Boolean """ @@ -11802,365 +20790,548 @@ type Mutation { """ instantProcess: Boolean - """Asana team name to choose which issues we should import.""" + """ + Asana team name to choose which issues we should import. + """ asanaTeamName: String! - """Asana token to fetch information from the Asana API.""" + """ + Asana token to fetch information from the Asana API. + """ asanaToken: String! - """Name of new team. When teamId is not set.""" + """ + Name of new team. When teamId is not set. + """ teamName: String - """ID of the team into which to import data.""" + """ + ID of the team into which to import data. + """ teamId: String - """ID of the organization into which to import data.""" + """ + ID of the organization into which to import data. + """ organizationId: String ): IssueImportPayload! - """Deletes an import job.""" + """ + Deletes an import job. + """ issueImportDelete( - """ID of the issue import to delete.""" + """ + ID of the issue import to delete. + """ issueImportId: String! ): IssueImportDeletePayload! - """Kicks off import processing.""" + """ + Kicks off import processing. + """ issueImportProcess( - """The mapping configuration to use for processing the import.""" + """ + The mapping configuration to use for processing the import. + """ mapping: JSONObject! - """ID of the issue import which we're going to process.""" + """ + ID of the issue import which we're going to process. + """ issueImportId: String! ): IssueImportPayload! - """Updates the mapping for the issue import.""" + """ + Updates the mapping for the issue import. + """ issueImportUpdate( - """The properties of the issue import to update.""" + """ + The properties of the issue import to update. + """ input: IssueImportUpdateInput! - """The identifier of the issue import.""" + """ + The identifier of the issue import. + """ id: String! ): IssueImportPayload! - """Creates a new label.""" + """ + Creates a new label. + """ issueLabelCreate( """ Whether to replace all team-specific labels with the same name with this newly created workspace label. """ replaceTeamLabels: Boolean - """The issue label to create.""" + """ + The issue label to create. + """ input: IssueLabelCreateInput! ): IssueLabelPayload! - """Updates an label.""" + """ + Updates an label. + """ issueLabelUpdate( - """A partial label object to update.""" + """ + A partial label object to update. + """ input: IssueLabelUpdateInput! - """The identifier of the label to update.""" + """ + The identifier of the label to update. + """ id: String! ): IssueLabelPayload! - """Archives an issue label.""" - issueLabelArchive( - """The identifier of the label to archive.""" - id: String! - ): ArchivePayload! @deprecated(reason: "Labels are deleted instead of archived.") - - """Deletes an issue label.""" + """ + Deletes an issue label. + """ issueLabelDelete( - """The identifier of the label to delete.""" + """ + The identifier of the label to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Creates a new issue relation.""" + """ + Creates a new issue relation. + """ issueRelationCreate( - """The issue relation to create.""" + """ + The issue relation to create. + """ input: IssueRelationCreateInput! ): IssueRelationPayload! - """Updates an issue relation.""" + """ + Updates an issue relation. + """ issueRelationUpdate( - """The properties of the issue relation to update.""" + """ + The properties of the issue relation to update. + """ input: IssueRelationUpdateInput! - """The identifier of the issue relation to update.""" + """ + The identifier of the issue relation to update. + """ id: String! ): IssueRelationPayload! - """Deletes an issue relation.""" + """ + Deletes an issue relation. + """ issueRelationDelete( - """The identifier of the issue relation to delete.""" + """ + The identifier of the issue relation to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Creates a new issue.""" + """ + Creates a new issue. + """ issueCreate( - """The issue object to create.""" + """ + The issue object to create. + """ input: IssueCreateInput! ): IssuePayload! - """Updates an issue.""" + """ + Updates an issue. + """ issueUpdate( - """A partial issue object to update the issue with.""" + """ + A partial issue object to update the issue with. + """ input: IssueUpdateInput! - """The identifier of the issue to update.""" + """ + The identifier of the issue to update. + """ id: String! ): IssuePayload! - """Updates multiple issues at once.""" + """ + Updates multiple issues at once. + """ issueBatchUpdate( - """A partial issue object to update the issues with.""" + """ + A partial issue object to update the issues with. + """ input: IssueUpdateInput! - """The id's of the issues to update. Can't be more than 50 at a time.""" + """ + The id's of the issues to update. Can't be more than 50 at a time. + """ ids: [UUID!]! ): IssueBatchPayload! - """Archives an issue.""" + """ + Archives an issue. + """ issueArchive( - """Whether to trash the issue""" + """ + Whether to trash the issue + """ trash: Boolean - """The identifier of the issue to archive.""" + """ + The identifier of the issue to archive. + """ id: String! - ): ArchivePayload! + ): IssueArchivePayload! - """Unarchives an issue.""" + """ + Unarchives an issue. + """ issueUnarchive( - """The identifier of the issue to archive.""" + """ + The identifier of the issue to archive. + """ id: String! - ): ArchivePayload! + ): IssueArchivePayload! - """Deletes (trashes) an issue.""" + """ + Deletes (trashes) an issue. + """ issueDelete( - """The identifier of the issue to delete.""" + """ + The identifier of the issue to delete. + """ id: String! - ): ArchivePayload! - - """Creates a new milestone.""" - milestoneCreate( - """The issue object to create.""" - input: MilestoneCreateInput! - ): MilestonePayload! @deprecated(reason: "Milestones will be removed. Use roadmaps instead.") - - """Updates a milestone.""" - milestoneUpdate( - """A partial milestone object to update the milestone with.""" - input: MilestoneUpdateInput! + ): IssueArchivePayload! - """The identifier of the milestone to update.""" - id: String! - ): MilestonePayload! @deprecated(reason: "Milestones will be removed. Use roadmaps instead.") + """ + Adds a label to an issue. + """ + issueAddLabel( + """ + The identifier of the label to add. + """ + labelId: String! - """Deletes a milestone.""" - milestoneDelete( - """The identifier of the milestone to delete.""" + """ + The identifier of the issue to add the label to. + """ id: String! - ): ArchivePayload! @deprecated(reason: "Milestones will be removed. Use roadmaps instead.") - - """Migrates milestones to roadmaps""" - migrateMilestonesToRoadmaps( - """Ids for milestones to migrate and milestones to delete""" - input: MilestonesMigrateInput! - ): MilestoneMigrationPayload! + ): IssuePayload! - """Updates a notification.""" - notificationUpdate( - """A partial notification object to update the notification with.""" - input: NotificationUpdateInput! + """ + Removes a label from an issue. + """ + issueRemoveLabel( + """ + The identifier of the label to remove. + """ + labelId: String! - """The identifier of the notification to update.""" + """ + The identifier of the issue to remove the label from. + """ id: String! - ): NotificationPayload! + ): IssuePayload! - """Archives a notification.""" - notificationArchive( - """The id of the notification to archive.""" - id: String! - ): ArchivePayload! + """ + Adds an issue reminder. Will cause a notification to be sent when the issue reminder time is reached. + """ + issueReminder( + """ + The time when a reminder notification will be sent. + """ + reminderAt: DateTime! - """Unarchives a notification.""" - notificationUnarchive( - """The id of the notification to archive.""" + """ + The identifier of the issue to add a reminder for. + """ id: String! - ): ArchivePayload! - - """Creates a new notification subscription for a team or a project.""" - notificationSubscriptionCreate( - """The subscription object to create.""" - input: NotificationSubscriptionCreateInput! - ): NotificationSubscriptionPayload! + ): IssuePayload! - """Updates a notification subscription.""" - notificationSubscriptionUpdate( + """ + Subscribes a user to an issue. + """ + issueSubscribe( """ - A partial notification subscription object to update the notification subscription with. + The identifier of the user to subscribe, default is the current user. """ - input: NotificationSubscriptionUpdateInput! + userId: String - """The identifier of the notification subscription to update.""" + """ + The identifier of the issue to subscribe to. + """ id: String! - ): NotificationSubscriptionPayload! + ): IssuePayload! - """Deletes a notification subscription reference.""" - notificationSubscriptionDelete( - """The identifier of the notification subscription reference to delete.""" + """ + Unsubscribes a user from an issue. + """ + issueUnsubscribe( + """ + The identifier of the user to unsubscribe, default is the current user. + """ + userId: String + + """ + The identifier of the issue to unsubscribe from. + """ id: String! - ): ArchivePayload! + ): IssuePayload! """ - [Internal] Creates a temporary authentication code that can be exchanged for an OAuth token. + [INTERNAL] Updates an issue description from the Front app to handle Front attachments correctly. """ - oauthAuthStringChallenge( - """The group of scopes that are being requested.""" - scope: [String!]! + issueDescriptionUpdateFromFront( + """ + Description to update the issue with. + """ + description: String! - """The identifier of the OAuth client that's trying to authenticate.""" - appId: String! - ): OauthAuthStringChallengePayload! + """ + The identifier of the issue to update. + """ + id: String! + ): IssuePayload! - """[Internal] Authenticates an auth string by the user.""" - oauthAuthStringAuthorize( - """The auth string to authenticate.""" - authString: String! + """ + Updates a notification. + """ + notificationUpdate( + """ + A partial notification object to update the notification with. + """ + input: NotificationUpdateInput! - """The identifier of the OAuth client that's trying to authenticate.""" - appId: String! - ): OauthAuthStringAuthorizePayload! + """ + The identifier of the notification to update. + """ + id: String! + ): NotificationPayload! """ - [Internal] Returns an access token once the auth string has been authenticated. + Marks all past notifications for the associated entity as read. """ - oauthAuthStringCheck( - """The auth string to authenticate.""" - authString: String! + notificationMarkReadAll( + """ + The time when notification was marked as read. + """ + readAt: DateTime! - """The identifier of the OAuth client that's trying to authenticate.""" - appId: String! - ): OauthAuthStringCheckPayload! + """ + The type and id of the entity to archive notifications for. + """ + input: NotificationEntityInput! + ): NotificationBatchActionPayload! - """[Internal] Creates a new OAuth client approval request.""" - oauthClientApprovalCreate( - """The OAuth client approval request object to create.""" - input: OauthClientApprovalCreateInput! - ): OauthClientApprovalPayload! + """ + Marks all past notifications for the associated entity as unread. + """ + notificationMarkUnreadAll( + """ + The type and id of the entity to archive notifications for. + """ + input: NotificationEntityInput! + ): NotificationBatchActionPayload! - """[Internal] Updates an OAuth client approval request.""" - oauthClientApprovalUpdate( - """A partial client approval request object to update the request with.""" - input: OauthClientApprovalUpdateInput! + """ + Snoozes a notification and all past notifications for the associated entity. + """ + notificationSnoozeAll( + """ + The time until a notification will be snoozed. After that it will appear in the inbox again. + """ + snoozedUntilAt: DateTime! - """The identifier of the OAuth client approval request to update.""" - id: String! - ): OauthClientApprovalPayload! + """ + The type and id of the entity to archive notifications for. + """ + input: NotificationEntityInput! + ): NotificationBatchActionPayload! - """Creates a new OAuth client.""" - oauthClientCreate( - """The OAuth client application object to create.""" - input: OauthClientCreateInput! - ): OauthClientPayload! + """ + Unsnoozes a notification and all past notifications for the associated entity. + """ + notificationUnsnoozeAll( + """ + The time when the notification was unsnoozed. + """ + unsnoozedAt: DateTime! - """Updates an OAuth client.""" - oauthClientUpdate( - """A partial client object to update the OAuth client with.""" - input: OauthClientUpdateInput! + """ + The type and id of the entity to archive notifications for. + """ + input: NotificationEntityInput! + ): NotificationBatchActionPayload! - """The identifier of the OAuth client to update.""" + """ + Archives a notification. + """ + notificationArchive( + """ + The id of the notification to archive. + """ id: String! - ): OauthClientPayload! + ): NotificationArchivePayload! - """Archives an OAuth client.""" - oauthClientArchive( - """The identifier of the OAuth client to archive.""" - id: String! - ): ArchivePayload! + """ + Archives all of the user's past notifications for the associated entity. + """ + notificationArchiveAll( + """ + The type and id of the entity to archive notifications for. + """ + input: NotificationEntityInput! + ): NotificationBatchActionPayload! - """Updates an OAuth client.""" - oauthClientRotateSecret( + """ + Unarchives a notification. + """ + notificationUnarchive( """ - The identifier of the OAuth client for which we want to rotate the secret. + The id of the notification to archive. """ id: String! - ): RotateSecretPayload! - - """Revokes an OAuth token.""" - oauthTokenRevoke( - """The group of scopes for the tokens to be revoked.""" - scope: [String!]! + ): NotificationArchivePayload! - """The identifier of the OAuth client for the tokens to be revoked.""" - appId: String! - ): OauthTokenRevokePayload! + """ + Creates a new notification subscription for a cycle, custom view, label, project or team. + """ + notificationSubscriptionCreate( + """ + The subscription object to create. + """ + input: NotificationSubscriptionCreateInput! + ): NotificationSubscriptionPayload! """ - [INTERNAL] Revokes all OAuth tokens in a workspace for a given app and scope set. + Updates a notification subscription. """ - oauthTokenWorkspaceRevoke( - """The group of scopes for the tokens to be revoked.""" - scope: [String!] + notificationSubscriptionUpdate( + """ + A partial notification subscription object to update the notification subscription with. + """ + input: NotificationSubscriptionUpdateInput! - """The identifier of the OAuth client for the tokens to be revoked.""" - appId: String! - ): OauthTokensRevokePayload! + """ + The identifier of the notification subscription to update. + """ + id: String! + ): 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." + ) - """[INTERNAL] Verifies a domain claim.""" + """ + [INTERNAL] Verifies a domain claim. + """ organizationDomainClaim( - """The ID of the organization domain to claim.""" + """ + The ID of the organization domain to claim. + """ id: String! ): OrganizationDomainSimplePayload! - """[INTERNAL] Verifies a domain to be added to an organization.""" + """ + [INTERNAL] Verifies a domain to be added to an organization. + """ organizationDomainVerify( - """The organization domain to verify.""" + """ + The organization domain to verify. + """ input: OrganizationDomainVerificationInput! ): OrganizationDomainPayload! - """[INTERNAL] Adds a domain to be allowed for an organization.""" + """ + [INTERNAL] Adds a domain to be allowed for an organization. + """ organizationDomainCreate( - """The organization domain entry to create.""" + """ + Whether to trigger an email verification flow during domain creation. + """ + triggerEmailVerification: Boolean + + """ + The organization domain entry to create. + """ input: OrganizationDomainCreateInput! ): OrganizationDomainPayload! - """Deletes a domain.""" + """ + Deletes a domain. + """ organizationDomainDelete( - """The identifier of the domain to delete.""" + """ + The identifier of the domain to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Creates a new organization invite.""" + """ + Creates a new organization invite. + """ organizationInviteCreate( - """The organization invite object to create.""" + """ + The organization invite object to create. + """ input: OrganizationInviteCreateInput! ): OrganizationInvitePayload! - """Updates an organization invite.""" + """ + Updates an organization invite. + """ organizationInviteUpdate( - """The updates to make to the organization invite object.""" + """ + The updates to make to the organization invite object. + """ input: OrganizationInviteUpdateInput! - """The identifier of the organization invite to update.""" + """ + The identifier of the organization invite to update. + """ id: String! ): OrganizationInvitePayload! - """Re-send an organization invite.""" + """ + Re-send an organization invite. + """ resendOrganizationInvite( - """The identifier of the organization invite to be re-send.""" + """ + The identifier of the organization invite to be re-send. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Deletes an organization invite.""" + """ + Deletes an organization invite. + """ organizationInviteDelete( - """The identifier of the organization invite to delete.""" + """ + The identifier of the organization invite to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Updates the user's organization.""" + """ + Updates the user's organization. + """ organizationUpdate( - """A partial organization object to update the organization with.""" - input: UpdateOrganizationInput! + """ + A partial organization object to update the organization with. + """ + input: OrganizationUpdateInput! ): OrganizationPayload! """ @@ -12168,9 +21339,13 @@ type Mutation { """ organizationDeleteChallenge: OrganizationDeletePayload! - """Delete's an organization. Administrator privileges required.""" + """ + Delete's an organization. Administrator privileges required. + """ organizationDelete( - """Information required to delete an organization.""" + """ + Information required to delete an organization. + """ input: DeleteOrganizationInput! ): OrganizationDeletePayload! @@ -12179,36 +21354,98 @@ type Mutation { """ organizationCancelDelete: OrganizationCancelDeletePayload! - """Creates a new project link.""" + """ + Starts a plus trial for the organization. Administrator privileges required. + """ + organizationStartPlusTrial: OrganizationStartPlusTrialPayload! + + """ + Creates a new project link. + """ projectLinkCreate( - """The project link object to create.""" + """ + The project link object to create. + """ input: ProjectLinkCreateInput! ): ProjectLinkPayload! - """Updates a project link.""" + """ + Updates a project link. + """ projectLinkUpdate( - """The project link object to update.""" + """ + The project link object to update. + """ input: ProjectLinkUpdateInput! - """The identifier of the project link to update.""" + """ + The identifier of the project link to update. + """ id: String! ): ProjectLinkPayload! - """Deletes a project link.""" + """ + Deletes a project link. + """ projectLinkDelete( - """The identifier of the project link to delete.""" + """ + The identifier of the project link to delete. + """ + id: String! + ): DeletePayload! + + """ + Creates a new project milestone. + """ + projectMilestoneCreate( + """ + The project milestone to create. + """ + input: ProjectMilestoneCreateInput! + ): ProjectMilestonePayload! + + """ + Updates a project milestone. + """ + projectMilestoneUpdate( + """ + A partial object to update the project milestone with. + """ + input: ProjectMilestoneUpdateInput! + + """ + The identifier of the project milestone to update. Also the identifier from the URL is accepted. + """ + id: String! + ): ProjectMilestonePayload! + + """ + Deletes a project milestone. + """ + projectMilestoneDelete( + """ + The identifier of the project milestone to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Creates a new project.""" + """ + Creates a new project. + """ projectCreate( - """The issue object to create.""" + """ + The issue object to create. + """ input: ProjectCreateInput! ): ProjectPayload! - """Updates a project.""" + """ + Updates a project. + """ projectUpdate( - """A partial project object to update the project with.""" + """ + A partial project object to update the project with. + """ input: ProjectUpdateInput! """ @@ -12218,213 +21455,386 @@ type Mutation { ): ProjectPayload! """ - Deletes a project. All issues will be disassociated from the deleted project. + Deletes (trashes) a project. """ projectDelete( """ - The identifier of the project to delete. Also the identifier from the URL is accepted. + The identifier of the project to delete. """ id: String! - ): ArchivePayload! + ): ProjectArchivePayload! - """Archives a project.""" + """ + Archives a project. + """ projectArchive( + """ + Whether to trash the project + """ + trash: Boolean + """ The identifier of the project to archive. Also the identifier from the URL is accepted. """ id: String! - ): ArchivePayload! @deprecated(reason: "Deprecated in favor of projectDelete.") + ): ProjectArchivePayload! + @deprecated(reason: "Deprecated in favor of projectDelete.") - """Unarchives a project.""" + """ + Unarchives a project. + """ projectUnarchive( """ The identifier of the project to restore. Also the identifier from the URL is accepted. """ id: String! - ): ArchivePayload! + ): ProjectArchivePayload! - """Creates a new interaction on a project update.""" + """ + Creates a new interaction on a project update. + """ projectUpdateInteractionCreate( - """Data for the project update interaction to create.""" + """ + Data for the project update interaction to create. + """ input: ProjectUpdateInteractionCreateInput! ): ProjectUpdateInteractionPayload! - """Creates a new project update.""" + """ + Creates a new project update. + """ projectUpdateCreate( - """Data for the project update to create.""" + """ + Data for the project update to create. + """ input: ProjectUpdateCreateInput! ): ProjectUpdatePayload! - """Updates a project update.""" + """ + Updates a project update. + """ projectUpdateUpdate( - """A data to update the project update with.""" + """ + A data to update the project update with. + """ input: ProjectUpdateUpdateInput! - """The identifier of the project update to update.""" + """ + The identifier of the project update to update. + """ id: String! ): ProjectUpdatePayload! - """Deletes a project update.""" + """ + Deletes a project update. + """ projectUpdateDelete( - """The identifier of the project update to delete.""" + """ + The identifier of the project update to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Mark a project update as read.""" + """ + Mark a project update as read. + """ projectUpdateMarkAsRead( - """The identifier of the project update.""" + """ + The identifier of the project update. + """ id: String! ): ProjectUpdateWithInteractionPayload! - """Creates a push subscription.""" + """ + Create a notification to remind a user about a project update. + """ + createProjectUpdateReminder( + """ + The user identifier to whom the notification will be sent. By default, it is set to the project lead. + """ + userId: String + + """ + The identifier of the project to remind about. + """ + projectId: String! + ): ProjectUpdateReminderPayload! + + """ + Creates a push subscription. + """ pushSubscriptionCreate( - """The push subscription to create.""" + """ + The push subscription to create. + """ input: PushSubscriptionCreateInput! ): PushSubscriptionPayload! - """Deletes a push subscription.""" + """ + Deletes a push subscription. + """ pushSubscriptionDelete( - """The identifier of the push subscription to delete.""" + """ + The identifier of the push subscription to delete. + """ id: String! ): PushSubscriptionPayload! - """Creates a new reaction.""" + """ + Creates a new reaction. + """ reactionCreate( - """The reaction object to create.""" + """ + The reaction object to create. + """ input: ReactionCreateInput! ): ReactionPayload! - """Deletes a reaction.""" + """ + Deletes a reaction. + """ reactionDelete( - """The identifier of the reaction to delete.""" + """ + The identifier of the reaction to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Create CSV export report for the organization.""" - createCsvExportReport(includePrivateTeamIds: [String!]): CreateCsvExportReportPayload! + """ + Create CSV export report for the organization. + """ + createCsvExportReport( + includePrivateTeamIds: [String!] + ): CreateCsvExportReportPayload! - """Creates a new roadmap.""" + """ + Creates a new roadmap. + """ roadmapCreate( - """The properties of the roadmap to create.""" + """ + The properties of the roadmap to create. + """ input: RoadmapCreateInput! ): RoadmapPayload! - """Updates a roadmap.""" + """ + Updates a roadmap. + """ roadmapUpdate( - """The properties of the roadmap to update.""" + """ + The properties of the roadmap to update. + """ input: RoadmapUpdateInput! - """The identifier of the roadmap to update.""" + """ + The identifier of the roadmap to update. + """ id: String! ): RoadmapPayload! - """Deletes a roadmap.""" + """ + Archives a roadmap. + """ + roadmapArchive( + """ + The identifier of the roadmap to archive. + """ + id: String! + ): RoadmapArchivePayload! + + """ + Unarchives a roadmap. + """ + roadmapUnarchive( + """ + The identifier of the roadmap to unarchive. + """ + id: String! + ): RoadmapArchivePayload! + + """ + Deletes a roadmap. + """ roadmapDelete( - """The identifier of the roadmap to delete.""" + """ + The identifier of the roadmap to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Creates a new roadmapToProject join.""" + """ + Creates a new roadmapToProject join. + """ roadmapToProjectCreate( - """The properties of the roadmapToProject to create.""" + """ + The properties of the roadmapToProject to create. + """ input: RoadmapToProjectCreateInput! ): RoadmapToProjectPayload! - """Updates a roadmapToProject.""" + """ + Updates a roadmapToProject. + """ roadmapToProjectUpdate( - """The properties of the roadmapToProject to update.""" + """ + The properties of the roadmapToProject to update. + """ input: RoadmapToProjectUpdateInput! - """The identifier of the roadmapToProject to update.""" + """ + The identifier of the roadmapToProject to update. + """ id: String! ): RoadmapToProjectPayload! - """Deletes a roadmapToProject.""" + """ + Deletes a roadmapToProject. + """ roadmapToProjectDelete( - """The identifier of the roadmapToProject to delete.""" + """ + The identifier of the roadmapToProject to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Deletes a previously used team key.""" + """ + Deletes a previously used team key. + """ teamKeyDelete( - """The identifier of the team key to delete.""" + """ + The identifier of the team key to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Creates a new team membership.""" + """ + Creates a new team membership. + """ teamMembershipCreate( - """The team membership object to create.""" + """ + The team membership object to create. + """ input: TeamMembershipCreateInput! ): TeamMembershipPayload! - """Updates a team membership.""" + """ + Updates a team membership. + """ teamMembershipUpdate( - """A partial team membership object to update the team membership with.""" + """ + A partial team membership object to update the team membership with. + """ input: TeamMembershipUpdateInput! - """The identifier of the team membership to update.""" + """ + The identifier of the team membership to update. + """ id: String! ): TeamMembershipPayload! - """Deletes a team membership.""" + """ + Deletes a team membership. + """ teamMembershipDelete( - """The identifier of the team membership to delete.""" + """ + The identifier of the team membership to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! """ Creates a new team. The user who creates the team will automatically be added as a member to the newly created team. """ teamCreate( - """The team id to copy settings from.""" + """ + The team id to copy settings from. + """ copySettingsFromTeamId: String - """The team object to create.""" + """ + The team object to create. + """ input: TeamCreateInput! ): TeamPayload! - """Updates a team.""" + """ + Updates a team. + """ teamUpdate( - """A partial team object to update the team with.""" + """ + A partial team object to update the team with. + """ input: TeamUpdateInput! - """The identifier of the team to update.""" + """ + The identifier of the team to update. + """ id: String! ): TeamPayload! - """Deletes a team.""" + """ + Deletes a team. + """ teamDelete( - """The identifier of the team to delete.""" + """ + The identifier of the team to delete. + """ + id: String! + ): DeletePayload! + + """ + Deletes team's cycles data + """ + teamCyclesDelete( + """ + The identifier of the team, which cycles will be deleted. + """ id: String! - ): ArchivePayload! + ): TeamPayload! - """Creates a new template.""" + """ + Creates a new template. + """ templateCreate( - """The template object to create.""" + """ + The template object to create. + """ input: TemplateCreateInput! ): TemplatePayload! - """Updates an existing template.""" + """ + Updates an existing template. + """ templateUpdate( - """The properties of the template to update.""" + """ + The properties of the template to update. + """ input: TemplateUpdateInput! - """The identifier of the template.""" + """ + The identifier of the template. + """ id: String! ): TemplatePayload! - """Deletes a template.""" + """ + Deletes a template. + """ templateDelete( - """The identifier of the template to delete.""" + """ + The identifier of the template to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! """ Updates a user. Only available to organization admins and the user themselves. """ userUpdate( - """A partial user object to update the user with.""" - input: UpdateUserInput! + """ + A partial user object to update the user with. + """ + input: UserUpdateInput! """ The identifier of the user to update. Use `me` to reference currently authenticated user. @@ -12432,144 +21842,253 @@ type Mutation { id: String! ): UserPayload! - """Connects the Discord user to this Linear account via OAuth2.""" + """ + Connects the Discord user to this Linear account via OAuth2. + """ userDiscordConnect( - """The Discord OAuth redirect URI.""" + """ + The Discord OAuth redirect URI. + """ redirectUri: String! - """The Discord OAuth code.""" + """ + The Discord OAuth code. + """ + code: String! + ): UserPayload! + + """ + Connects the GitHub user to this Linear account via OAuth2. + """ + userGitHubConnect( + """ + The GitHub OAuth code. + """ + code: String! + ): UserPayload! + + """ + Connects the Jira user to this Linear account via OAuth2. + """ + userJiraConnect( + """ + The Jira OAuth code. + """ code: String! ): UserPayload! - """Disconnects the external user from this Linear account.""" + """ + Disconnects the external user from this Linear account. + """ userExternalUserDisconnect( - """The external service to disconnect""" + """ + The external service to disconnect + """ service: String! ): UserPayload! - """Makes user an admin. Can only be called by an admin.""" + """ + Makes user an admin. Can only be called by an admin. + """ userPromoteAdmin( - """The identifier of the user to make an admin.""" + """ + The identifier of the user to make an admin. + """ id: String! ): UserAdminPayload! - """Makes user a regular user. Can only be called by an admin.""" + """ + Makes user a regular user. Can only be called by an admin. + """ userDemoteAdmin( - """The identifier of the user to make a regular user.""" + """ + The identifier of the user to make a regular user. + """ id: String! ): UserAdminPayload! - """Makes user a regular user. Can only be called by an admin.""" + """ + Makes user a regular user. Can only be called by an admin. + """ userPromoteMember( - """The identifier of the user to make a regular user.""" + """ + The identifier of the user to make a regular user. + """ id: String! ): UserAdminPayload! - """Makes user a guest. Can only be called by an admin.""" + """ + Makes user a guest. Can only be called by an admin. + """ userDemoteMember( - """The identifier of the user to make a guest.""" + """ + The identifier of the user to make a guest. + """ id: String! ): UserAdminPayload! - """Suspends a user. Can only be called by an admin.""" + """ + Suspends a user. Can only be called by an admin. + """ userSuspend( - """The identifier of the user to suspend.""" + """ + The identifier of the user to suspend. + """ id: String! ): UserAdminPayload! - """Un-suspends a user. Can only be called by an admin.""" + """ + Un-suspends a user. Can only be called by an admin. + """ userUnsuspend( - """The identifier of the user to unsuspend.""" + """ + The identifier of the user to unsuspend. + """ id: String! ): UserAdminPayload! - """Updates the user's settings.""" + """ + Updates the user's settings. + """ userSettingsUpdate( - """A partial notification object to update the settings with.""" + """ + A partial notification object to update the settings with. + """ input: UserSettingsUpdateInput! - """The identifier of the userSettings to update.""" + """ + The identifier of the userSettings to update. + """ id: String! ): UserSettingsPayload! - """[Deprecated] Updates a user's settings flag.""" + """ + [Deprecated] Updates a user's settings flag. + """ userSettingsFlagIncrement( - """Flag to increment.""" + """ + Flag to increment. + """ flag: String! ): UserSettingsFlagPayload! - """Resets user's setting flags.""" + """ + Resets user's setting flags. + """ userSettingsFlagsReset( - """The flags to reset. If not provided all flags will be reset.""" + """ + The flags to reset. If not provided all flags will be reset. + """ flags: [UserFlagType!] ): UserSettingsFlagsResetPayload! - """Updates a user's settings flag.""" + """ + Updates a user's settings flag. + """ userFlagUpdate( - """Flag operation to perform""" + """ + Flag operation to perform + """ operation: UserFlagUpdateOperation! - """Settings flag to increment.""" + """ + Settings flag to increment. + """ flag: UserFlagType! ): UserSettingsFlagPayload! - """Subscribes user to changelog newsletter.""" - userSubscribeToNewsletter: UserSubscribeToNewsletterPayload! - - """Creates a new ViewPreferences object.""" + """ + Creates a new ViewPreferences object. + """ viewPreferencesCreate( - """The ViewPreferences object to create.""" + """ + The ViewPreferences object to create. + """ input: ViewPreferencesCreateInput! ): ViewPreferencesPayload! - """Updates an existing ViewPreferences object.""" + """ + Updates an existing ViewPreferences object. + """ viewPreferencesUpdate( - """The properties of the view preferences.""" + """ + The properties of the view preferences. + """ input: ViewPreferencesUpdateInput! - """The identifier of the ViewPreferences object.""" + """ + The identifier of the ViewPreferences object. + """ id: String! ): ViewPreferencesPayload! - """Deletes a ViewPreferences.""" + """ + Deletes a ViewPreferences. + """ viewPreferencesDelete( - """The identifier of the ViewPreferences to delete.""" + """ + The identifier of the ViewPreferences to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Creates a new webhook.""" + """ + Creates a new webhook. + """ webhookCreate( - """The webhook object to create.""" + """ + The webhook object to create. + """ input: WebhookCreateInput! ): WebhookPayload! - """Updates an existing Webhook.""" + """ + Updates an existing Webhook. + """ webhookUpdate( - """The properties of the Webhook.""" + """ + The properties of the Webhook. + """ input: WebhookUpdateInput! - """The identifier of the Webhook.""" + """ + The identifier of the Webhook. + """ id: String! ): WebhookPayload! - """Deletes a Webhook.""" + """ + Deletes a Webhook. + """ webhookDelete( - """The identifier of the Webhook to delete.""" + """ + The identifier of the Webhook to delete. + """ id: String! - ): ArchivePayload! + ): DeletePayload! - """Creates a new state, adding it to the workflow of a team.""" + """ + Creates a new state, adding it to the workflow of a team. + """ workflowStateCreate( - """The state to create.""" + """ + The state to create. + """ input: WorkflowStateCreateInput! ): WorkflowStatePayload! - """Updates a state.""" + """ + Updates a state. + """ workflowStateUpdate( - """A partial state object to update.""" + """ + A partial state object to update. + """ input: WorkflowStateUpdateInput! - """The identifier of the state to update.""" + """ + The identifier of the state to update. + """ id: String! ): WorkflowStatePayload! @@ -12577,16 +22096,23 @@ type Mutation { Archives a state. Only states with issues that have all been archived can be archived. """ workflowStateArchive( - """The identifier of the state to archive.""" + """ + The identifier of the state to archive. + """ id: String! - ): ArchivePayload! + ): WorkflowStateArchivePayload! } -"""A universally unique identifier as specified by RFC 4122.""" +""" +A universally unique identifier as specified by RFC 4122. +""" scalar UUID -"""The types of flags that the user can have.""" +""" +The types of flags that the user can have. +""" enum UserFlagType { + updatedSlackThreadSyncIntegration completedOnboarding desktopInstalled teamsPageIntroductionDismissed @@ -12603,6 +22129,7 @@ enum UserFlagType { projectUpdatesWelcomeDismissed analyticsWelcomeDismissed insightsWelcomeDismissed + insightsHelpDismissed figmaPromptDismissed issueMovePromptCompleted migrateThemePreference @@ -12610,12 +22137,27 @@ enum UserFlagType { canPlaySnake canPlayTetris importBannerDismissed + tryInvitePeopleDismissed + tryRoadmapsDismissed + tryCyclesDismissed + tryTriageDismissed + tryGithubDismissed + rewindBannerDismissed + helpIslandFeatureInsightsDismissed dueDateShortcutMigration slackCommentReactionTipShown + issueLabelSuggestionUsed + threadedCommentsNudgeIsSeen + desktopTabsOnboardingDismissed + milestoneOnboardingIsSeenAndDismissed + projectBoardOnboardingIsSeenAndDismissed + figmaPluginBannerDismissed all } -"""Operations that can be applied to UserFlagType""" +""" +Operations that can be applied to UserFlagType +""" enum UserFlagUpdateOperation { incr decr