diff --git a/app/helpers/markup_helper.rb b/app/helpers/markup_helper.rb index e2524938e10..e1e756c2f4c 100644 --- a/app/helpers/markup_helper.rb +++ b/app/helpers/markup_helper.rb @@ -51,12 +51,15 @@ module MarkupHelper text = fragment.children[0].text fragment.children[0].replace(link_to(text, url, html_options)) else - # Traverse the fragment's first generation of children looking for pure - # text, wrapping anything found in the requested link + # Traverse the fragment's first generation of children looking for + # either pure text or emojis, wrapping anything found in the + # requested link fragment.children.each do |node| - next unless node.text? - - node.replace(link_to(node.text, url, html_options)) + if node.text? + node.replace(link_to(node.text, url, html_options)) + elsif node.name == 'gl-emoji' + node.replace(link_to(node.to_html.html_safe, url, html_options)) + end end end diff --git a/changelogs/unreleased/harishsr-emoticon-commit-links.yml b/changelogs/unreleased/harishsr-emoticon-commit-links.yml new file mode 100644 index 00000000000..0ad9dd1e101 --- /dev/null +++ b/changelogs/unreleased/harishsr-emoticon-commit-links.yml @@ -0,0 +1,5 @@ +--- +title: Allow emojis to be linkable +merge_request: 18014 +author: +type: fixed diff --git a/doc/api/graphql/reference/gitlab_schema.graphql b/doc/api/graphql/reference/gitlab_schema.graphql index 231302794c5..cbc974a69cf 100644 --- a/doc/api/graphql/reference/gitlab_schema.graphql +++ b/doc/api/graphql/reference/gitlab_schema.graphql @@ -116,23 +116,54 @@ type BlobEdge { } type Commit { + """ + Author of the commit + """ author: User + + """ + Timestamp of when the commit was authored + """ authoredDate: Time + + """ + Description of the commit message + """ description: String + + """ + ID (global ID) of the commit + """ id: ID! """ - Latest pipeline for this commit + Latest pipeline of the commit """ latestPipeline: Pipeline + + """ + Raw commit message + """ message: String + + """ + SHA1 ID of the commit + """ sha: String! """ - Rendered html for the commit signature + Rendered HTML of the commit signature """ signatureHtml: String + + """ + Title of the commit message + """ title: String + + """ + Web URL of the commit + """ webUrl: String! } @@ -181,6 +212,71 @@ type CreateDiffNotePayload { note: Note } +""" +Autogenerated input type of CreateEpic +""" +input CreateEpicInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The description of the epic + """ + description: String + + """ + The end date of the epic + """ + dueDateFixed: String + + """ + Indicates end date should be sourced from due_date_fixed field not the issue milestones + """ + dueDateIsFixed: Boolean + + """ + The group the epic to mutate is in + """ + groupPath: ID! + + """ + The start date of the epic + """ + startDateFixed: String + + """ + Indicates start date should be sourced from start_date_fixed field not the issue milestones + """ + startDateIsFixed: Boolean + + """ + The title of the epic + """ + title: String +} + +""" +Autogenerated return type of CreateEpic +""" +type CreateEpicPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The created epic + """ + epic: Epic + + """ + Reasons why the mutation failed. + """ + errors: [String!]! +} + """ Autogenerated input type of CreateImageDiffNote """ @@ -392,6 +488,11 @@ type DesignCollection { """ first: Int + """ + The list of IDs of designs. + """ + ids: [ID!] + """ Returns the last _n_ elements from the list. """ @@ -1184,6 +1285,9 @@ type EpicEdge { } type EpicIssue implements Noteable { + """ + Assignees of the issue + """ assignees( """ Returns the elements in the list that come after the specified cursor. @@ -1205,10 +1309,30 @@ type EpicIssue implements Noteable { """ last: Int ): UserConnection + + """ + User that created the issue + """ author: User! + + """ + Timestamp of when the issue was closed + """ closedAt: Time + + """ + Indicates the issue is confidential + """ confidential: Boolean! + + """ + Timestamp of when the issue was created + """ createdAt: Time! + + """ + Description of the issue + """ description: String """ @@ -1217,6 +1341,10 @@ type EpicIssue implements Noteable { descriptionHtml: String designCollection: DesignCollection designs: DesignCollection @deprecated(reason: "use design_collection") + + """ + Indicates discussion is locked on the issue + """ discussionLocked: Boolean! """ @@ -1243,7 +1371,15 @@ type EpicIssue implements Noteable { """ last: Int ): DiscussionConnection! + + """ + Number of downvotes the issue has received + """ downvotes: Int! + + """ + Due date of the issue + """ dueDate: Time """ @@ -1256,7 +1392,15 @@ type EpicIssue implements Noteable { The global id of the epic-issue relation """ id: ID + + """ + Internal ID of the issue + """ iid: ID! + + """ + Labels of the issue + """ labels( """ Returns the elements in the list that come after the specified cursor. @@ -1278,6 +1422,10 @@ type EpicIssue implements Noteable { """ last: Int ): LabelConnection + + """ + Milestone of the issue + """ milestone: Milestone """ @@ -1306,7 +1454,7 @@ type EpicIssue implements Noteable { ): NoteConnection! """ - List of participants for the issue + List of participants in the issue """ participants( """ @@ -1329,16 +1477,41 @@ type EpicIssue implements Noteable { """ last: Int ): UserConnection - reference(full: Boolean = false): String! + + """ + Internal reference of the issue. Returned in shortened format by default + """ + reference( + """ + Boolean option specifying whether the reference should be returned in full + """ + full: Boolean = false + ): String! relationPath: String + + """ + Relative position of the issue (used for positioning in epic tree and issue boards) + """ relativePosition: Int + + """ + State of the issue + """ state: IssueState! + + """ + Task completion status of the issue + """ taskCompletionStatus: TaskCompletionStatus! """ - The time estimate on the issue + Time estimate of the issue """ timeEstimate: Int! + + """ + Title of the issue + """ title: String! """ @@ -1350,15 +1523,35 @@ type EpicIssue implements Noteable { Total time reported as spent on the issue """ totalTimeSpent: Int! + + """ + Timestamp of when the issue was last updated + """ updatedAt: Time! + + """ + Number of upvotes the issue has received + """ upvotes: Int! + + """ + Number of user notes of the issue + """ userNotesCount: Int! """ Permissions for the current user on the resource """ userPermissions: IssuePermissions! + + """ + Web path of the issue + """ webPath: String! + + """ + Web URL of the issue + """ webUrl: String! weight: Int } @@ -1443,6 +1636,51 @@ type EpicPermissions { updateEpic: Boolean! } +""" +Autogenerated input type of EpicSetSubscription +""" +input EpicSetSubscriptionInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The group the epic to (un)subscribe is in + """ + groupPath: ID! + + """ + The iid of the epic to (un)subscribe + """ + iid: ID! + + """ + The desired state of the subscription + """ + subscribedState: Boolean! +} + +""" +Autogenerated return type of EpicSetSubscription +""" +type EpicSetSubscriptionPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The epic after mutation + """ + epic: Epic + + """ + Reasons why the mutation failed. + """ + errors: [String!]! +} + """ Roadmap sort values """ @@ -1545,6 +1783,9 @@ type EpicTreeReorderPayload { } type ExtendedIssue implements Noteable { + """ + Assignees of the issue + """ assignees( """ Returns the elements in the list that come after the specified cursor. @@ -1566,10 +1807,30 @@ type ExtendedIssue implements Noteable { """ last: Int ): UserConnection + + """ + User that created the issue + """ author: User! + + """ + Timestamp of when the issue was closed + """ closedAt: Time + + """ + Indicates the issue is confidential + """ confidential: Boolean! + + """ + Timestamp of when the issue was created + """ createdAt: Time! + + """ + Description of the issue + """ description: String """ @@ -1578,6 +1839,10 @@ type ExtendedIssue implements Noteable { descriptionHtml: String designCollection: DesignCollection designs: DesignCollection @deprecated(reason: "use design_collection") + + """ + Indicates discussion is locked on the issue + """ discussionLocked: Boolean! """ @@ -1604,14 +1869,30 @@ type ExtendedIssue implements Noteable { """ last: Int ): DiscussionConnection! + + """ + Number of downvotes the issue has received + """ downvotes: Int! + + """ + Due date of the issue + """ dueDate: Time """ The epic to which issue belongs """ epic: Epic + + """ + Internal ID of the issue + """ iid: ID! + + """ + Labels of the issue + """ labels( """ Returns the elements in the list that come after the specified cursor. @@ -1633,6 +1914,10 @@ type ExtendedIssue implements Noteable { """ last: Int ): LabelConnection + + """ + Milestone of the issue + """ milestone: Milestone """ @@ -1661,7 +1946,7 @@ type ExtendedIssue implements Noteable { ): NoteConnection! """ - List of participants for the issue + List of participants in the issue """ participants( """ @@ -1684,20 +1969,45 @@ type ExtendedIssue implements Noteable { """ last: Int ): UserConnection - reference(full: Boolean = false): String! + + """ + Internal reference of the issue. Returned in shortened format by default + """ + reference( + """ + Boolean option specifying whether the reference should be returned in full + """ + full: Boolean = false + ): String! + + """ + Relative position of the issue (used for positioning in epic tree and issue boards) + """ relativePosition: Int + + """ + State of the issue + """ state: IssueState! """ Boolean flag for whether the currently logged in user is subscribed to this issue """ subscribed: Boolean! + + """ + Task completion status of the issue + """ taskCompletionStatus: TaskCompletionStatus! """ - The time estimate on the issue + Time estimate of the issue """ timeEstimate: Int! + + """ + Title of the issue + """ title: String! """ @@ -1709,21 +2019,48 @@ type ExtendedIssue implements Noteable { Total time reported as spent on the issue """ totalTimeSpent: Int! + + """ + Timestamp of when the issue was last updated + """ updatedAt: Time! + + """ + Number of upvotes the issue has received + """ upvotes: Int! + + """ + Number of user notes of the issue + """ userNotesCount: Int! """ Permissions for the current user on the resource """ userPermissions: IssuePermissions! + + """ + Web path of the issue + """ webPath: String! + + """ + Web URL of the issue + """ webUrl: String! weight: Int } type Group { + """ + Avatar URL of the group + """ avatarUrl: String + + """ + Description of the namespace + """ description: String """ @@ -1847,13 +2184,45 @@ type Group { state: EpicState ): EpicConnection epicsEnabled: Boolean + + """ + Full name of the namespace + """ fullName: String! + + """ + Full path of the namespace + """ fullPath: ID! + + """ + ID of the namespace + """ id: ID! + + """ + Indicates if Large File Storage (LFS) is enabled for namespace + """ lfsEnabled: Boolean + + """ + Name of the namespace + """ name: String! + + """ + Parent group + """ parent: Group + + """ + Path of the namespace + """ path: String! + + """ + Projects within this namespace + """ projects( """ Returns the elements in the list that come after the specified cursor. @@ -1880,10 +2249,14 @@ type Group { """ last: Int ): ProjectConnection! + + """ + Indicates if users can request access to namespace + """ requestAccessEnabled: Boolean """ - The aggregated storage statistics. Only available for root namespaces + Aggregated storage statistics of the namespace. Only available for root namespaces """ rootStorageStatistics: RootStorageStatistics @@ -1891,7 +2264,15 @@ type Group { Permissions for the current user on the resource """ userPermissions: GroupPermissions! + + """ + Visibility of the namespace + """ visibility: String + + """ + Web URL of the group + """ webUrl: String! } @@ -1912,6 +2293,9 @@ enum IssuableState { } type Issue implements Noteable { + """ + Assignees of the issue + """ assignees( """ Returns the elements in the list that come after the specified cursor. @@ -1933,10 +2317,30 @@ type Issue implements Noteable { """ last: Int ): UserConnection + + """ + User that created the issue + """ author: User! + + """ + Timestamp of when the issue was closed + """ closedAt: Time + + """ + Indicates the issue is confidential + """ confidential: Boolean! + + """ + Timestamp of when the issue was created + """ createdAt: Time! + + """ + Description of the issue + """ description: String """ @@ -1945,6 +2349,10 @@ type Issue implements Noteable { descriptionHtml: String designCollection: DesignCollection designs: DesignCollection @deprecated(reason: "use design_collection") + + """ + Indicates discussion is locked on the issue + """ discussionLocked: Boolean! """ @@ -1971,14 +2379,30 @@ type Issue implements Noteable { """ last: Int ): DiscussionConnection! + + """ + Number of downvotes the issue has received + """ downvotes: Int! + + """ + Due date of the issue + """ dueDate: Time """ The epic to which issue belongs """ epic: Epic + + """ + Internal ID of the issue + """ iid: ID! + + """ + Labels of the issue + """ labels( """ Returns the elements in the list that come after the specified cursor. @@ -2000,6 +2424,10 @@ type Issue implements Noteable { """ last: Int ): LabelConnection + + """ + Milestone of the issue + """ milestone: Milestone """ @@ -2028,7 +2456,7 @@ type Issue implements Noteable { ): NoteConnection! """ - List of participants for the issue + List of participants in the issue """ participants( """ @@ -2051,15 +2479,40 @@ type Issue implements Noteable { """ last: Int ): UserConnection - reference(full: Boolean = false): String! + + """ + Internal reference of the issue. Returned in shortened format by default + """ + reference( + """ + Boolean option specifying whether the reference should be returned in full + """ + full: Boolean = false + ): String! + + """ + Relative position of the issue (used for positioning in epic tree and issue boards) + """ relativePosition: Int + + """ + State of the issue + """ state: IssueState! + + """ + Task completion status of the issue + """ taskCompletionStatus: TaskCompletionStatus! """ - The time estimate on the issue + Time estimate of the issue """ timeEstimate: Int! + + """ + Title of the issue + """ title: String! """ @@ -2071,15 +2524,35 @@ type Issue implements Noteable { Total time reported as spent on the issue """ totalTimeSpent: Int! + + """ + Timestamp of when the issue was last updated + """ updatedAt: Time! + + """ + Number of upvotes the issue has received + """ upvotes: Int! + + """ + Number of user notes of the issue + """ userNotesCount: Int! """ Permissions for the current user on the resource """ userPermissions: IssuePermissions! + + """ + Web path of the issue + """ webPath: String! + + """ + Web URL of the issue + """ webUrl: String! weight: Int } @@ -2199,14 +2672,29 @@ enum IssueState { } type Label { + """ + Background color of the label + """ color: String! + + """ + Description of the label (markdown rendered as HTML for caching) + """ description: String """ The GitLab Flavored Markdown rendering of `description` """ descriptionHtml: String + + """ + Text color of the label + """ textColor: String! + + """ + Content of the label + """ title: String! } @@ -2246,10 +2734,13 @@ type LabelEdge { } type MergeRequest implements Noteable { + """ + Indicates if members of the target project can push to the fork + """ allowCollaboration: Boolean """ - The list of assignees for the merge request + Assignees of the merge request """ assignees( """ @@ -2272,19 +2763,39 @@ type MergeRequest implements Noteable { """ last: Int ): UserConnection + + """ + Timestamp of when the merge request was created + """ createdAt: Time! + + """ + Default merge commit message of the merge request + """ defaultMergeCommitMessage: String + + """ + Description of the merge request (markdown rendered as HTML for caching) + """ description: String """ The GitLab Flavored Markdown rendering of `description` """ descriptionHtml: String + + """ + Diff head SHA of the merge request + """ diffHeadSha: String + + """ + References of the base SHA, the head SHA, and the start SHA for this merge request + """ diffRefs: DiffRefs """ - Boolean flag determining if comments on the merge request are locked to members only + Indicates if comments on the merge request are locked to members only """ discussionLocked: Boolean! @@ -2312,15 +2823,39 @@ type MergeRequest implements Noteable { """ last: Int ): DiscussionConnection! + + """ + Number of downvotes for the merge request + """ downvotes: Int! + + """ + Indicates if the project settings will lead to source branch deletion after merge + """ forceRemoveSourceBranch: Boolean + + """ + The pipeline running on the branch HEAD of the merge request + """ headPipeline: Pipeline + + """ + ID of the merge request + """ id: ID! + + """ + Internal ID of the merge request + """ iid: String! + + """ + Commit SHA of the merge request if merge is in progress + """ inProgressMergeCommitSha: String """ - The list of labels on the merge request + Labels of the merge request """ labels( """ @@ -2343,16 +2878,44 @@ type MergeRequest implements Noteable { """ last: Int ): LabelConnection + + """ + Deprecated - renamed to defaultMergeCommitMessage + """ mergeCommitMessage: String @deprecated(reason: "Renamed to defaultMergeCommitMessage") + + """ + SHA of the merge request commit (set once merged) + """ mergeCommitSha: String + + """ + Error message due to a merge error + """ mergeError: String + + """ + Indicates if a merge is currently occurring + """ mergeOngoing: Boolean! + + """ + Status of the merge request + """ mergeStatus: String + + """ + Indicates if the merge has been set to be merged when its pipeline succeeds (MWPS) + """ mergeWhenPipelineSucceeds: Boolean + + """ + Indicates if all discussions in the merge request have been resolved, allowing the merge request to be merged + """ mergeableDiscussionsState: Boolean """ - The milestone this merge request is linked to + The milestone of the merge request """ milestone: Milestone @@ -2382,7 +2945,7 @@ type MergeRequest implements Noteable { ): NoteConnection! """ - The list of participants on the merge request + Participants in the merge request """ participants( """ @@ -2405,6 +2968,10 @@ type MergeRequest implements Noteable { """ last: Int ): UserConnection + + """ + Pipelines for the merge request + """ pipelines( """ Returns the elements in the list that come after the specified cursor. @@ -2441,13 +3008,29 @@ type MergeRequest implements Noteable { """ status: PipelineStatusEnum ): PipelineConnection! + + """ + Alias for target_project + """ project: Project! + + """ + ID of the merge request project + """ projectId: Int! + + """ + Rebase commit SHA of the merge request + """ rebaseCommitSha: String + + """ + Indicates if there is a rebase currently in progress for the merge request + """ rebaseInProgress: Boolean! """ - Internal merge request reference. Returned in shortened format by default + Internal reference of the merge request. Returned in shortened format by default """ reference( """ @@ -2455,27 +3038,75 @@ type MergeRequest implements Noteable { """ full: Boolean = false ): String! + + """ + Indicates if the merge request will be rebased + """ shouldBeRebased: Boolean! + + """ + Indicates if the source branch of the merge request will be deleted after merge + """ shouldRemoveSourceBranch: Boolean + + """ + Source branch of the merge request + """ sourceBranch: String! + + """ + Indicates if the source branch of the merge request exists + """ sourceBranchExists: Boolean! + + """ + Source project of the merge request + """ sourceProject: Project + + """ + ID of the merge request source project + """ sourceProjectId: Int + + """ + State of the merge request + """ state: MergeRequestState! """ - Boolean flag for whether the currently logged in user is subscribed to this MR + Indicates if the currently logged in user is subscribed to this merge request """ subscribed: Boolean! + + """ + Target branch of the merge request + """ targetBranch: String! + + """ + Target project of the merge request + """ targetProject: Project! + + """ + ID of the merge request target project + """ targetProjectId: Int! + + """ + Completion status of tasks + """ taskCompletionStatus: TaskCompletionStatus! """ - The time estimate for the merge request + Time estimate of the merge request """ timeEstimate: Int! + + """ + Title of the merge request + """ title: String! """ @@ -2487,15 +3118,35 @@ type MergeRequest implements Noteable { Total time reported as spent on the merge request """ totalTimeSpent: Int! + + """ + Timestamp of when the merge request was last updated + """ updatedAt: Time! + + """ + Number of upvotes for the merge request + """ upvotes: Int! + + """ + User notes count of the merge request + """ userNotesCount: Int """ Permissions for the current user on the resource """ userPermissions: MergeRequestPermissions! + + """ + Web URL of the merge request + """ webUrl: String + + """ + Indicates if the merge request is a work in progress (WIP) + """ workInProgress: Boolean! } @@ -2635,17 +3286,51 @@ enum MergeRequestState { } type Metadata { + """ + Revision + """ revision: String! + + """ + Version + """ version: String! } type Milestone { + """ + Timestamp of milestone creation + """ createdAt: Time! + + """ + Description of the milestone + """ description: String + + """ + Timestamp of the milestone due date + """ dueDate: Time + + """ + Timestamp of the milestone start date + """ startDate: Time + + """ + State of the milestone + """ state: String! + + """ + Title of the milestone + """ title: String! + + """ + Timestamp of last milestone update + """ updatedAt: Time! } @@ -2667,11 +3352,13 @@ enum MoveType { type Mutation { addAwardEmoji(input: AddAwardEmojiInput!): AddAwardEmojiPayload createDiffNote(input: CreateDiffNoteInput!): CreateDiffNotePayload + createEpic(input: CreateEpicInput!): CreateEpicPayload createImageDiffNote(input: CreateImageDiffNoteInput!): CreateImageDiffNotePayload createNote(input: CreateNoteInput!): CreateNotePayload designManagementDelete(input: DesignManagementDeleteInput!): DesignManagementDeletePayload designManagementUpload(input: DesignManagementUploadInput!): DesignManagementUploadPayload destroyNote(input: DestroyNoteInput!): DestroyNotePayload + epicSetSubscription(input: EpicSetSubscriptionInput!): EpicSetSubscriptionPayload epicTreeReorder(input: EpicTreeReorderInput!): EpicTreeReorderPayload mergeRequestSetWip(input: MergeRequestSetWipInput!): MergeRequestSetWipPayload removeAwardEmoji(input: RemoveAwardEmojiInput!): RemoveAwardEmojiPayload @@ -2681,18 +3368,49 @@ type Mutation { } type Namespace { + """ + Description of the namespace + """ description: String """ The GitLab Flavored Markdown rendering of `description` """ descriptionHtml: String + + """ + Full name of the namespace + """ fullName: String! + + """ + Full path of the namespace + """ fullPath: ID! + + """ + ID of the namespace + """ id: ID! + + """ + Indicates if Large File Storage (LFS) is enabled for namespace + """ lfsEnabled: Boolean + + """ + Name of the namespace + """ name: String! + + """ + Path of the namespace + """ path: String! + + """ + Projects within this namespace + """ projects( """ Returns the elements in the list that come after the specified cursor. @@ -2719,12 +3437,20 @@ type Namespace { """ last: Int ): ProjectConnection! + + """ + Indicates if users can request access to namespace + """ requestAccessEnabled: Boolean """ - The aggregated storage statistics. Only available for root namespaces + Aggregated storage statistics of the namespace. Only available for root namespaces """ rootStorageStatistics: RootStorageStatistics + + """ + Visibility of the namespace + """ visibility: String } @@ -3018,22 +3744,69 @@ enum PipelineStatusEnum { } type Project { + """ + Archived status of the project + """ archived: Boolean + + """ + URL to avatar image file of the project + """ avatarUrl: String + + """ + Indicates if the project stores Docker container images in a container registry + """ containerRegistryEnabled: Boolean + + """ + Timestamp of the project creation + """ createdAt: Time + + """ + Short description of the project + """ description: String """ The GitLab Flavored Markdown rendering of `description` """ descriptionHtml: String + + """ + Number of times the project has been forked + """ forksCount: Int! + + """ + Full path of the project + """ fullPath: ID! + + """ + Group of the project + """ group: Group + + """ + URL to connect to the project via HTTPS + """ httpUrlToRepo: String + + """ + ID of the project + """ id: ID! + + """ + Status of project import background job of the project + """ importStatus: String + + """ + A single issue of the project + """ issue( """ Issues closed after this date @@ -3091,6 +3864,10 @@ type Project { """ updatedBefore: Time ): ExtendedIssue + + """ + Issues of the project + """ issues( """ Returns the elements in the list that come after the specified cursor. @@ -3168,10 +3945,30 @@ type Project { """ updatedBefore: Time ): IssueConnection + + """ + (deprecated) Does this project have issues enabled?. Use `issues_access_level` instead + """ issuesEnabled: Boolean + + """ + (deprecated) Enable jobs for this project. Use `builds_access_level` instead + """ jobsEnabled: Boolean + + """ + Timestamp of the project last activity + """ lastActivityAt: Time + + """ + Indicates if the project has Large File Storage (LFS) enabled + """ lfsEnabled: Boolean + + """ + A single merge request of the project + """ mergeRequest( """ The IID of the merge request, e.g., "1" @@ -3183,6 +3980,10 @@ type Project { """ iids: [String!] ): MergeRequest + + """ + Merge requests of the project + """ mergeRequests( """ Returns the elements in the list that come after the specified cursor. @@ -3214,15 +4015,57 @@ type Project { """ last: Int ): MergeRequestConnection + + """ + (deprecated) Does this project have merge_requests enabled?. Use `merge_requests_access_level` instead + """ mergeRequestsEnabled: Boolean + + """ + Indicates if no merge commits should be created and all merges should instead + be fast-forwarded, which means that merging is only allowed if the branch + could be fast-forwarded. + """ mergeRequestsFfOnlyEnabled: Boolean + + """ + Name of the project (without namespace) + """ name: String! + + """ + Full name of the project with its namespace + """ nameWithNamespace: String! + + """ + Namespace of the project + """ namespace: Namespace + + """ + Indicates if merge requests of the project can only be merged when all the discussions are resolved + """ onlyAllowMergeIfAllDiscussionsAreResolved: Boolean + + """ + Indicates if merge requests of the project can only be merged with successful jobs + """ onlyAllowMergeIfPipelineSucceeds: Boolean + + """ + Number of open issues for the project + """ openIssuesCount: Int + + """ + Path of the project + """ path: String! + + """ + Build pipelines of the project + """ pipelines( """ Returns the elements in the list that come after the specified cursor. @@ -3259,23 +4102,81 @@ type Project { """ status: PipelineStatusEnum ): PipelineConnection + + """ + Indicates if a link to create or view a merge request should display after a + push to Git repositories of the project from the command line + """ printingMergeRequestLinkEnabled: Boolean + + """ + Indicates if there is public access to pipelines and job details of the project, including output logs and artifacts + """ publicJobs: Boolean + + """ + Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project + """ + removeSourceBranchAfterMerge: Boolean + + """ + Git repository of the project + """ repository: Repository + + """ + Indicates if users can request member access to the project + """ requestAccessEnabled: Boolean + + """ + Indicates if shared runners are enabled on the project + """ sharedRunnersEnabled: Boolean + + """ + (deprecated) Does this project have snippets enabled?. Use `snippets_access_level` instead + """ snippetsEnabled: Boolean + + """ + URL to connect to the project via SSH + """ sshUrlToRepo: String + + """ + Number of times the project has been starred + """ starCount: Int! + + """ + Statistics of the project + """ statistics: ProjectStatistics + + """ + List of project tags + """ tagList: String """ Permissions for the current user on the resource """ userPermissions: ProjectPermissions! + + """ + Visibility of the project + """ visibility: String + + """ + Web URL of the project + """ webUrl: String + + """ + (deprecated) Does this project have wiki enabled?. Use `wiki_access_level` instead + """ wikiEnabled: Boolean } @@ -3522,12 +4423,39 @@ type ProjectPermissions { } type ProjectStatistics { + """ + Build artifacts size of the project + """ buildArtifactsSize: Int! + + """ + Commit count of the project + """ commitCount: Int! + + """ + Large File Storage (LFS) object size of the project + """ lfsObjectsSize: Int! + + """ + Packages size of the project + """ packagesSize: Int! + + """ + Repository size of the project + """ repositorySize: Int! + + """ + Storage size of the project + """ storageSize: Int! + + """ + Wiki size of the project + """ wikiSize: Int } @@ -3619,9 +4547,24 @@ type RemoveAwardEmojiPayload { } type Repository { + """ + Indicates repository has no visible content + """ empty: Boolean! + + """ + Indicates a corresponding Git repository exists on disk + """ exists: Boolean! + + """ + Default branch of the repository + """ rootRef: String + + """ + Tree of the repository + """ tree( """ The path to get the tree for. Default value is the root of the repository @@ -3721,7 +4664,14 @@ type SubmoduleEdge { Completion status of tasks """ type TaskCompletionStatus { + """ + Number of completed tasks + """ completedCount: Int! + + """ + Number of total tasks + """ count: Int! } @@ -3831,9 +4781,30 @@ enum TodoStateEnum { } enum TodoTargetEnum { - Epic - Issue - MergeRequest + """ + A Commit + """ + COMMIT + + """ + A Design + """ + DESIGN + + """ + An Epic + """ + EPIC + + """ + An Issue + """ + ISSUE + + """ + A MergeRequest + """ + MERGEREQUEST } """ @@ -4117,11 +5088,18 @@ type UpdateNotePayload { scalar Upload type User { + """ + URL of the user's avatar + """ avatarUrl: String! + + """ + Human-readable name of the user + """ name: String! """ - Todos of this user + Todos of the user """ todos( """ @@ -4174,7 +5152,15 @@ type User { """ type: [TodoTargetEnum!] ): TodoConnection! + + """ + Username of the user. Unique within this instance of GitLab + """ username: String! + + """ + Web URL of the user + """ webUrl: String! } diff --git a/doc/api/graphql/reference/gitlab_schema.json b/doc/api/graphql/reference/gitlab_schema.json index 3b3b15b8a2c..fd0ce344eab 100644 --- a/doc/api/graphql/reference/gitlab_schema.json +++ b/doc/api/graphql/reference/gitlab_schema.json @@ -189,7 +189,7 @@ "fields": [ { "name": "archived", - "description": null, + "description": "Archived status of the project", "args": [ ], @@ -203,7 +203,7 @@ }, { "name": "avatarUrl", - "description": null, + "description": "URL to avatar image file of the project", "args": [ ], @@ -217,7 +217,7 @@ }, { "name": "containerRegistryEnabled", - "description": null, + "description": "Indicates if the project stores Docker container images in a container registry", "args": [ ], @@ -231,7 +231,7 @@ }, { "name": "createdAt", - "description": null, + "description": "Timestamp of the project creation", "args": [ ], @@ -245,7 +245,7 @@ }, { "name": "description", - "description": null, + "description": "Short description of the project", "args": [ ], @@ -273,7 +273,7 @@ }, { "name": "forksCount", - "description": null, + "description": "Number of times the project has been forked", "args": [ ], @@ -291,7 +291,7 @@ }, { "name": "fullPath", - "description": null, + "description": "Full path of the project", "args": [ ], @@ -309,7 +309,7 @@ }, { "name": "group", - "description": null, + "description": "Group of the project", "args": [ ], @@ -323,7 +323,7 @@ }, { "name": "httpUrlToRepo", - "description": null, + "description": "URL to connect to the project via HTTPS", "args": [ ], @@ -337,7 +337,7 @@ }, { "name": "id", - "description": null, + "description": "ID of the project", "args": [ ], @@ -355,7 +355,7 @@ }, { "name": "importStatus", - "description": null, + "description": "Status of project import background job of the project", "args": [ ], @@ -369,7 +369,7 @@ }, { "name": "issue", - "description": null, + "description": "A single issue of the project", "args": [ { "name": "iid", @@ -514,7 +514,7 @@ }, { "name": "issues", - "description": null, + "description": "Issues of the project", "args": [ { "name": "iid", @@ -699,7 +699,7 @@ }, { "name": "issuesEnabled", - "description": null, + "description": "(deprecated) Does this project have issues enabled?. Use `issues_access_level` instead", "args": [ ], @@ -713,7 +713,7 @@ }, { "name": "jobsEnabled", - "description": null, + "description": "(deprecated) Enable jobs for this project. Use `builds_access_level` instead", "args": [ ], @@ -727,7 +727,7 @@ }, { "name": "lastActivityAt", - "description": null, + "description": "Timestamp of the project last activity", "args": [ ], @@ -741,7 +741,7 @@ }, { "name": "lfsEnabled", - "description": null, + "description": "Indicates if the project has Large File Storage (LFS) enabled", "args": [ ], @@ -755,7 +755,7 @@ }, { "name": "mergeRequest", - "description": null, + "description": "A single merge request of the project", "args": [ { "name": "iid", @@ -796,7 +796,7 @@ }, { "name": "mergeRequests", - "description": null, + "description": "Merge requests of the project", "args": [ { "name": "iid", @@ -877,7 +877,7 @@ }, { "name": "mergeRequestsEnabled", - "description": null, + "description": "(deprecated) Does this project have merge_requests enabled?. Use `merge_requests_access_level` instead", "args": [ ], @@ -891,7 +891,7 @@ }, { "name": "mergeRequestsFfOnlyEnabled", - "description": null, + "description": "Indicates if no merge commits should be created and all merges should instead be fast-forwarded, which means that merging is only allowed if the branch could be fast-forwarded.", "args": [ ], @@ -905,7 +905,7 @@ }, { "name": "name", - "description": null, + "description": "Name of the project (without namespace)", "args": [ ], @@ -923,7 +923,7 @@ }, { "name": "nameWithNamespace", - "description": null, + "description": "Full name of the project with its namespace", "args": [ ], @@ -941,7 +941,7 @@ }, { "name": "namespace", - "description": null, + "description": "Namespace of the project", "args": [ ], @@ -955,7 +955,7 @@ }, { "name": "onlyAllowMergeIfAllDiscussionsAreResolved", - "description": null, + "description": "Indicates if merge requests of the project can only be merged when all the discussions are resolved", "args": [ ], @@ -969,7 +969,7 @@ }, { "name": "onlyAllowMergeIfPipelineSucceeds", - "description": null, + "description": "Indicates if merge requests of the project can only be merged with successful jobs", "args": [ ], @@ -983,7 +983,7 @@ }, { "name": "openIssuesCount", - "description": null, + "description": "Number of open issues for the project", "args": [ ], @@ -997,7 +997,7 @@ }, { "name": "path", - "description": null, + "description": "Path of the project", "args": [ ], @@ -1015,7 +1015,7 @@ }, { "name": "pipelines", - "description": null, + "description": "Build pipelines of the project", "args": [ { "name": "status", @@ -1098,7 +1098,7 @@ }, { "name": "printingMergeRequestLinkEnabled", - "description": null, + "description": "Indicates if a link to create or view a merge request should display after a push to Git repositories of the project from the command line", "args": [ ], @@ -1112,7 +1112,21 @@ }, { "name": "publicJobs", - "description": null, + "description": "Indicates if there is public access to pipelines and job details of the project, including output logs and artifacts", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "removeSourceBranchAfterMerge", + "description": "Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project", "args": [ ], @@ -1126,7 +1140,7 @@ }, { "name": "repository", - "description": null, + "description": "Git repository of the project", "args": [ ], @@ -1140,7 +1154,7 @@ }, { "name": "requestAccessEnabled", - "description": null, + "description": "Indicates if users can request member access to the project", "args": [ ], @@ -1154,7 +1168,7 @@ }, { "name": "sharedRunnersEnabled", - "description": null, + "description": "Indicates if shared runners are enabled on the project", "args": [ ], @@ -1168,7 +1182,7 @@ }, { "name": "snippetsEnabled", - "description": null, + "description": "(deprecated) Does this project have snippets enabled?. Use `snippets_access_level` instead", "args": [ ], @@ -1182,7 +1196,7 @@ }, { "name": "sshUrlToRepo", - "description": null, + "description": "URL to connect to the project via SSH", "args": [ ], @@ -1196,7 +1210,7 @@ }, { "name": "starCount", - "description": null, + "description": "Number of times the project has been starred", "args": [ ], @@ -1214,7 +1228,7 @@ }, { "name": "statistics", - "description": null, + "description": "Statistics of the project", "args": [ ], @@ -1228,7 +1242,7 @@ }, { "name": "tagList", - "description": null, + "description": "List of project tags", "args": [ ], @@ -1260,7 +1274,7 @@ }, { "name": "visibility", - "description": null, + "description": "Visibility of the project", "args": [ ], @@ -1274,7 +1288,7 @@ }, { "name": "webUrl", - "description": null, + "description": "Web URL of the project", "args": [ ], @@ -1288,7 +1302,7 @@ }, { "name": "wikiEnabled", - "description": null, + "description": "(deprecated) Does this project have wiki enabled?. Use `wiki_access_level` instead", "args": [ ], @@ -2096,7 +2110,7 @@ "fields": [ { "name": "description", - "description": null, + "description": "Description of the namespace", "args": [ ], @@ -2124,7 +2138,7 @@ }, { "name": "fullName", - "description": null, + "description": "Full name of the namespace", "args": [ ], @@ -2142,7 +2156,7 @@ }, { "name": "fullPath", - "description": null, + "description": "Full path of the namespace", "args": [ ], @@ -2160,7 +2174,7 @@ }, { "name": "id", - "description": null, + "description": "ID of the namespace", "args": [ ], @@ -2178,7 +2192,7 @@ }, { "name": "lfsEnabled", - "description": null, + "description": "Indicates if Large File Storage (LFS) is enabled for namespace", "args": [ ], @@ -2192,7 +2206,7 @@ }, { "name": "name", - "description": null, + "description": "Name of the namespace", "args": [ ], @@ -2210,7 +2224,7 @@ }, { "name": "path", - "description": null, + "description": "Path of the namespace", "args": [ ], @@ -2228,7 +2242,7 @@ }, { "name": "projects", - "description": null, + "description": "Projects within this namespace", "args": [ { "name": "includeSubgroups", @@ -2295,7 +2309,7 @@ }, { "name": "requestAccessEnabled", - "description": null, + "description": "Indicates if users can request access to namespace", "args": [ ], @@ -2309,7 +2323,7 @@ }, { "name": "rootStorageStatistics", - "description": "The aggregated storage statistics. Only available for root namespaces", + "description": "Aggregated storage statistics of the namespace. Only available for root namespaces", "args": [ ], @@ -2323,7 +2337,7 @@ }, { "name": "visibility", - "description": null, + "description": "Visibility of the namespace", "args": [ ], @@ -2660,7 +2674,7 @@ "fields": [ { "name": "avatarUrl", - "description": null, + "description": "Avatar URL of the group", "args": [ ], @@ -2674,7 +2688,7 @@ }, { "name": "description", - "description": null, + "description": "Description of the namespace", "args": [ ], @@ -2994,7 +3008,7 @@ }, { "name": "fullName", - "description": null, + "description": "Full name of the namespace", "args": [ ], @@ -3012,7 +3026,7 @@ }, { "name": "fullPath", - "description": null, + "description": "Full path of the namespace", "args": [ ], @@ -3030,7 +3044,7 @@ }, { "name": "id", - "description": null, + "description": "ID of the namespace", "args": [ ], @@ -3048,7 +3062,7 @@ }, { "name": "lfsEnabled", - "description": null, + "description": "Indicates if Large File Storage (LFS) is enabled for namespace", "args": [ ], @@ -3062,7 +3076,7 @@ }, { "name": "name", - "description": null, + "description": "Name of the namespace", "args": [ ], @@ -3080,7 +3094,7 @@ }, { "name": "parent", - "description": null, + "description": "Parent group", "args": [ ], @@ -3094,7 +3108,7 @@ }, { "name": "path", - "description": null, + "description": "Path of the namespace", "args": [ ], @@ -3112,7 +3126,7 @@ }, { "name": "projects", - "description": null, + "description": "Projects within this namespace", "args": [ { "name": "includeSubgroups", @@ -3179,7 +3193,7 @@ }, { "name": "requestAccessEnabled", - "description": null, + "description": "Indicates if users can request access to namespace", "args": [ ], @@ -3193,7 +3207,7 @@ }, { "name": "rootStorageStatistics", - "description": "The aggregated storage statistics. Only available for root namespaces", + "description": "Aggregated storage statistics of the namespace. Only available for root namespaces", "args": [ ], @@ -3225,7 +3239,7 @@ }, { "name": "visibility", - "description": null, + "description": "Visibility of the namespace", "args": [ ], @@ -3239,7 +3253,7 @@ }, { "name": "webUrl", - "description": null, + "description": "Web URL of the group", "args": [ ], @@ -4758,7 +4772,7 @@ "fields": [ { "name": "avatarUrl", - "description": null, + "description": "URL of the user's avatar", "args": [ ], @@ -4776,7 +4790,7 @@ }, { "name": "name", - "description": null, + "description": "Human-readable name of the user", "args": [ ], @@ -4794,7 +4808,7 @@ }, { "name": "todos", - "description": "Todos of this user", + "description": "Todos of the user", "args": [ { "name": "action", @@ -4959,7 +4973,7 @@ }, { "name": "username", - "description": null, + "description": "Username of the user. Unique within this instance of GitLab", "args": [ ], @@ -4977,7 +4991,7 @@ }, { "name": "webUrl", - "description": null, + "description": "Web URL of the user", "args": [ ], @@ -5342,20 +5356,32 @@ "interfaces": null, "enumValues": [ { - "name": "Issue", - "description": null, + "name": "COMMIT", + "description": "A Commit", "isDeprecated": false, "deprecationReason": null }, { - "name": "MergeRequest", - "description": null, + "name": "ISSUE", + "description": "An Issue", "isDeprecated": false, "deprecationReason": null }, { - "name": "Epic", - "description": null, + "name": "MERGEREQUEST", + "description": "A MergeRequest", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DESIGN", + "description": "A Design", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "EPIC", + "description": "An Epic", "isDeprecated": false, "deprecationReason": null } @@ -6454,7 +6480,7 @@ "fields": [ { "name": "assignees", - "description": null, + "description": "Assignees of the issue", "args": [ { "name": "after", @@ -6507,7 +6533,7 @@ }, { "name": "author", - "description": null, + "description": "User that created the issue", "args": [ ], @@ -6525,7 +6551,7 @@ }, { "name": "closedAt", - "description": null, + "description": "Timestamp of when the issue was closed", "args": [ ], @@ -6539,7 +6565,7 @@ }, { "name": "confidential", - "description": null, + "description": "Indicates the issue is confidential", "args": [ ], @@ -6557,7 +6583,7 @@ }, { "name": "createdAt", - "description": null, + "description": "Timestamp of when the issue was created", "args": [ ], @@ -6575,7 +6601,7 @@ }, { "name": "description", - "description": null, + "description": "Description of the issue", "args": [ ], @@ -6631,7 +6657,7 @@ }, { "name": "discussionLocked", - "description": null, + "description": "Indicates discussion is locked on the issue", "args": [ ], @@ -6706,7 +6732,7 @@ }, { "name": "downvotes", - "description": null, + "description": "Number of downvotes the issue has received", "args": [ ], @@ -6724,7 +6750,7 @@ }, { "name": "dueDate", - "description": null, + "description": "Due date of the issue", "args": [ ], @@ -6784,7 +6810,7 @@ }, { "name": "iid", - "description": null, + "description": "Internal ID of the issue", "args": [ ], @@ -6802,7 +6828,7 @@ }, { "name": "labels", - "description": null, + "description": "Labels of the issue", "args": [ { "name": "after", @@ -6855,7 +6881,7 @@ }, { "name": "milestone", - "description": null, + "description": "Milestone of the issue", "args": [ ], @@ -6926,7 +6952,7 @@ }, { "name": "participants", - "description": "List of participants for the issue", + "description": "List of participants in the issue", "args": [ { "name": "after", @@ -6979,11 +7005,11 @@ }, { "name": "reference", - "description": null, + "description": "Internal reference of the issue. Returned in shortened format by default", "args": [ { "name": "full", - "description": null, + "description": "Boolean option specifying whether the reference should be returned in full", "type": { "kind": "SCALAR", "name": "Boolean", @@ -7020,7 +7046,7 @@ }, { "name": "relativePosition", - "description": null, + "description": "Relative position of the issue (used for positioning in epic tree and issue boards)", "args": [ ], @@ -7034,7 +7060,7 @@ }, { "name": "state", - "description": null, + "description": "State of the issue", "args": [ ], @@ -7052,7 +7078,7 @@ }, { "name": "taskCompletionStatus", - "description": null, + "description": "Task completion status of the issue", "args": [ ], @@ -7070,7 +7096,7 @@ }, { "name": "timeEstimate", - "description": "The time estimate on the issue", + "description": "Time estimate of the issue", "args": [ ], @@ -7088,7 +7114,7 @@ }, { "name": "title", - "description": null, + "description": "Title of the issue", "args": [ ], @@ -7138,7 +7164,7 @@ }, { "name": "updatedAt", - "description": null, + "description": "Timestamp of when the issue was last updated", "args": [ ], @@ -7156,7 +7182,7 @@ }, { "name": "upvotes", - "description": null, + "description": "Number of upvotes the issue has received", "args": [ ], @@ -7174,7 +7200,7 @@ }, { "name": "userNotesCount", - "description": null, + "description": "Number of user notes of the issue", "args": [ ], @@ -7210,7 +7236,7 @@ }, { "name": "webPath", - "description": null, + "description": "Web path of the issue", "args": [ ], @@ -7228,7 +7254,7 @@ }, { "name": "webUrl", - "description": null, + "description": "Web URL of the issue", "args": [ ], @@ -7575,7 +7601,7 @@ "fields": [ { "name": "color", - "description": null, + "description": "Background color of the label", "args": [ ], @@ -7593,7 +7619,7 @@ }, { "name": "description", - "description": null, + "description": "Description of the label (markdown rendered as HTML for caching)", "args": [ ], @@ -7621,7 +7647,7 @@ }, { "name": "textColor", - "description": null, + "description": "Text color of the label", "args": [ ], @@ -7639,7 +7665,7 @@ }, { "name": "title", - "description": null, + "description": "Content of the label", "args": [ ], @@ -7670,7 +7696,7 @@ "fields": [ { "name": "createdAt", - "description": null, + "description": "Timestamp of milestone creation", "args": [ ], @@ -7688,7 +7714,7 @@ }, { "name": "description", - "description": null, + "description": "Description of the milestone", "args": [ ], @@ -7702,7 +7728,7 @@ }, { "name": "dueDate", - "description": null, + "description": "Timestamp of the milestone due date", "args": [ ], @@ -7716,7 +7742,7 @@ }, { "name": "startDate", - "description": null, + "description": "Timestamp of the milestone start date", "args": [ ], @@ -7730,7 +7756,7 @@ }, { "name": "state", - "description": null, + "description": "State of the milestone", "args": [ ], @@ -7748,7 +7774,7 @@ }, { "name": "title", - "description": null, + "description": "Title of the milestone", "args": [ ], @@ -7766,7 +7792,7 @@ }, { "name": "updatedAt", - "description": null, + "description": "Timestamp of last milestone update", "args": [ ], @@ -7797,7 +7823,7 @@ "fields": [ { "name": "completedCount", - "description": null, + "description": "Number of completed tasks", "args": [ ], @@ -7815,7 +7841,7 @@ }, { "name": "count", - "description": null, + "description": "Number of total tasks", "args": [ ], @@ -7848,6 +7874,24 @@ "name": "designs", "description": "All designs for this collection", "args": [ + { + "name": "ids", + "description": "The list of IDs of designs.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + } + }, + "defaultValue": null + }, { "name": "atVersion", "description": "Filters designs to only those that existed at the version. If argument is omitted or nil then all designs will reflect the latest version.", @@ -8019,7 +8063,7 @@ "fields": [ { "name": "assignees", - "description": null, + "description": "Assignees of the issue", "args": [ { "name": "after", @@ -8072,7 +8116,7 @@ }, { "name": "author", - "description": null, + "description": "User that created the issue", "args": [ ], @@ -8090,7 +8134,7 @@ }, { "name": "closedAt", - "description": null, + "description": "Timestamp of when the issue was closed", "args": [ ], @@ -8104,7 +8148,7 @@ }, { "name": "confidential", - "description": null, + "description": "Indicates the issue is confidential", "args": [ ], @@ -8122,7 +8166,7 @@ }, { "name": "createdAt", - "description": null, + "description": "Timestamp of when the issue was created", "args": [ ], @@ -8140,7 +8184,7 @@ }, { "name": "description", - "description": null, + "description": "Description of the issue", "args": [ ], @@ -8196,7 +8240,7 @@ }, { "name": "discussionLocked", - "description": null, + "description": "Indicates discussion is locked on the issue", "args": [ ], @@ -8271,7 +8315,7 @@ }, { "name": "downvotes", - "description": null, + "description": "Number of downvotes the issue has received", "args": [ ], @@ -8289,7 +8333,7 @@ }, { "name": "dueDate", - "description": null, + "description": "Due date of the issue", "args": [ ], @@ -8317,7 +8361,7 @@ }, { "name": "iid", - "description": null, + "description": "Internal ID of the issue", "args": [ ], @@ -8335,7 +8379,7 @@ }, { "name": "labels", - "description": null, + "description": "Labels of the issue", "args": [ { "name": "after", @@ -8388,7 +8432,7 @@ }, { "name": "milestone", - "description": null, + "description": "Milestone of the issue", "args": [ ], @@ -8459,7 +8503,7 @@ }, { "name": "participants", - "description": "List of participants for the issue", + "description": "List of participants in the issue", "args": [ { "name": "after", @@ -8512,11 +8556,11 @@ }, { "name": "reference", - "description": null, + "description": "Internal reference of the issue. Returned in shortened format by default", "args": [ { "name": "full", - "description": null, + "description": "Boolean option specifying whether the reference should be returned in full", "type": { "kind": "SCALAR", "name": "Boolean", @@ -8539,7 +8583,7 @@ }, { "name": "relativePosition", - "description": null, + "description": "Relative position of the issue (used for positioning in epic tree and issue boards)", "args": [ ], @@ -8553,7 +8597,7 @@ }, { "name": "state", - "description": null, + "description": "State of the issue", "args": [ ], @@ -8571,7 +8615,7 @@ }, { "name": "taskCompletionStatus", - "description": null, + "description": "Task completion status of the issue", "args": [ ], @@ -8589,7 +8633,7 @@ }, { "name": "timeEstimate", - "description": "The time estimate on the issue", + "description": "Time estimate of the issue", "args": [ ], @@ -8607,7 +8651,7 @@ }, { "name": "title", - "description": null, + "description": "Title of the issue", "args": [ ], @@ -8657,7 +8701,7 @@ }, { "name": "updatedAt", - "description": null, + "description": "Timestamp of when the issue was last updated", "args": [ ], @@ -8675,7 +8719,7 @@ }, { "name": "upvotes", - "description": null, + "description": "Number of upvotes the issue has received", "args": [ ], @@ -8693,7 +8737,7 @@ }, { "name": "userNotesCount", - "description": null, + "description": "Number of user notes of the issue", "args": [ ], @@ -8729,7 +8773,7 @@ }, { "name": "webPath", - "description": null, + "description": "Web path of the issue", "args": [ ], @@ -8747,7 +8791,7 @@ }, { "name": "webUrl", - "description": null, + "description": "Web URL of the issue", "args": [ ], @@ -9511,7 +9555,7 @@ "fields": [ { "name": "buildArtifactsSize", - "description": null, + "description": "Build artifacts size of the project", "args": [ ], @@ -9529,7 +9573,7 @@ }, { "name": "commitCount", - "description": null, + "description": "Commit count of the project", "args": [ ], @@ -9547,7 +9591,7 @@ }, { "name": "lfsObjectsSize", - "description": null, + "description": "Large File Storage (LFS) object size of the project", "args": [ ], @@ -9565,7 +9609,7 @@ }, { "name": "packagesSize", - "description": null, + "description": "Packages size of the project", "args": [ ], @@ -9583,7 +9627,7 @@ }, { "name": "repositorySize", - "description": null, + "description": "Repository size of the project", "args": [ ], @@ -9601,7 +9645,7 @@ }, { "name": "storageSize", - "description": null, + "description": "Storage size of the project", "args": [ ], @@ -9619,7 +9663,7 @@ }, { "name": "wikiSize", - "description": null, + "description": "Wiki size of the project", "args": [ ], @@ -9646,7 +9690,7 @@ "fields": [ { "name": "empty", - "description": null, + "description": "Indicates repository has no visible content", "args": [ ], @@ -9664,7 +9708,7 @@ }, { "name": "exists", - "description": null, + "description": "Indicates a corresponding Git repository exists on disk", "args": [ ], @@ -9682,7 +9726,7 @@ }, { "name": "rootRef", - "description": null, + "description": "Default branch of the repository", "args": [ ], @@ -9696,7 +9740,7 @@ }, { "name": "tree", - "description": null, + "description": "Tree of the repository", "args": [ { "name": "path", @@ -9950,7 +9994,7 @@ "fields": [ { "name": "author", - "description": null, + "description": "Author of the commit", "args": [ ], @@ -9964,7 +10008,7 @@ }, { "name": "authoredDate", - "description": null, + "description": "Timestamp of when the commit was authored", "args": [ ], @@ -9978,7 +10022,7 @@ }, { "name": "description", - "description": null, + "description": "Description of the commit message", "args": [ ], @@ -9992,7 +10036,7 @@ }, { "name": "id", - "description": null, + "description": "ID (global ID) of the commit", "args": [ ], @@ -10010,7 +10054,7 @@ }, { "name": "latestPipeline", - "description": "Latest pipeline for this commit", + "description": "Latest pipeline of the commit", "args": [ ], @@ -10024,7 +10068,7 @@ }, { "name": "message", - "description": null, + "description": "Raw commit message", "args": [ ], @@ -10038,7 +10082,7 @@ }, { "name": "sha", - "description": null, + "description": "SHA1 ID of the commit", "args": [ ], @@ -10056,7 +10100,7 @@ }, { "name": "signatureHtml", - "description": "Rendered html for the commit signature", + "description": "Rendered HTML of the commit signature", "args": [ ], @@ -10070,7 +10114,7 @@ }, { "name": "title", - "description": null, + "description": "Title of the commit message", "args": [ ], @@ -10084,7 +10128,7 @@ }, { "name": "webUrl", - "description": null, + "description": "Web URL of the commit", "args": [ ], @@ -11646,7 +11690,7 @@ "fields": [ { "name": "allowCollaboration", - "description": null, + "description": "Indicates if members of the target project can push to the fork", "args": [ ], @@ -11660,7 +11704,7 @@ }, { "name": "assignees", - "description": "The list of assignees for the merge request", + "description": "Assignees of the merge request", "args": [ { "name": "after", @@ -11713,7 +11757,7 @@ }, { "name": "createdAt", - "description": null, + "description": "Timestamp of when the merge request was created", "args": [ ], @@ -11731,7 +11775,7 @@ }, { "name": "defaultMergeCommitMessage", - "description": null, + "description": "Default merge commit message of the merge request", "args": [ ], @@ -11745,7 +11789,7 @@ }, { "name": "description", - "description": null, + "description": "Description of the merge request (markdown rendered as HTML for caching)", "args": [ ], @@ -11773,7 +11817,7 @@ }, { "name": "diffHeadSha", - "description": null, + "description": "Diff head SHA of the merge request", "args": [ ], @@ -11787,7 +11831,7 @@ }, { "name": "diffRefs", - "description": null, + "description": "References of the base SHA, the head SHA, and the start SHA for this merge request", "args": [ ], @@ -11801,7 +11845,7 @@ }, { "name": "discussionLocked", - "description": "Boolean flag determining if comments on the merge request are locked to members only", + "description": "Indicates if comments on the merge request are locked to members only", "args": [ ], @@ -11876,7 +11920,7 @@ }, { "name": "downvotes", - "description": null, + "description": "Number of downvotes for the merge request", "args": [ ], @@ -11894,7 +11938,7 @@ }, { "name": "forceRemoveSourceBranch", - "description": null, + "description": "Indicates if the project settings will lead to source branch deletion after merge", "args": [ ], @@ -11908,7 +11952,7 @@ }, { "name": "headPipeline", - "description": null, + "description": "The pipeline running on the branch HEAD of the merge request", "args": [ ], @@ -11922,7 +11966,7 @@ }, { "name": "id", - "description": null, + "description": "ID of the merge request", "args": [ ], @@ -11940,7 +11984,7 @@ }, { "name": "iid", - "description": null, + "description": "Internal ID of the merge request", "args": [ ], @@ -11958,7 +12002,7 @@ }, { "name": "inProgressMergeCommitSha", - "description": null, + "description": "Commit SHA of the merge request if merge is in progress", "args": [ ], @@ -11972,7 +12016,7 @@ }, { "name": "labels", - "description": "The list of labels on the merge request", + "description": "Labels of the merge request", "args": [ { "name": "after", @@ -12025,7 +12069,7 @@ }, { "name": "mergeCommitMessage", - "description": null, + "description": "Deprecated - renamed to defaultMergeCommitMessage", "args": [ ], @@ -12039,7 +12083,7 @@ }, { "name": "mergeCommitSha", - "description": null, + "description": "SHA of the merge request commit (set once merged)", "args": [ ], @@ -12053,7 +12097,7 @@ }, { "name": "mergeError", - "description": null, + "description": "Error message due to a merge error", "args": [ ], @@ -12067,7 +12111,7 @@ }, { "name": "mergeOngoing", - "description": null, + "description": "Indicates if a merge is currently occurring", "args": [ ], @@ -12085,7 +12129,7 @@ }, { "name": "mergeStatus", - "description": null, + "description": "Status of the merge request", "args": [ ], @@ -12099,7 +12143,7 @@ }, { "name": "mergeWhenPipelineSucceeds", - "description": null, + "description": "Indicates if the merge has been set to be merged when its pipeline succeeds (MWPS)", "args": [ ], @@ -12113,7 +12157,7 @@ }, { "name": "mergeableDiscussionsState", - "description": null, + "description": "Indicates if all discussions in the merge request have been resolved, allowing the merge request to be merged", "args": [ ], @@ -12127,7 +12171,7 @@ }, { "name": "milestone", - "description": "The milestone this merge request is linked to", + "description": "The milestone of the merge request", "args": [ ], @@ -12198,7 +12242,7 @@ }, { "name": "participants", - "description": "The list of participants on the merge request", + "description": "Participants in the merge request", "args": [ { "name": "after", @@ -12251,7 +12295,7 @@ }, { "name": "pipelines", - "description": null, + "description": "Pipelines for the merge request", "args": [ { "name": "status", @@ -12338,7 +12382,7 @@ }, { "name": "project", - "description": null, + "description": "Alias for target_project", "args": [ ], @@ -12356,7 +12400,7 @@ }, { "name": "projectId", - "description": null, + "description": "ID of the merge request project", "args": [ ], @@ -12374,7 +12418,7 @@ }, { "name": "rebaseCommitSha", - "description": null, + "description": "Rebase commit SHA of the merge request", "args": [ ], @@ -12388,7 +12432,7 @@ }, { "name": "rebaseInProgress", - "description": null, + "description": "Indicates if there is a rebase currently in progress for the merge request", "args": [ ], @@ -12406,7 +12450,7 @@ }, { "name": "reference", - "description": "Internal merge request reference. Returned in shortened format by default", + "description": "Internal reference of the merge request. Returned in shortened format by default", "args": [ { "name": "full", @@ -12433,7 +12477,7 @@ }, { "name": "shouldBeRebased", - "description": null, + "description": "Indicates if the merge request will be rebased", "args": [ ], @@ -12451,7 +12495,7 @@ }, { "name": "shouldRemoveSourceBranch", - "description": null, + "description": "Indicates if the source branch of the merge request will be deleted after merge", "args": [ ], @@ -12465,7 +12509,7 @@ }, { "name": "sourceBranch", - "description": null, + "description": "Source branch of the merge request", "args": [ ], @@ -12483,7 +12527,7 @@ }, { "name": "sourceBranchExists", - "description": null, + "description": "Indicates if the source branch of the merge request exists", "args": [ ], @@ -12501,7 +12545,7 @@ }, { "name": "sourceProject", - "description": null, + "description": "Source project of the merge request", "args": [ ], @@ -12515,7 +12559,7 @@ }, { "name": "sourceProjectId", - "description": null, + "description": "ID of the merge request source project", "args": [ ], @@ -12529,7 +12573,7 @@ }, { "name": "state", - "description": null, + "description": "State of the merge request", "args": [ ], @@ -12547,7 +12591,7 @@ }, { "name": "subscribed", - "description": "Boolean flag for whether the currently logged in user is subscribed to this MR", + "description": "Indicates if the currently logged in user is subscribed to this merge request", "args": [ ], @@ -12565,7 +12609,7 @@ }, { "name": "targetBranch", - "description": null, + "description": "Target branch of the merge request", "args": [ ], @@ -12583,7 +12627,7 @@ }, { "name": "targetProject", - "description": null, + "description": "Target project of the merge request", "args": [ ], @@ -12601,7 +12645,7 @@ }, { "name": "targetProjectId", - "description": null, + "description": "ID of the merge request target project", "args": [ ], @@ -12619,7 +12663,7 @@ }, { "name": "taskCompletionStatus", - "description": null, + "description": "Completion status of tasks", "args": [ ], @@ -12637,7 +12681,7 @@ }, { "name": "timeEstimate", - "description": "The time estimate for the merge request", + "description": "Time estimate of the merge request", "args": [ ], @@ -12655,7 +12699,7 @@ }, { "name": "title", - "description": null, + "description": "Title of the merge request", "args": [ ], @@ -12705,7 +12749,7 @@ }, { "name": "updatedAt", - "description": null, + "description": "Timestamp of when the merge request was last updated", "args": [ ], @@ -12723,7 +12767,7 @@ }, { "name": "upvotes", - "description": null, + "description": "Number of upvotes for the merge request", "args": [ ], @@ -12741,7 +12785,7 @@ }, { "name": "userNotesCount", - "description": null, + "description": "User notes count of the merge request", "args": [ ], @@ -12773,7 +12817,7 @@ }, { "name": "webUrl", - "description": null, + "description": "Web URL of the merge request", "args": [ ], @@ -12787,7 +12831,7 @@ }, { "name": "workInProgress", - "description": null, + "description": "Indicates if the merge request is a work in progress (WIP)", "args": [ ], @@ -13302,7 +13346,7 @@ "fields": [ { "name": "assignees", - "description": null, + "description": "Assignees of the issue", "args": [ { "name": "after", @@ -13355,7 +13399,7 @@ }, { "name": "author", - "description": null, + "description": "User that created the issue", "args": [ ], @@ -13373,7 +13417,7 @@ }, { "name": "closedAt", - "description": null, + "description": "Timestamp of when the issue was closed", "args": [ ], @@ -13387,7 +13431,7 @@ }, { "name": "confidential", - "description": null, + "description": "Indicates the issue is confidential", "args": [ ], @@ -13405,7 +13449,7 @@ }, { "name": "createdAt", - "description": null, + "description": "Timestamp of when the issue was created", "args": [ ], @@ -13423,7 +13467,7 @@ }, { "name": "description", - "description": null, + "description": "Description of the issue", "args": [ ], @@ -13479,7 +13523,7 @@ }, { "name": "discussionLocked", - "description": null, + "description": "Indicates discussion is locked on the issue", "args": [ ], @@ -13554,7 +13598,7 @@ }, { "name": "downvotes", - "description": null, + "description": "Number of downvotes the issue has received", "args": [ ], @@ -13572,7 +13616,7 @@ }, { "name": "dueDate", - "description": null, + "description": "Due date of the issue", "args": [ ], @@ -13600,7 +13644,7 @@ }, { "name": "iid", - "description": null, + "description": "Internal ID of the issue", "args": [ ], @@ -13618,7 +13662,7 @@ }, { "name": "labels", - "description": null, + "description": "Labels of the issue", "args": [ { "name": "after", @@ -13671,7 +13715,7 @@ }, { "name": "milestone", - "description": null, + "description": "Milestone of the issue", "args": [ ], @@ -13742,7 +13786,7 @@ }, { "name": "participants", - "description": "List of participants for the issue", + "description": "List of participants in the issue", "args": [ { "name": "after", @@ -13795,11 +13839,11 @@ }, { "name": "reference", - "description": null, + "description": "Internal reference of the issue. Returned in shortened format by default", "args": [ { "name": "full", - "description": null, + "description": "Boolean option specifying whether the reference should be returned in full", "type": { "kind": "SCALAR", "name": "Boolean", @@ -13822,7 +13866,7 @@ }, { "name": "relativePosition", - "description": null, + "description": "Relative position of the issue (used for positioning in epic tree and issue boards)", "args": [ ], @@ -13836,7 +13880,7 @@ }, { "name": "state", - "description": null, + "description": "State of the issue", "args": [ ], @@ -13872,7 +13916,7 @@ }, { "name": "taskCompletionStatus", - "description": null, + "description": "Task completion status of the issue", "args": [ ], @@ -13890,7 +13934,7 @@ }, { "name": "timeEstimate", - "description": "The time estimate on the issue", + "description": "Time estimate of the issue", "args": [ ], @@ -13908,7 +13952,7 @@ }, { "name": "title", - "description": null, + "description": "Title of the issue", "args": [ ], @@ -13958,7 +14002,7 @@ }, { "name": "updatedAt", - "description": null, + "description": "Timestamp of when the issue was last updated", "args": [ ], @@ -13976,7 +14020,7 @@ }, { "name": "upvotes", - "description": null, + "description": "Number of upvotes the issue has received", "args": [ ], @@ -13994,7 +14038,7 @@ }, { "name": "userNotesCount", - "description": null, + "description": "Number of user notes of the issue", "args": [ ], @@ -14030,7 +14074,7 @@ }, { "name": "webPath", - "description": null, + "description": "Web path of the issue", "args": [ ], @@ -14048,7 +14092,7 @@ }, { "name": "webUrl", - "description": null, + "description": "Web URL of the issue", "args": [ ], @@ -14097,7 +14141,7 @@ "fields": [ { "name": "revision", - "description": null, + "description": "Revision", "args": [ ], @@ -14115,7 +14159,7 @@ }, { "name": "version", - "description": null, + "description": "Version", "args": [ ], @@ -14198,6 +14242,33 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "createEpic", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CreateEpicInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CreateEpicPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "createImageDiffNote", "description": null, @@ -14333,6 +14404,33 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "epicSetSubscription", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "EpicSetSubscriptionInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "EpicSetSubscriptionPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "epicTreeReorder", "description": null, @@ -16550,6 +16648,66 @@ }, "defaultValue": null }, + { + "name": "title", + "description": "The title of the epic", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "description", + "description": "The description of the epic", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "startDateFixed", + "description": "The start date of the epic", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "dueDateFixed", + "description": "The end date of the epic", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "startDateIsFixed", + "description": "Indicates start date should be sourced from start_date_fixed field not the issue milestones", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "dueDateIsFixed", + "description": "Indicates end date should be sourced from due_date_fixed field not the issue milestones", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, { "name": "iid", "description": "The iid of the epic to mutate", @@ -16564,6 +16722,141 @@ }, "defaultValue": null }, + { + "name": "stateEvent", + "description": "State event for the epic", + "type": { + "kind": "ENUM", + "name": "EpicStateEvent", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "EpicStateEvent", + "description": "State event of a GitLab Epic", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "REOPEN", + "description": "Reopen the Epic", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CLOSE", + "description": "Close the Epic", + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CreateEpicPayload", + "description": "Autogenerated return type of CreateEpic", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "epic", + "description": "The created epic", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "Epic", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "errors", + "description": "Reasons why the mutation failed.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CreateEpicInput", + "description": "Autogenerated input type of CreateEpic", + "fields": null, + "inputFields": [ + { + "name": "groupPath", + "description": "The group the epic to mutate is in", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + }, { "name": "title", "description": "The title of the epic", @@ -16625,14 +16918,134 @@ "defaultValue": null }, { - "name": "stateEvent", - "description": "State event for the epic", + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", "type": { - "kind": "ENUM", - "name": "EpicStateEvent", + "kind": "SCALAR", + "name": "String", "ofType": null }, "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "EpicSetSubscriptionPayload", + "description": "Autogenerated return type of EpicSetSubscription", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "epic", + "description": "The epic after mutation", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "Epic", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "errors", + "description": "Reasons why the mutation failed.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "EpicSetSubscriptionInput", + "description": "Autogenerated input type of EpicSetSubscription", + "fields": null, + "inputFields": [ + { + "name": "groupPath", + "description": "The group the epic to (un)subscribe is in", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "iid", + "description": "The iid of the epic to (un)subscribe", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "subscribedState", + "description": "The desired state of the subscription", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "defaultValue": null }, { "name": "clientMutationId", @@ -16649,29 +17062,6 @@ "enumValues": null, "possibleTypes": null }, - { - "kind": "ENUM", - "name": "EpicStateEvent", - "description": "State event of a GitLab Epic", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "REOPEN", - "description": "Reopen the Epic", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "CLOSE", - "description": "Close the Epic", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, { "kind": "OBJECT", "name": "__Schema", @@ -17663,4 +18053,4 @@ ] } } -} +} \ No newline at end of file diff --git a/spec/helpers/markup_helper_spec.rb b/spec/helpers/markup_helper_spec.rb index 32851249b2e..683c04428ab 100644 --- a/spec/helpers/markup_helper_spec.rb +++ b/spec/helpers/markup_helper_spec.rb @@ -210,7 +210,7 @@ describe MarkupHelper do it 'replaces commit message with emoji to link' do actual = link_to_markdown(':book: Book', '/foo') expect(actual) - .to eq '📖 Book' + .to eq '📖 Book' end end @@ -232,6 +232,12 @@ describe MarkupHelper do expect(doc.css('a')[0].attr('href')).to eq link expect(doc.css('a')[0].text).to eq 'This should finally fix ' end + + it "escapes HTML passed as an emoji" do + rendered = '<div class="test">test</div>' + expect(helper.link_to_html(rendered, '/foo')) + .to eq '<div class="test">test</div>' + end end describe '#render_wiki_content' do