Commit d1451e7b authored by charlie ablett's avatar charlie ablett Committed by Rémy Coutable

Backfill GraphQL field descriptions

- Some use API docs copy-pasted material (a smell)
- Some are really obvious (e.g. "user's name"
- Some use labels from the UI
parent 0437e100
......@@ -8,23 +8,31 @@ module Types
present_using CommitPresenter
field :id, type: GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :sha, type: GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :title, type: GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :description, type: GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :message, type: GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :authored_date, type: Types::TimeType, null: true # rubocop:disable Graphql/Descriptions
field :web_url, type: GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :signature_html, type: GraphQL::STRING_TYPE,
null: true, calls_gitaly: true, description: 'Rendered html for the commit signature'
field :id, type: GraphQL::ID_TYPE, null: false,
description: 'ID (global ID) of the commit'
field :sha, type: GraphQL::STRING_TYPE, null: false,
description: 'SHA1 ID of the commit'
field :title, type: GraphQL::STRING_TYPE, null: true,
description: 'Title of the commit message'
field :description, type: GraphQL::STRING_TYPE, null: true,
description: 'Description of the commit message'
field :message, type: GraphQL::STRING_TYPE, null: true,
description: 'Raw commit message'
field :authored_date, type: Types::TimeType, null: true,
description: 'Timestamp of when the commit was authored'
field :web_url, type: GraphQL::STRING_TYPE, null: false,
description: 'Web URL of the commit'
field :signature_html, type: GraphQL::STRING_TYPE, null: true, calls_gitaly: true,
description: 'Rendered HTML of the commit signature'
# models/commit lazy loads the author by email
field :author, type: Types::UserType, null: true # rubocop:disable Graphql/Descriptions
field :author, type: Types::UserType, null: true,
description: 'Author of the commit'
field :latest_pipeline,
type: Types::Ci::PipelineType,
null: true,
description: "Latest pipeline for this commit",
description: "Latest pipeline of the commit",
resolve: -> (obj, ctx, args) do
Gitlab::Graphql::Loaders::PipelineForShaLoader.new(obj.project, obj.sha).find_last
end
......
......@@ -8,14 +8,17 @@ module Types
expose_permissions Types::PermissionTypes::Group
field :web_url, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :web_url, GraphQL::STRING_TYPE, null: false,
description: 'Web URL of the group'
field :avatar_url, GraphQL::STRING_TYPE, null: true, resolve: -> (group, args, ctx) do # rubocop:disable Graphql/Descriptions
field :avatar_url, GraphQL::STRING_TYPE, null: true,
description: 'Avatar URL of the group',
resolve: -> (group, args, ctx) do
group.avatar_url(only_path: false)
end
field :parent, GroupType, # rubocop:disable Graphql/Descriptions
null: true,
field :parent, GroupType, null: true,
description: 'Parent group',
resolve: -> (obj, _args, _ctx) { Gitlab::Graphql::Loaders::BatchModelLoader.new(Group, obj.parent_id).find }
end
end
......
......@@ -12,53 +12,77 @@ module Types
present_using IssuePresenter
field :iid, GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :title, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :iid, GraphQL::ID_TYPE, null: false,
description: "Internal ID of the issue"
field :title, GraphQL::STRING_TYPE, null: false,
description: 'Title of the issue'
markdown_field :title_html, null: true
field :description, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :description, GraphQL::STRING_TYPE, null: true,
description: 'Description of the issue'
markdown_field :description_html, null: true
field :state, IssueStateEnum, null: false # rubocop:disable Graphql/Descriptions
field :reference, GraphQL::STRING_TYPE, null: false, method: :to_reference do # rubocop:disable Graphql/Descriptions
argument :full, GraphQL::BOOLEAN_TYPE, required: false, default_value: false # rubocop:disable Graphql/Descriptions
field :state, IssueStateEnum, null: false,
description: 'State of the issue'
field :reference, GraphQL::STRING_TYPE, null: false,
description: 'Internal reference of the issue. Returned in shortened format by default',
method: :to_reference do
argument :full, GraphQL::BOOLEAN_TYPE, required: false, default_value: false,
description: 'Boolean option specifying whether the reference should be returned in full'
end
field :author, Types::UserType, # rubocop:disable Graphql/Descriptions
null: false,
field :author, Types::UserType, null: false,
description: 'User that created the issue',
resolve: -> (obj, _args, _ctx) { Gitlab::Graphql::Loaders::BatchModelLoader.new(User, obj.author_id).find }
# Remove complexity when BatchLoader is used
field :assignees, Types::UserType.connection_type, null: true, complexity: 5 # rubocop:disable Graphql/Descriptions
field :assignees, Types::UserType.connection_type, null: true, complexity: 5,
description: 'Assignees of the issue'
# Remove complexity when BatchLoader is used
field :labels, Types::LabelType.connection_type, null: true, complexity: 5 # rubocop:disable Graphql/Descriptions
field :milestone, Types::MilestoneType, # rubocop:disable Graphql/Descriptions
null: true,
field :labels, Types::LabelType.connection_type, null: true, complexity: 5,
description: 'Labels of the issue'
field :milestone, Types::MilestoneType, null: true,
description: 'Milestone of the issue',
resolve: -> (obj, _args, _ctx) { Gitlab::Graphql::Loaders::BatchModelLoader.new(Milestone, obj.milestone_id).find }
field :due_date, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions
field :confidential, GraphQL::BOOLEAN_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :discussion_locked, GraphQL::BOOLEAN_TYPE, # rubocop:disable Graphql/Descriptions
null: false,
field :due_date, Types::TimeType, null: true,
description: 'Due date of the issue'
field :confidential, GraphQL::BOOLEAN_TYPE, null: false,
description: 'Indicates the issue is confidential'
field :discussion_locked, GraphQL::BOOLEAN_TYPE, null: false,
description: 'Indicates discussion is locked on the issue',
resolve: -> (obj, _args, _ctx) { !!obj.discussion_locked }
field :upvotes, GraphQL::INT_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :downvotes, GraphQL::INT_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :user_notes_count, GraphQL::INT_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :web_path, GraphQL::STRING_TYPE, null: false, method: :issue_path # rubocop:disable Graphql/Descriptions
field :web_url, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :relative_position, GraphQL::INT_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :participants, Types::UserType.connection_type, null: true, complexity: 5, description: 'List of participants for the issue'
field :time_estimate, GraphQL::INT_TYPE, null: false, description: 'The time estimate on the issue'
field :total_time_spent, GraphQL::INT_TYPE, null: false, description: 'Total time reported as spent on the issue'
field :closed_at, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions
field :created_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
field :updated_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
field :task_completion_status, Types::TaskCompletionStatus, null: false # rubocop:disable Graphql/Descriptions
field :upvotes, GraphQL::INT_TYPE, null: false,
description: 'Number of upvotes the issue has received'
field :downvotes, GraphQL::INT_TYPE, null: false,
description: 'Number of downvotes the issue has received'
field :user_notes_count, GraphQL::INT_TYPE, null: false,
description: 'Number of user notes of the issue'
field :web_path, GraphQL::STRING_TYPE, null: false, method: :issue_path,
description: 'Web path of the issue'
field :web_url, GraphQL::STRING_TYPE, null: false,
description: 'Web URL of the issue'
field :relative_position, GraphQL::INT_TYPE, null: true,
description: 'Relative position of the issue (used for positioning in epic tree and issue boards)'
field :participants, Types::UserType.connection_type, null: true, complexity: 5,
description: 'List of participants in the issue'
field :time_estimate, GraphQL::INT_TYPE, null: false,
description: 'Time estimate of the issue'
field :total_time_spent, GraphQL::INT_TYPE, null: false,
description: 'Total time reported as spent on the issue'
field :closed_at, Types::TimeType, null: true,
description: 'Timestamp of when the issue was closed'
field :created_at, Types::TimeType, null: false,
description: 'Timestamp of when the issue was created'
field :updated_at, Types::TimeType, null: false,
description: 'Timestamp of when the issue was last updated'
field :task_completion_status, Types::TaskCompletionStatus, null: false,
description: 'Task completion status of the issue'
end
end
......
......@@ -6,10 +6,14 @@ module Types
authorize :read_label
field :description, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :description, GraphQL::STRING_TYPE, null: true,
description: 'Description of the label (markdown rendered as HTML for caching)'
markdown_field :description_html, null: true
field :title, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :color, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :text_color, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :title, GraphQL::STRING_TYPE, null: false,
description: 'Content of the label'
field :color, GraphQL::STRING_TYPE, null: false,
description: 'Background color of the label'
field :text_color, GraphQL::STRING_TYPE, null: false,
description: 'Text color of the label'
end
end
......@@ -12,70 +12,116 @@ module Types
present_using MergeRequestPresenter
field :id, GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :iid, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :title, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :id, GraphQL::ID_TYPE, null: false,
description: 'ID of the merge request'
field :iid, GraphQL::STRING_TYPE, null: false,
description: 'Internal ID of the merge request'
field :title, GraphQL::STRING_TYPE, null: false,
description: 'Title of the merge request'
markdown_field :title_html, null: true
field :description, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :description, GraphQL::STRING_TYPE, null: true,
description: 'Description of the merge request (markdown rendered as HTML for caching)'
markdown_field :description_html, null: true
field :state, MergeRequestStateEnum, null: false # rubocop:disable Graphql/Descriptions
field :created_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
field :updated_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
field :source_project, Types::ProjectType, null: true # rubocop:disable Graphql/Descriptions
field :target_project, Types::ProjectType, null: false # rubocop:disable Graphql/Descriptions
field :diff_refs, Types::DiffRefsType, null: true # rubocop:disable Graphql/Descriptions
# Alias for target_project
field :project, Types::ProjectType, null: false # rubocop:disable Graphql/Descriptions
field :project_id, GraphQL::INT_TYPE, null: false, method: :target_project_id # rubocop:disable Graphql/Descriptions
field :source_project_id, GraphQL::INT_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :target_project_id, GraphQL::INT_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :source_branch, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :target_branch, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :work_in_progress, GraphQL::BOOLEAN_TYPE, method: :work_in_progress?, null: false # rubocop:disable Graphql/Descriptions
field :merge_when_pipeline_succeeds, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :diff_head_sha, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :merge_commit_sha, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :user_notes_count, GraphQL::INT_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :should_remove_source_branch, GraphQL::BOOLEAN_TYPE, method: :should_remove_source_branch?, null: true # rubocop:disable Graphql/Descriptions
field :force_remove_source_branch, GraphQL::BOOLEAN_TYPE, method: :force_remove_source_branch?, null: true # rubocop:disable Graphql/Descriptions
field :merge_status, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :in_progress_merge_commit_sha, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :merge_error, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :allow_collaboration, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :should_be_rebased, GraphQL::BOOLEAN_TYPE, method: :should_be_rebased?, null: false # rubocop:disable Graphql/Descriptions
field :rebase_commit_sha, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :rebase_in_progress, GraphQL::BOOLEAN_TYPE, method: :rebase_in_progress?, null: false, calls_gitaly: true # rubocop:disable Graphql/Descriptions
# rubocop:disable Graphql/Descriptions
field :merge_commit_message, GraphQL::STRING_TYPE, method: :default_merge_commit_message, null: true, deprecation_reason: "Renamed to defaultMergeCommitMessage"
# rubocop:enable Graphql/Descriptions
field :default_merge_commit_message, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :merge_ongoing, GraphQL::BOOLEAN_TYPE, method: :merge_ongoing?, null: false # rubocop:disable Graphql/Descriptions
field :source_branch_exists, GraphQL::BOOLEAN_TYPE, method: :source_branch_exists?, null: false # rubocop:disable Graphql/Descriptions
field :mergeable_discussions_state, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :web_url, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :upvotes, GraphQL::INT_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :downvotes, GraphQL::INT_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :state, MergeRequestStateEnum, null: false,
description: 'State of the merge request'
field :created_at, Types::TimeType, null: false,
description: 'Timestamp of when the merge request was created'
field :updated_at, Types::TimeType, null: false,
description: 'Timestamp of when the merge request was last updated'
field :source_project, Types::ProjectType, null: true,
description: 'Source project of the merge request'
field :target_project, Types::ProjectType, null: false,
description: 'Target project of the merge request'
field :diff_refs, Types::DiffRefsType, null: true,
description: 'References of the base SHA, the head SHA, and the start SHA for this merge request'
field :project, Types::ProjectType, null: false,
description: 'Alias for target_project'
field :project_id, GraphQL::INT_TYPE, null: false, method: :target_project_id,
description: 'ID of the merge request project'
field :source_project_id, GraphQL::INT_TYPE, null: true,
description: 'ID of the merge request source project'
field :target_project_id, GraphQL::INT_TYPE, null: false,
description: 'ID of the merge request target project'
field :source_branch, GraphQL::STRING_TYPE, null: false,
description: 'Source branch of the merge request'
field :target_branch, GraphQL::STRING_TYPE, null: false,
description: 'Target branch of the merge request'
field :work_in_progress, GraphQL::BOOLEAN_TYPE, method: :work_in_progress?, null: false,
description: 'Indicates if the merge request is a work in progress (WIP)'
field :merge_when_pipeline_succeeds, GraphQL::BOOLEAN_TYPE, null: true,
description: 'Indicates if the merge has been set to be merged when its pipeline succeeds (MWPS)'
field :diff_head_sha, GraphQL::STRING_TYPE, null: true,
description: 'Diff head SHA of the merge request'
field :merge_commit_sha, GraphQL::STRING_TYPE, null: true,
description: 'SHA of the merge request commit (set once merged)'
field :user_notes_count, GraphQL::INT_TYPE, null: true,
description: 'User notes count of the merge request'
field :should_remove_source_branch, GraphQL::BOOLEAN_TYPE, method: :should_remove_source_branch?, null: true,
description: 'Indicates if the source branch of the merge request will be deleted after merge'
field :force_remove_source_branch, GraphQL::BOOLEAN_TYPE, method: :force_remove_source_branch?, null: true,
description: 'Indicates if the project settings will lead to source branch deletion after merge'
field :merge_status, GraphQL::STRING_TYPE, null: true,
description: 'Status of the merge request'
field :in_progress_merge_commit_sha, GraphQL::STRING_TYPE, null: true,
description: 'Commit SHA of the merge request if merge is in progress'
field :merge_error, GraphQL::STRING_TYPE, null: true,
description: 'Error message due to a merge error'
field :allow_collaboration, GraphQL::BOOLEAN_TYPE, null: true,
description: 'Indicates if members of the target project can push to the fork'
field :should_be_rebased, GraphQL::BOOLEAN_TYPE, method: :should_be_rebased?, null: false,
description: 'Indicates if the merge request will be rebased'
field :rebase_commit_sha, GraphQL::STRING_TYPE, null: true,
description: 'Rebase commit SHA of the merge request'
field :rebase_in_progress, GraphQL::BOOLEAN_TYPE, method: :rebase_in_progress?, null: false, calls_gitaly: true,
description: 'Indicates if there is a rebase currently in progress for the merge request'
field :merge_commit_message, GraphQL::STRING_TYPE, method: :default_merge_commit_message, null: true, deprecation_reason: "Renamed to defaultMergeCommitMessage",
description: 'Deprecated - renamed to defaultMergeCommitMessage'
field :default_merge_commit_message, GraphQL::STRING_TYPE, null: true,
description: 'Default merge commit message of the merge request'
field :merge_ongoing, GraphQL::BOOLEAN_TYPE, method: :merge_ongoing?, null: false,
description: 'Indicates if a merge is currently occurring'
field :source_branch_exists, GraphQL::BOOLEAN_TYPE, method: :source_branch_exists?, null: false,
description: 'Indicates if the source branch of the merge request exists'
field :mergeable_discussions_state, GraphQL::BOOLEAN_TYPE, null: true,
description: 'Indicates if all discussions in the merge request have been resolved, allowing the merge request to be merged'
field :web_url, GraphQL::STRING_TYPE, null: true,
description: 'Web URL of the merge request'
field :upvotes, GraphQL::INT_TYPE, null: false,
description: 'Number of upvotes for the merge request'
field :downvotes, GraphQL::INT_TYPE, null: false,
description: 'Number of downvotes for the merge request'
field :head_pipeline, Types::Ci::PipelineType, null: true, method: :actual_head_pipeline # rubocop:disable Graphql/Descriptions
field :pipelines, Types::Ci::PipelineType.connection_type, # rubocop:disable Graphql/Descriptions
field :head_pipeline, Types::Ci::PipelineType, null: true, method: :actual_head_pipeline,
description: 'The pipeline running on the branch HEAD of the merge request'
field :pipelines, Types::Ci::PipelineType.connection_type,
description: 'Pipelines for the merge request',
resolver: Resolvers::MergeRequestPipelinesResolver
field :milestone, Types::MilestoneType, description: 'The milestone this merge request is linked to',
null: true,
field :milestone, Types::MilestoneType, null: true,
description: 'The milestone of the merge request',
resolve: -> (obj, _args, _ctx) { Gitlab::Graphql::Loaders::BatchModelLoader.new(Milestone, obj.milestone_id).find }
field :assignees, Types::UserType.connection_type, null: true, complexity: 5, description: 'The list of assignees for the merge request'
field :participants, Types::UserType.connection_type, null: true, complexity: 5, description: 'The list of participants on the merge request'
field :assignees, Types::UserType.connection_type, null: true, complexity: 5,
description: 'Assignees of the merge request'
field :participants, Types::UserType.connection_type, null: true, complexity: 5,
description: 'Participants in the merge request'
field :subscribed, GraphQL::BOOLEAN_TYPE, method: :subscribed?, null: false, complexity: 5,
description: 'Boolean flag for whether the currently logged in user is subscribed to this MR'
field :labels, Types::LabelType.connection_type, null: true, complexity: 5, description: 'The list of labels on the merge request'
field :discussion_locked, GraphQL::BOOLEAN_TYPE, description: 'Boolean flag determining if comments on the merge request are locked to members only',
description: 'Indicates if the currently logged in user is subscribed to this merge request'
field :labels, Types::LabelType.connection_type, null: true, complexity: 5,
description: 'Labels of the merge request'
field :discussion_locked, GraphQL::BOOLEAN_TYPE,
description: 'Indicates if comments on the merge request are locked to members only',
null: false,
resolve: -> (obj, _args, _ctx) { !!obj.discussion_locked }
field :time_estimate, GraphQL::INT_TYPE, null: false, description: 'The time estimate for the merge request'
field :total_time_spent, GraphQL::INT_TYPE, null: false, description: 'Total time reported as spent on the merge request'
field :reference, GraphQL::STRING_TYPE, null: false, method: :to_reference, description: 'Internal merge request reference. Returned in shortened format by default' do
argument :full, GraphQL::BOOLEAN_TYPE, required: false, default_value: false, description: 'Boolean option specifying whether the reference should be returned in full'
field :time_estimate, GraphQL::INT_TYPE, null: false,
description: 'Time estimate of the merge request'
field :total_time_spent, GraphQL::INT_TYPE, null: false,
description: 'Total time reported as spent on the merge request'
field :reference, GraphQL::STRING_TYPE, null: false, method: :to_reference,
description: 'Internal reference of the merge request. Returned in shortened format by default' do
argument :full, GraphQL::BOOLEAN_TYPE, required: false, default_value: false,
description: 'Boolean option specifying whether the reference should be returned in full'
end
field :task_completion_status, Types::TaskCompletionStatus, null: false # rubocop:disable Graphql/Descriptions
field :task_completion_status, Types::TaskCompletionStatus, null: false,
description: Types::TaskCompletionStatus.description
end
end
......@@ -6,7 +6,9 @@ module Types
authorize :read_instance_metadata
field :version, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :revision, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :version, GraphQL::STRING_TYPE, null: false,
description: 'Version'
field :revision, GraphQL::STRING_TYPE, null: false,
description: 'Revision'
end
end
......@@ -6,14 +6,21 @@ module Types
authorize :read_milestone
field :description, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :title, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :state, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :description, GraphQL::STRING_TYPE, null: true,
description: 'Description of the milestone'
field :title, GraphQL::STRING_TYPE, null: false,
description: 'Title of the milestone'
field :state, GraphQL::STRING_TYPE, null: false,
description: 'State of the milestone'
field :due_date, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions
field :start_date, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions
field :due_date, Types::TimeType, null: true,
description: 'Timestamp of the milestone due date'
field :start_date, Types::TimeType, null: true,
description: 'Timestamp of the milestone start date'
field :created_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
field :updated_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
field :created_at, Types::TimeType, null: false,
description: 'Timestamp of milestone creation'
field :updated_at, Types::TimeType, null: false,
description: 'Timestamp of last milestone update'
end
end
......@@ -6,27 +6,35 @@ module Types
authorize :read_namespace
field :id, GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :id, GraphQL::ID_TYPE, null: false,
description: 'ID of the namespace'
field :name, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :path, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :full_name, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :full_path, GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :name, GraphQL::STRING_TYPE, null: false,
description: 'Name of the namespace'
field :path, GraphQL::STRING_TYPE, null: false,
description: 'Path of the namespace'
field :full_name, GraphQL::STRING_TYPE, null: false,
description: 'Full name of the namespace'
field :full_path, GraphQL::ID_TYPE, null: false,
description: 'Full path of the namespace'
field :description, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :description, GraphQL::STRING_TYPE, null: true,
description: 'Description of the namespace'
markdown_field :description_html, null: true
field :visibility, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :lfs_enabled, GraphQL::BOOLEAN_TYPE, null: true, method: :lfs_enabled? # rubocop:disable Graphql/Descriptions
field :request_access_enabled, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :visibility, GraphQL::STRING_TYPE, null: true,
description: 'Visibility of the namespace'
field :lfs_enabled, GraphQL::BOOLEAN_TYPE, null: true, method: :lfs_enabled?,
description: 'Indicates if Large File Storage (LFS) is enabled for namespace'
field :request_access_enabled, GraphQL::BOOLEAN_TYPE, null: true,
description: 'Indicates if users can request access to namespace'
field :root_storage_statistics, Types::RootStorageStatisticsType,
null: true,
description: 'The aggregated storage statistics. Only available for root namespaces',
description: 'Aggregated storage statistics of the namespace. Only available for root namespaces',
resolve: -> (obj, _args, _ctx) { Gitlab::Graphql::Loaders::BatchRootStorageStatisticsLoader.new(obj.id).find }
field :projects, # rubocop:disable Graphql/Descriptions
Types::ProjectType.connection_type,
null: false,
field :projects, Types::ProjectType.connection_type, null: false,
description: 'Projects within this namespace',
resolver: ::Resolvers::NamespaceProjectsResolver
end
end
......@@ -6,13 +6,20 @@ module Types
authorize :read_statistics
field :commit_count, GraphQL::INT_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :commit_count, GraphQL::INT_TYPE, null: false,
description: 'Commit count of the project'
field :storage_size, GraphQL::INT_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :repository_size, GraphQL::INT_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :lfs_objects_size, GraphQL::INT_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :build_artifacts_size, GraphQL::INT_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :packages_size, GraphQL::INT_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :wiki_size, GraphQL::INT_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :storage_size, GraphQL::INT_TYPE, null: false,
description: 'Storage size of the project'
field :repository_size, GraphQL::INT_TYPE, null: false,
description: 'Repository size of the project'
field :lfs_objects_size, GraphQL::INT_TYPE, null: false,
description: 'Large File Storage (LFS) object size of the project'
field :build_artifacts_size, GraphQL::INT_TYPE, null: false,
description: 'Build artifacts size of the project'
field :packages_size, GraphQL::INT_TYPE, null: false,
description: 'Packages size of the project'
field :wiki_size, GraphQL::INT_TYPE, null: true,
description: 'Wiki size of the project'
end
end
......@@ -8,98 +8,142 @@ module Types
expose_permissions Types::PermissionTypes::Project
field :id, GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :id, GraphQL::ID_TYPE, null: false,
description: 'ID of the project'
field :full_path, GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :path, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :full_path, GraphQL::ID_TYPE, null: false,
description: 'Full path of the project'
field :path, GraphQL::STRING_TYPE, null: false,
description: 'Path of the project'
field :name_with_namespace, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :name, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :name_with_namespace, GraphQL::STRING_TYPE, null: false,
description: 'Full name of the project with its namespace'
field :name, GraphQL::STRING_TYPE, null: false,
description: 'Name of the project (without namespace)'
field :description, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :description, GraphQL::STRING_TYPE, null: true,
description: 'Short description of the project'
markdown_field :description_html, null: true
field :tag_list, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :ssh_url_to_repo, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :http_url_to_repo, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :web_url, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :star_count, GraphQL::INT_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :forks_count, GraphQL::INT_TYPE, null: false, calls_gitaly: true # 4 times # rubocop:disable Graphql/Descriptions
field :created_at, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions
field :last_activity_at, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions
field :archived, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :visibility, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :container_registry_enabled, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :shared_runners_enabled, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :lfs_enabled, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :merge_requests_ff_only_enabled, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :avatar_url, GraphQL::STRING_TYPE, null: true, calls_gitaly: true, resolve: -> (project, args, ctx) do # rubocop:disable Graphql/Descriptions
field :tag_list, GraphQL::STRING_TYPE, null: true,
description: 'List of project tags'
field :ssh_url_to_repo, GraphQL::STRING_TYPE, null: true,
description: 'URL to connect to the project via SSH'
field :http_url_to_repo, GraphQL::STRING_TYPE, null: true,
description: 'URL to connect to the project via HTTPS'
field :web_url, GraphQL::STRING_TYPE, null: true,
description: 'Web URL of the project'
field :star_count, GraphQL::INT_TYPE, null: false,
description: 'Number of times the project has been starred'
field :forks_count, GraphQL::INT_TYPE, null: false, calls_gitaly: true, # 4 times
description: 'Number of times the project has been forked'
field :created_at, Types::TimeType, null: true,
description: 'Timestamp of the project creation'
field :last_activity_at, Types::TimeType, null: true,
description: 'Timestamp of the project last activity'
field :archived, GraphQL::BOOLEAN_TYPE, null: true,
description: 'Archived status of the project'
field :visibility, GraphQL::STRING_TYPE, null: true,
description: 'Visibility of the project'
field :container_registry_enabled, GraphQL::BOOLEAN_TYPE, null: true,
description: 'Indicates if the project stores Docker container images in a container registry'
field :shared_runners_enabled, GraphQL::BOOLEAN_TYPE, null: true,
description: 'Indicates if shared runners are enabled on the project'
field :lfs_enabled, GraphQL::BOOLEAN_TYPE, null: true,
description: 'Indicates if the project has Large File Storage (LFS) enabled'
field :merge_requests_ff_only_enabled, GraphQL::BOOLEAN_TYPE, null: true,
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.'
field :avatar_url, GraphQL::STRING_TYPE, null: true, calls_gitaly: true,
description: 'URL to avatar image file of the project',
resolve: -> (project, args, ctx) do
project.avatar_url(only_path: false)
end
%i[issues merge_requests wiki snippets].each do |feature|
field "#{feature}_enabled", GraphQL::BOOLEAN_TYPE, null: true, resolve: -> (project, args, ctx) do # rubocop:disable Graphql/Descriptions
field "#{feature}_enabled", GraphQL::BOOLEAN_TYPE, null: true,
description: "(deprecated) Does this project have #{feature} enabled?. Use `#{feature}_access_level` instead",
resolve: -> (project, args, ctx) do
project.feature_available?(feature, ctx[:current_user])
end
end
field :jobs_enabled, GraphQL::BOOLEAN_TYPE, null: true, resolve: -> (project, args, ctx) do # rubocop:disable Graphql/Descriptions
field :jobs_enabled, GraphQL::BOOLEAN_TYPE, null: true,
description: '(deprecated) Enable jobs for this project. Use `builds_access_level` instead',
resolve: -> (project, args, ctx) do
project.feature_available?(:builds, ctx[:current_user])
end
field :public_jobs, GraphQL::BOOLEAN_TYPE, method: :public_builds, null: true # rubocop:disable Graphql/Descriptions
field :public_jobs, GraphQL::BOOLEAN_TYPE, method: :public_builds, null: true,
description: 'Indicates if there is public access to pipelines and job details of the project, including output logs and artifacts'
field :open_issues_count, GraphQL::INT_TYPE, null: true, resolve: -> (project, args, ctx) do # rubocop:disable Graphql/Descriptions
field :open_issues_count, GraphQL::INT_TYPE, null: true,
description: 'Number of open issues for the project',
resolve: -> (project, args, ctx) do
project.open_issues_count if project.feature_available?(:issues, ctx[:current_user])
end
field :import_status, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :only_allow_merge_if_pipeline_succeeds, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :request_access_enabled, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :only_allow_merge_if_all_discussions_are_resolved, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :printing_merge_request_link_enabled, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :remove_source_branch_after_merge, GraphQL::BOOLEAN_TYPE, null: true, description: 'Remove the source branch by default after merge'
field :namespace, Types::NamespaceType, null: true # rubocop:disable Graphql/Descriptions
field :group, Types::GroupType, null: true # rubocop:disable Graphql/Descriptions
field :statistics, Types::ProjectStatisticsType, # rubocop:disable Graphql/Descriptions
field :import_status, GraphQL::STRING_TYPE, null: true,
description: 'Status of project import background job of the project'
field :only_allow_merge_if_pipeline_succeeds, GraphQL::BOOLEAN_TYPE, null: true,
description: 'Indicates if merge requests of the project can only be merged with successful jobs'
field :request_access_enabled, GraphQL::BOOLEAN_TYPE, null: true,
description: 'Indicates if users can request member access to the project'
field :only_allow_merge_if_all_discussions_are_resolved, GraphQL::BOOLEAN_TYPE, null: true,
description: 'Indicates if merge requests of the project can only be merged when all the discussions are resolved'
field :printing_merge_request_link_enabled, GraphQL::BOOLEAN_TYPE, null: true,
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'
field :remove_source_branch_after_merge, GraphQL::BOOLEAN_TYPE, null: true,
description: 'Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project'
field :namespace, Types::NamespaceType, null: true,
description: 'Namespace of the project'
field :group, Types::GroupType, null: true,
description: 'Group of the project'
field :statistics, Types::ProjectStatisticsType,
null: true,
description: 'Statistics of the project',
resolve: -> (obj, _args, _ctx) { Gitlab::Graphql::Loaders::BatchProjectStatisticsLoader.new(obj.id).find }
field :repository, Types::RepositoryType, null: true # rubocop:disable Graphql/Descriptions
field :repository, Types::RepositoryType, null: true,
description: 'Git repository of the project'
field :merge_requests, # rubocop:disable Graphql/Descriptions
field :merge_requests,
Types::MergeRequestType.connection_type,
null: true,
description: 'Merge requests of the project',
resolver: Resolvers::MergeRequestsResolver
field :merge_request, # rubocop:disable Graphql/Descriptions
field :merge_request,
Types::MergeRequestType,
null: true,
description: 'A single merge request of the project',
resolver: Resolvers::MergeRequestsResolver.single
field :issues, # rubocop:disable Graphql/Descriptions
field :issues,
Types::IssueType.connection_type,
null: true,
description: 'Issues of the project',
resolver: Resolvers::IssuesResolver
field :issue, # rubocop:disable Graphql/Descriptions
field :issue,
Types::ExtendedIssueType,
null: true,
description: 'A single issue of the project',
resolver: Resolvers::IssuesResolver.single
field :pipelines, # rubocop:disable Graphql/Descriptions
field :pipelines,
Types::Ci::PipelineType.connection_type,
null: true,
description: 'Build pipelines of the project',
resolver: Resolvers::ProjectPipelinesResolver
end
end
......@@ -6,9 +6,13 @@ module Types
authorize :download_code
field :root_ref, GraphQL::STRING_TYPE, null: true, calls_gitaly: true # rubocop:disable Graphql/Descriptions
field :empty, GraphQL::BOOLEAN_TYPE, null: false, method: :empty?, calls_gitaly: true # rubocop:disable Graphql/Descriptions
field :exists, GraphQL::BOOLEAN_TYPE, null: false, method: :exists? # rubocop:disable Graphql/Descriptions
field :tree, Types::Tree::TreeType, null: true, resolver: Resolvers::TreeResolver, calls_gitaly: true # rubocop:disable Graphql/Descriptions
field :root_ref, GraphQL::STRING_TYPE, null: true, calls_gitaly: true,
description: 'Default branch of the repository'
field :empty, GraphQL::BOOLEAN_TYPE, null: false, method: :empty?, calls_gitaly: true,
description: 'Indicates repository has no visible content'
field :exists, GraphQL::BOOLEAN_TYPE, null: false, method: :exists?,
description: 'Indicates a corresponding Git repository exists on disk'
field :tree, Types::Tree::TreeType, null: true, resolver: Resolvers::TreeResolver, calls_gitaly: true,
description: 'Tree of the repository'
end
end
......@@ -8,8 +8,10 @@ module Types
graphql_name 'TaskCompletionStatus'
description 'Completion status of tasks'
field :count, GraphQL::INT_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :completed_count, GraphQL::INT_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :count, GraphQL::INT_TYPE, null: false,
description: 'Number of total tasks'
field :completed_count, GraphQL::INT_TYPE, null: false,
description: 'Number of completed tasks'
end
# rubocop: enable Graphql/AuthorizeTypes
end
......@@ -8,12 +8,16 @@ module Types
present_using UserPresenter
field :name, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :username, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :avatar_url, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :web_url, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :name, GraphQL::STRING_TYPE, null: false,
description: 'Human-readable name of the user'
field :username, GraphQL::STRING_TYPE, null: false,
description: 'Username of the user. Unique within this instance of GitLab'
field :avatar_url, GraphQL::STRING_TYPE, null: false,
description: "URL of the user's avatar"
field :web_url, GraphQL::STRING_TYPE, null: false,
description: 'Web URL of the user'
field :todos, Types::TodoType.connection_type, null: false,
resolver: Resolvers::TodoResolver,
description: 'Todos of this user'
description: 'Todos of the user'
end
end
......@@ -47,16 +47,16 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `id` | ID! | |
| `sha` | String! | |
| `title` | String | |
| `description` | String | |
| `message` | String | |
| `authoredDate` | Time | |
| `webUrl` | String! | |
| `signatureHtml` | String | Rendered html for the commit signature |
| `author` | User | |
| `latestPipeline` | Pipeline | Latest pipeline for this commit |
| `id` | ID! | ID (global ID) of the commit |
| `sha` | String! | SHA1 ID of the commit |
| `title` | String | Title of the commit message |
| `description` | String | Description of the commit message |
| `message` | String | Raw commit message |
| `authoredDate` | Time | Timestamp of when the commit was authored |
| `webUrl` | String! | Web URL of the commit |
| `signatureHtml` | String | Rendered HTML of the commit signature |
| `author` | User | Author of the commit |
| `latestPipeline` | Pipeline | Latest pipeline of the commit |
### CreateDiffNotePayload
......@@ -226,30 +226,30 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `userPermissions` | IssuePermissions! | Permissions for the current user on the resource |
| `iid` | ID! | |
| `title` | String! | |
| `iid` | ID! | Internal ID of the issue |
| `title` | String! | Title of the issue |
| `titleHtml` | String | The GitLab Flavored Markdown rendering of `title` |
| `description` | String | |
| `description` | String | Description of the issue |
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
| `state` | IssueState! | |
| `reference` | String! | |
| `author` | User! | |
| `milestone` | Milestone | |
| `dueDate` | Time | |
| `confidential` | Boolean! | |
| `discussionLocked` | Boolean! | |
| `upvotes` | Int! | |
| `downvotes` | Int! | |
| `userNotesCount` | Int! | |
| `webPath` | String! | |
| `webUrl` | String! | |
| `relativePosition` | Int | |
| `timeEstimate` | Int! | The time estimate on the issue |
| `state` | IssueState! | State of the issue |
| `reference` | String! | Internal reference of the issue. Returned in shortened format by default |
| `author` | User! | User that created the issue |
| `milestone` | Milestone | Milestone of the issue |
| `dueDate` | Time | Due date of the issue |
| `confidential` | Boolean! | Indicates the issue is confidential |
| `discussionLocked` | Boolean! | Indicates discussion is locked on the issue |
| `upvotes` | Int! | Number of upvotes the issue has received |
| `downvotes` | Int! | Number of downvotes the issue has received |
| `userNotesCount` | Int! | Number of user notes of the issue |
| `webPath` | String! | Web path of the issue |
| `webUrl` | String! | Web URL of the issue |
| `relativePosition` | Int | Relative position of the issue (used for positioning in epic tree and issue boards) |
| `timeEstimate` | Int! | Time estimate of the issue |
| `totalTimeSpent` | Int! | Total time reported as spent on the issue |
| `closedAt` | Time | |
| `createdAt` | Time! | |
| `updatedAt` | Time! | |
| `taskCompletionStatus` | TaskCompletionStatus! | |
| `closedAt` | Time | Timestamp of when the issue was closed |
| `createdAt` | Time! | Timestamp of when the issue was created |
| `updatedAt` | Time! | Timestamp of when the issue was last updated |
| `taskCompletionStatus` | TaskCompletionStatus! | Task completion status of the issue |
| `epic` | Epic | The epic to which issue belongs |
| `weight` | Int | |
| `designs` | DesignCollection | |
......@@ -283,30 +283,30 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `userPermissions` | IssuePermissions! | Permissions for the current user on the resource |
| `iid` | ID! | |
| `title` | String! | |
| `iid` | ID! | Internal ID of the issue |
| `title` | String! | Title of the issue |
| `titleHtml` | String | The GitLab Flavored Markdown rendering of `title` |
| `description` | String | |
| `description` | String | Description of the issue |
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
| `state` | IssueState! | |
| `reference` | String! | |
| `author` | User! | |
| `milestone` | Milestone | |
| `dueDate` | Time | |
| `confidential` | Boolean! | |
| `discussionLocked` | Boolean! | |
| `upvotes` | Int! | |
| `downvotes` | Int! | |
| `userNotesCount` | Int! | |
| `webPath` | String! | |
| `webUrl` | String! | |
| `relativePosition` | Int | |
| `timeEstimate` | Int! | The time estimate on the issue |
| `state` | IssueState! | State of the issue |
| `reference` | String! | Internal reference of the issue. Returned in shortened format by default |
| `author` | User! | User that created the issue |
| `milestone` | Milestone | Milestone of the issue |
| `dueDate` | Time | Due date of the issue |
| `confidential` | Boolean! | Indicates the issue is confidential |
| `discussionLocked` | Boolean! | Indicates discussion is locked on the issue |
| `upvotes` | Int! | Number of upvotes the issue has received |
| `downvotes` | Int! | Number of downvotes the issue has received |
| `userNotesCount` | Int! | Number of user notes of the issue |
| `webPath` | String! | Web path of the issue |
| `webUrl` | String! | Web URL of the issue |
| `relativePosition` | Int | Relative position of the issue (used for positioning in epic tree and issue boards) |
| `timeEstimate` | Int! | Time estimate of the issue |
| `totalTimeSpent` | Int! | Total time reported as spent on the issue |
| `closedAt` | Time | |
| `createdAt` | Time! | |
| `updatedAt` | Time! | |
| `taskCompletionStatus` | TaskCompletionStatus! | |
| `closedAt` | Time | Timestamp of when the issue was closed |
| `createdAt` | Time! | Timestamp of when the issue was created |
| `updatedAt` | Time! | Timestamp of when the issue was last updated |
| `taskCompletionStatus` | TaskCompletionStatus! | Task completion status of the issue |
| `epic` | Epic | The epic to which issue belongs |
| `weight` | Int | |
| `designs` | DesignCollection | |
......@@ -317,21 +317,21 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `id` | ID! | |
| `name` | String! | |
| `path` | String! | |
| `fullName` | String! | |
| `fullPath` | ID! | |
| `description` | String | |
| `id` | ID! | ID of the namespace |
| `name` | String! | Name of the namespace |
| `path` | String! | Path of the namespace |
| `fullName` | String! | Full name of the namespace |
| `fullPath` | ID! | Full path of the namespace |
| `description` | String | Description of the namespace |
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
| `visibility` | String | |
| `lfsEnabled` | Boolean | |
| `requestAccessEnabled` | Boolean | |
| `rootStorageStatistics` | RootStorageStatistics | The aggregated storage statistics. Only available for root namespaces |
| `visibility` | String | Visibility of the namespace |
| `lfsEnabled` | Boolean | Indicates if Large File Storage (LFS) is enabled for namespace |
| `requestAccessEnabled` | Boolean | Indicates if users can request access to namespace |
| `rootStorageStatistics` | RootStorageStatistics | Aggregated storage statistics of the namespace. Only available for root namespaces |
| `userPermissions` | GroupPermissions! | Permissions for the current user on the resource |
| `webUrl` | String! | |
| `avatarUrl` | String | |
| `parent` | Group | |
| `webUrl` | String! | Web URL of the group |
| `avatarUrl` | String | Avatar URL of the group |
| `parent` | Group | Parent group |
| `epicsEnabled` | Boolean | |
| `epic` | Epic | |
......@@ -346,30 +346,30 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `userPermissions` | IssuePermissions! | Permissions for the current user on the resource |
| `iid` | ID! | |
| `title` | String! | |
| `iid` | ID! | Internal ID of the issue |
| `title` | String! | Title of the issue |
| `titleHtml` | String | The GitLab Flavored Markdown rendering of `title` |
| `description` | String | |
| `description` | String | Description of the issue |
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
| `state` | IssueState! | |
| `reference` | String! | |
| `author` | User! | |
| `milestone` | Milestone | |
| `dueDate` | Time | |
| `confidential` | Boolean! | |
| `discussionLocked` | Boolean! | |
| `upvotes` | Int! | |
| `downvotes` | Int! | |
| `userNotesCount` | Int! | |
| `webPath` | String! | |
| `webUrl` | String! | |
| `relativePosition` | Int | |
| `timeEstimate` | Int! | The time estimate on the issue |
| `state` | IssueState! | State of the issue |
| `reference` | String! | Internal reference of the issue. Returned in shortened format by default |
| `author` | User! | User that created the issue |
| `milestone` | Milestone | Milestone of the issue |
| `dueDate` | Time | Due date of the issue |
| `confidential` | Boolean! | Indicates the issue is confidential |
| `discussionLocked` | Boolean! | Indicates discussion is locked on the issue |
| `upvotes` | Int! | Number of upvotes the issue has received |
| `downvotes` | Int! | Number of downvotes the issue has received |
| `userNotesCount` | Int! | Number of user notes of the issue |
| `webPath` | String! | Web path of the issue |
| `webUrl` | String! | Web URL of the issue |
| `relativePosition` | Int | Relative position of the issue (used for positioning in epic tree and issue boards) |
| `timeEstimate` | Int! | Time estimate of the issue |
| `totalTimeSpent` | Int! | Total time reported as spent on the issue |
| `closedAt` | Time | |
| `createdAt` | Time! | |
| `updatedAt` | Time! | |
| `taskCompletionStatus` | TaskCompletionStatus! | |
| `closedAt` | Time | Timestamp of when the issue was closed |
| `createdAt` | Time! | Timestamp of when the issue was created |
| `updatedAt` | Time! | Timestamp of when the issue was last updated |
| `taskCompletionStatus` | TaskCompletionStatus! | Task completion status of the issue |
| `epic` | Epic | The epic to which issue belongs |
| `weight` | Int | |
| `designs` | DesignCollection | |
......@@ -392,65 +392,65 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `description` | String | |
| `description` | String | Description of the label (markdown rendered as HTML for caching) |
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
| `title` | String! | |
| `color` | String! | |
| `textColor` | String! | |
| `title` | String! | Content of the label |
| `color` | String! | Background color of the label |
| `textColor` | String! | Text color of the label |
### MergeRequest
| Name | Type | Description |
| --- | ---- | ---------- |
| `userPermissions` | MergeRequestPermissions! | Permissions for the current user on the resource |
| `id` | ID! | |
| `iid` | String! | |
| `title` | String! | |
| `id` | ID! | ID of the merge request |
| `iid` | String! | Internal ID of the merge request |
| `title` | String! | Title of the merge request |
| `titleHtml` | String | The GitLab Flavored Markdown rendering of `title` |
| `description` | String | |
| `description` | String | Description of the merge request (markdown rendered as HTML for caching) |
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
| `state` | MergeRequestState! | |
| `createdAt` | Time! | |
| `updatedAt` | Time! | |
| `sourceProject` | Project | |
| `targetProject` | Project! | |
| `diffRefs` | DiffRefs | |
| `project` | Project! | |
| `projectId` | Int! | |
| `sourceProjectId` | Int | |
| `targetProjectId` | Int! | |
| `sourceBranch` | String! | |
| `targetBranch` | String! | |
| `workInProgress` | Boolean! | |
| `mergeWhenPipelineSucceeds` | Boolean | |
| `diffHeadSha` | String | |
| `mergeCommitSha` | String | |
| `userNotesCount` | Int | |
| `shouldRemoveSourceBranch` | Boolean | |
| `forceRemoveSourceBranch` | Boolean | |
| `mergeStatus` | String | |
| `inProgressMergeCommitSha` | String | |
| `mergeError` | String | |
| `allowCollaboration` | Boolean | |
| `shouldBeRebased` | Boolean! | |
| `rebaseCommitSha` | String | |
| `rebaseInProgress` | Boolean! | |
| `mergeCommitMessage` | String | |
| `defaultMergeCommitMessage` | String | |
| `mergeOngoing` | Boolean! | |
| `sourceBranchExists` | Boolean! | |
| `mergeableDiscussionsState` | Boolean | |
| `webUrl` | String | |
| `upvotes` | Int! | |
| `downvotes` | Int! | |
| `headPipeline` | Pipeline | |
| `milestone` | Milestone | The milestone this merge request is linked to |
| `subscribed` | Boolean! | Boolean flag for whether the currently logged in user is subscribed to this MR |
| `discussionLocked` | Boolean! | Boolean flag determining if comments on the merge request are locked to members only |
| `timeEstimate` | Int! | The time estimate for the merge request |
| `state` | MergeRequestState! | State of the merge request |
| `createdAt` | Time! | Timestamp of when the merge request was created |
| `updatedAt` | Time! | Timestamp of when the merge request was last updated |
| `sourceProject` | Project | Source project of the merge request |
| `targetProject` | Project! | Target project of the merge request |
| `diffRefs` | DiffRefs | References of the base SHA, the head SHA, and the start SHA for this merge request |
| `project` | Project! | Alias for target_project |
| `projectId` | Int! | ID of the merge request project |
| `sourceProjectId` | Int | ID of the merge request source project |
| `targetProjectId` | Int! | ID of the merge request target project |
| `sourceBranch` | String! | Source branch of the merge request |
| `targetBranch` | String! | Target branch of the merge request |
| `workInProgress` | Boolean! | Indicates if the merge request is a work in progress (WIP) |
| `mergeWhenPipelineSucceeds` | Boolean | Indicates if the merge has been set to be merged when its pipeline succeeds (MWPS) |
| `diffHeadSha` | String | Diff head SHA of the merge request |
| `mergeCommitSha` | String | SHA of the merge request commit (set once merged) |
| `userNotesCount` | Int | User notes count of the merge request |
| `shouldRemoveSourceBranch` | Boolean | Indicates if the source branch of the merge request will be deleted after merge |
| `forceRemoveSourceBranch` | Boolean | Indicates if the project settings will lead to source branch deletion after merge |
| `mergeStatus` | String | Status of the merge request |
| `inProgressMergeCommitSha` | String | Commit SHA of the merge request if merge is in progress |
| `mergeError` | String | Error message due to a merge error |
| `allowCollaboration` | Boolean | Indicates if members of the target project can push to the fork |
| `shouldBeRebased` | Boolean! | Indicates if the merge request will be rebased |
| `rebaseCommitSha` | String | Rebase commit SHA of the merge request |
| `rebaseInProgress` | Boolean! | Indicates if there is a rebase currently in progress for the merge request |
| `mergeCommitMessage` | String | Deprecated - renamed to defaultMergeCommitMessage |
| `defaultMergeCommitMessage` | String | Default merge commit message of the merge request |
| `mergeOngoing` | Boolean! | Indicates if a merge is currently occurring |
| `sourceBranchExists` | Boolean! | Indicates if the source branch of the merge request exists |
| `mergeableDiscussionsState` | Boolean | Indicates if all discussions in the merge request have been resolved, allowing the merge request to be merged |
| `webUrl` | String | Web URL of the merge request |
| `upvotes` | Int! | Number of upvotes for the merge request |
| `downvotes` | Int! | Number of downvotes for the merge request |
| `headPipeline` | Pipeline | The pipeline running on the branch HEAD of the merge request |
| `milestone` | Milestone | The milestone of the merge request |
| `subscribed` | Boolean! | Indicates if the currently logged in user is subscribed to this merge request |
| `discussionLocked` | Boolean! | Indicates if comments on the merge request are locked to members only |
| `timeEstimate` | Int! | Time estimate of the merge request |
| `totalTimeSpent` | Int! | Total time reported as spent on the merge request |
| `reference` | String! | Internal merge request reference. Returned in shortened format by default |
| `taskCompletionStatus` | TaskCompletionStatus! | |
| `reference` | String! | Internal reference of the merge request. Returned in shortened format by default |
| `taskCompletionStatus` | TaskCompletionStatus! | Completion status of tasks |
### MergeRequestPermissions
......@@ -477,36 +477,36 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `version` | String! | |
| `revision` | String! | |
| `version` | String! | Version |
| `revision` | String! | Revision |
### Milestone
| Name | Type | Description |
| --- | ---- | ---------- |
| `description` | String | |
| `title` | String! | |
| `state` | String! | |
| `dueDate` | Time | |
| `startDate` | Time | |
| `createdAt` | Time! | |
| `updatedAt` | Time! | |
| `description` | String | Description of the milestone |
| `title` | String! | Title of the milestone |
| `state` | String! | State of the milestone |
| `dueDate` | Time | Timestamp of the milestone due date |
| `startDate` | Time | Timestamp of the milestone start date |
| `createdAt` | Time! | Timestamp of milestone creation |
| `updatedAt` | Time! | Timestamp of last milestone update |
### Namespace
| Name | Type | Description |
| --- | ---- | ---------- |
| `id` | ID! | |
| `name` | String! | |
| `path` | String! | |
| `fullName` | String! | |
| `fullPath` | ID! | |
| `description` | String | |
| `id` | ID! | ID of the namespace |
| `name` | String! | Name of the namespace |
| `path` | String! | Path of the namespace |
| `fullName` | String! | Full name of the namespace |
| `fullPath` | ID! | Full path of the namespace |
| `description` | String | Description of the namespace |
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
| `visibility` | String | |
| `lfsEnabled` | Boolean | |
| `requestAccessEnabled` | Boolean | |
| `rootStorageStatistics` | RootStorageStatistics | The aggregated storage statistics. Only available for root namespaces |
| `visibility` | String | Visibility of the namespace |
| `lfsEnabled` | Boolean | Indicates if Large File Storage (LFS) is enabled for namespace |
| `requestAccessEnabled` | Boolean | Indicates if users can request access to namespace |
| `rootStorageStatistics` | RootStorageStatistics | Aggregated storage statistics of the namespace. Only available for root namespaces |
### Note
......@@ -578,47 +578,47 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `userPermissions` | ProjectPermissions! | Permissions for the current user on the resource |
| `id` | ID! | |
| `fullPath` | ID! | |
| `path` | String! | |
| `nameWithNamespace` | String! | |
| `name` | String! | |
| `description` | String | |
| `id` | ID! | ID of the project |
| `fullPath` | ID! | Full path of the project |
| `path` | String! | Path of the project |
| `nameWithNamespace` | String! | Full name of the project with its namespace |
| `name` | String! | Name of the project (without namespace) |
| `description` | String | Short description of the project |
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
| `tagList` | String | |
| `sshUrlToRepo` | String | |
| `httpUrlToRepo` | String | |
| `webUrl` | String | |
| `starCount` | Int! | |
| `forksCount` | Int! | |
| `createdAt` | Time | |
| `lastActivityAt` | Time | |
| `archived` | Boolean | |
| `visibility` | String | |
| `containerRegistryEnabled` | Boolean | |
| `sharedRunnersEnabled` | Boolean | |
| `lfsEnabled` | Boolean | |
| `mergeRequestsFfOnlyEnabled` | Boolean | |
| `avatarUrl` | String | |
| `issuesEnabled` | Boolean | |
| `mergeRequestsEnabled` | Boolean | |
| `wikiEnabled` | Boolean | |
| `snippetsEnabled` | Boolean | |
| `jobsEnabled` | Boolean | |
| `publicJobs` | Boolean | |
| `openIssuesCount` | Int | |
| `importStatus` | String | |
| `onlyAllowMergeIfPipelineSucceeds` | Boolean | |
| `requestAccessEnabled` | Boolean | |
| `onlyAllowMergeIfAllDiscussionsAreResolved` | Boolean | |
| `printingMergeRequestLinkEnabled` | Boolean | |
| `removeSourceBranchAfterMerge` | Boolean | Remove the source branch by default after merge |
| `namespace` | Namespace | |
| `group` | Group | |
| `statistics` | ProjectStatistics | |
| `repository` | Repository | |
| `mergeRequest` | MergeRequest | |
| `issue` | ExtendedIssue | |
| `tagList` | String | List of project tags |
| `sshUrlToRepo` | String | URL to connect to the project via SSH |
| `httpUrlToRepo` | String | URL to connect to the project via HTTPS |
| `webUrl` | String | Web URL of the project |
| `starCount` | Int! | Number of times the project has been starred |
| `forksCount` | Int! | Number of times the project has been forked |
| `createdAt` | Time | Timestamp of the project creation |
| `lastActivityAt` | Time | Timestamp of the project last activity |
| `archived` | Boolean | Archived status of the project |
| `visibility` | String | Visibility of the project |
| `containerRegistryEnabled` | Boolean | Indicates if the project stores Docker container images in a container registry |
| `sharedRunnersEnabled` | Boolean | Indicates if shared runners are enabled on the project |
| `lfsEnabled` | Boolean | Indicates if the project has Large File Storage (LFS) enabled |
| `mergeRequestsFfOnlyEnabled` | 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. |
| `avatarUrl` | String | URL to avatar image file of the project |
| `issuesEnabled` | Boolean | (deprecated) Does this project have issues enabled?. Use `issues_access_level` instead |
| `mergeRequestsEnabled` | Boolean | (deprecated) Does this project have merge_requests enabled?. Use `merge_requests_access_level` instead |
| `wikiEnabled` | Boolean | (deprecated) Does this project have wiki enabled?. Use `wiki_access_level` instead |
| `snippetsEnabled` | Boolean | (deprecated) Does this project have snippets enabled?. Use `snippets_access_level` instead |
| `jobsEnabled` | Boolean | (deprecated) Enable jobs for this project. Use `builds_access_level` instead |
| `publicJobs` | Boolean | Indicates if there is public access to pipelines and job details of the project, including output logs and artifacts |
| `openIssuesCount` | Int | Number of open issues for the project |
| `importStatus` | String | Status of project import background job of the project |
| `onlyAllowMergeIfPipelineSucceeds` | Boolean | Indicates if merge requests of the project can only be merged with successful jobs |
| `requestAccessEnabled` | Boolean | Indicates if users can request member access to the project |
| `onlyAllowMergeIfAllDiscussionsAreResolved` | Boolean | Indicates if merge requests of the project can only be merged when all the discussions are resolved |
| `printingMergeRequestLinkEnabled` | Boolean | 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 |
| `removeSourceBranchAfterMerge` | Boolean | Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project |
| `namespace` | Namespace | Namespace of the project |
| `group` | Group | Group of the project |
| `statistics` | ProjectStatistics | Statistics of the project |
| `repository` | Repository | Git repository of the project |
| `mergeRequest` | MergeRequest | A single merge request of the project |
| `issue` | ExtendedIssue | A single issue of the project |
### ProjectPermissions
......@@ -670,13 +670,13 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `commitCount` | Int! | |
| `storageSize` | Int! | |
| `repositorySize` | Int! | |
| `lfsObjectsSize` | Int! | |
| `buildArtifactsSize` | Int! | |
| `packagesSize` | Int! | |
| `wikiSize` | Int | |
| `commitCount` | Int! | Commit count of the project |
| `storageSize` | Int! | Storage size of the project |
| `repositorySize` | Int! | Repository size of the project |
| `lfsObjectsSize` | Int! | Large File Storage (LFS) object size of the project |
| `buildArtifactsSize` | Int! | Build artifacts size of the project |
| `packagesSize` | Int! | Packages size of the project |
| `wikiSize` | Int | Wiki size of the project |
### RemoveAwardEmojiPayload
......@@ -690,10 +690,10 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `rootRef` | String | |
| `empty` | Boolean! | |
| `exists` | Boolean! | |
| `tree` | Tree | |
| `rootRef` | String | Default branch of the repository |
| `empty` | Boolean! | Indicates repository has no visible content |
| `exists` | Boolean! | Indicates a corresponding Git repository exists on disk |
| `tree` | Tree | Tree of the repository |
### RootStorageStatistics
......@@ -722,8 +722,8 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `count` | Int! | |
| `completedCount` | Int! | |
| `count` | Int! | Number of total tasks |
| `completedCount` | Int! | Number of completed tasks |
### Todo
......@@ -785,7 +785,7 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `name` | String! | |
| `username` | String! | |
| `avatarUrl` | String! | |
| `webUrl` | String! | |
| `name` | String! | Human-readable name of the user |
| `username` | String! | Username of the user. Unique within this instance of GitLab |
| `avatarUrl` | String! | URL of the user's avatar |
| `webUrl` | String! | Web URL of the user |
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment