Commit 2cc2ad79 authored by Sean McGivern's avatar Sean McGivern

Merge branch 'bvl-api-feature_categories-6' into 'master'

Add feature categories to the remaining endpoints

See merge request gitlab-org/gitlab!46571
parents d50ec8bd b12b5ca7
...@@ -5,6 +5,8 @@ module API ...@@ -5,6 +5,8 @@ module API
class CodeReviewAnalytics < ::API::Base class CodeReviewAnalytics < ::API::Base
include PaginationParams include PaginationParams
feature_category :planning_analytics
helpers do helpers do
def project def project
@project ||= find_project!(params[:project_id]) @project ||= find_project!(params[:project_id])
......
...@@ -7,6 +7,8 @@ module API ...@@ -7,6 +7,8 @@ module API
'This feature is gated by the `:group_activity_analytics`'\ 'This feature is gated by the `:group_activity_analytics`'\
' feature flag, introduced in GitLab 12.9.' ' feature flag, introduced in GitLab 12.9.'
feature_category :planning_analytics
before do before do
authenticate! authenticate!
end end
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class AuditEvents < ::API::Base class AuditEvents < ::API::Base
include ::API::PaginationParams include ::API::PaginationParams
feature_category :audit_events
before do before do
authenticated_as_admin! authenticated_as_admin!
forbidden! unless ::License.feature_available?(:admin_audit_log) forbidden! unless ::License.feature_available?(:admin_audit_log)
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
module API module API
class Dependencies < ::API::Base class Dependencies < ::API::Base
feature_category :dependency_scanning
helpers do helpers do
def dependencies_by(params) def dependencies_by(params)
pipeline = ::Security::ReportFetchService.new(user_project, ::Ci::JobArtifact.dependency_list_reports).pipeline pipeline = ::Security::ReportFetchService.new(user_project, ::Ci::JobArtifact.dependency_list_reports).pipeline
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class DependencyProxy < ::API::Base class DependencyProxy < ::API::Base
helpers ::API::Helpers::PackagesHelpers helpers ::API::Helpers::PackagesHelpers
feature_category :dependency_proxy
helpers do helpers do
def obtain_new_purge_cache_lease def obtain_new_purge_cache_lease
Gitlab::ExclusiveLease Gitlab::ExclusiveLease
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class ElasticsearchIndexedNamespaces < ::API::Base class ElasticsearchIndexedNamespaces < ::API::Base
before { authenticated_as_admin! } before { authenticated_as_admin! }
feature_category :global_search
resource :elasticsearch_indexed_namespaces do resource :elasticsearch_indexed_namespaces do
desc 'Rollout namespaces to be indexed up to n%' do desc 'Rollout namespaces to be indexed up to n%' do
detail <<~END detail <<~END
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
module API module API
class EpicIssues < ::API::Base class EpicIssues < ::API::Base
feature_category :epics
before do before do
authenticate! authenticate!
authorize_epics_feature! authorize_epics_feature!
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class EpicLinks < ::API::Base class EpicLinks < ::API::Base
include ::Gitlab::Utils::StrongMemoize include ::Gitlab::Utils::StrongMemoize
feature_category :epics
before do before do
authenticate! authenticate!
end end
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class Epics < ::API::Base class Epics < ::API::Base
include PaginationParams include PaginationParams
feature_category :epics
before do before do
authenticate_non_get! authenticate_non_get!
authorize_epics_feature! authorize_epics_feature!
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class Experiments < ::API::Base class Experiments < ::API::Base
before { authorize_read_experiments! } before { authorize_read_experiments! }
feature_category :product_analytics
resource :experiments do resource :experiments do
desc 'Get a list of all experiments' do desc 'Get a list of all experiments' do
success EE::API::Entities::Experiment success EE::API::Entities::Experiment
......
...@@ -4,6 +4,7 @@ require 'base64' ...@@ -4,6 +4,7 @@ require 'base64'
module API module API
class Geo < ::API::Base class Geo < ::API::Base
feature_category :geo_replication
resource :geo do resource :geo do
helpers do helpers do
def sanitized_node_status_params def sanitized_node_status_params
......
...@@ -6,6 +6,8 @@ module API ...@@ -6,6 +6,8 @@ module API
include APIGuard include APIGuard
include ::Gitlab::Utils::StrongMemoize include ::Gitlab::Utils::StrongMemoize
feature_category :geo_replication
before do before do
authenticate_admin_or_geo_node! authenticate_admin_or_geo_node!
end end
......
...@@ -6,6 +6,8 @@ module API ...@@ -6,6 +6,8 @@ module API
include APIGuard include APIGuard
include ::Gitlab::Utils::StrongMemoize include ::Gitlab::Utils::StrongMemoize
feature_category :geo_replication
before do before do
authenticated_as_admin! authenticated_as_admin!
not_found!('Geo node not found') unless Gitlab::Geo.current_node not_found!('Geo node not found') unless Gitlab::Geo.current_node
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class GroupHooks < ::API::Base class GroupHooks < ::API::Base
include ::API::PaginationParams include ::API::PaginationParams
feature_category :integrations
before { authenticate! } before { authenticate! }
before { authorize! :admin_group, user_group } before { authorize! :admin_group, user_group }
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
module API module API
class GroupPushRule < ::API::Base class GroupPushRule < ::API::Base
feature_category :source_code_management
before { authenticate! } before { authenticate! }
before { check_group_push_rule_access! } before { check_group_push_rule_access! }
before { authorize_change_param(user_group, :commit_committer_check, :reject_unsigned_commits) } before { authorize_change_param(user_group, :commit_committer_check, :reject_unsigned_commits) }
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class Iterations < ::API::Base class Iterations < ::API::Base
include PaginationParams include PaginationParams
feature_category :issue_tracking
helpers do helpers do
params :list_params do params :list_params do
optional :state, type: String, values: %w[opened upcoming started closed all], default: 'all', optional :state, type: String, values: %w[opened upcoming started closed all], default: 'all',
......
...@@ -8,6 +8,8 @@ module API ...@@ -8,6 +8,8 @@ module API
# group. # group.
before { authenticated_with_ldap_admin_access! } before { authenticated_with_ldap_admin_access! }
feature_category :authentication_and_authorization
resource :ldap do resource :ldap do
helpers do helpers do
def get_group_list(provider, search) def get_group_list(provider, search)
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class LdapGroupLinks < ::API::Base class LdapGroupLinks < ::API::Base
before { authenticate! } before { authenticate! }
feature_category :authentication_and_authorization
params do params do
requires :id, type: String, desc: 'The ID of a group' requires :id, type: String, desc: 'The ID of a group'
end end
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class License < ::API::Base class License < ::API::Base
before { authenticated_as_admin! } before { authenticated_as_admin! }
feature_category :provision
resource :license do resource :license do
desc 'Get information on the currently active license' do desc 'Get information on the currently active license' do
success EE::API::Entities::GitlabLicenseWithActiveUsers success EE::API::Entities::GitlabLicenseWithActiveUsers
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class ManagedLicenses < ::API::Base class ManagedLicenses < ::API::Base
include PaginationParams include PaginationParams
feature_category :license_compliance
before { authenticate! unless route.settings[:skip_authentication] } before { authenticate! unless route.settings[:skip_authentication] }
helpers do helpers do
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class MergeRequestApprovalRules < ::API::Base class MergeRequestApprovalRules < ::API::Base
before { authenticate_non_get! } before { authenticate_non_get! }
feature_category :code_review
helpers do helpers do
def find_merge_request_approval_rule(merge_request, id) def find_merge_request_approval_rule(merge_request, id)
merge_request.approval_rules.find_by_id!(id) merge_request.approval_rules.find_by_id!(id)
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class MergeTrains < ::API::Base class MergeTrains < ::API::Base
include PaginationParams include PaginationParams
feature_category :continuous_integration
before do before do
authorize_read_merge_trains! authorize_read_merge_trains!
end end
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class ProjectAliases < ::API::Base class ProjectAliases < ::API::Base
include PaginationParams include PaginationParams
feature_category :source_code_management
before { check_feature_availability } before { check_feature_availability }
before { authenticated_as_admin! } before { authenticated_as_admin! }
......
...@@ -6,6 +6,8 @@ module API ...@@ -6,6 +6,8 @@ module API
helpers ::API::Helpers::ProjectApprovalRulesHelpers helpers ::API::Helpers::ProjectApprovalRulesHelpers
feature_category :code_review
params do params do
requires :id, type: String, desc: 'The ID of a project' requires :id, type: String, desc: 'The ID of a project'
end end
......
...@@ -6,6 +6,8 @@ module API ...@@ -6,6 +6,8 @@ module API
helpers ::API::Helpers::ProjectApprovalRulesHelpers helpers ::API::Helpers::ProjectApprovalRulesHelpers
feature_category :code_review
params do params do
requires :id, type: String, desc: 'The ID of a project' requires :id, type: String, desc: 'The ID of a project'
end end
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
module API module API
class ProjectApprovals < ::API::Base class ProjectApprovals < ::API::Base
feature_category :code_review
before { authenticate! } before { authenticate! }
before { authorize! :update_approvers, user_project } before { authorize! :update_approvers, user_project }
......
...@@ -4,6 +4,8 @@ require_dependency 'declarative_policy' ...@@ -4,6 +4,8 @@ require_dependency 'declarative_policy'
module API module API
class ProjectMirror < ::API::Base class ProjectMirror < ::API::Base
feature_category :continuous_integration
helpers do helpers do
def github_webhook_signature def github_webhook_signature
@github_webhook_signature ||= headers['X-Hub-Signature'] @github_webhook_signature ||= headers['X-Hub-Signature']
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
module API module API
class ProjectPushRule < ::API::Base class ProjectPushRule < ::API::Base
feature_category :source_code_management
before { authenticate! } before { authenticate! }
before { authorize_admin_project } before { authorize_admin_project }
before { check_project_feature_available!(:push_rules) } before { check_project_feature_available!(:push_rules) }
......
...@@ -8,6 +8,8 @@ module API ...@@ -8,6 +8,8 @@ module API
before { authorize_admin_project } before { authorize_admin_project }
feature_category :continuous_delivery
params do params do
requires :id, type: String, desc: 'The ID of a project' requires :id, type: String, desc: 'The ID of a project'
end end
......
...@@ -7,7 +7,7 @@ module API ...@@ -7,7 +7,7 @@ module API
before { authenticate! } before { authenticate! }
[Issue].each do |eventable_type| { Issue => :issue_tracking }.each do |eventable_type, feature_category|
parent_type = eventable_type.parent_class.to_s.underscore parent_type = eventable_type.parent_class.to_s.underscore
eventables_str = eventable_type.to_s.underscore.pluralize eventables_str = eventable_type.to_s.underscore.pluralize
...@@ -24,7 +24,7 @@ module API ...@@ -24,7 +24,7 @@ module API
use :pagination use :pagination
end end
get ":id/#{eventables_str}/:eventable_id/resource_iteration_events" do get ":id/#{eventables_str}/:eventable_id/resource_iteration_events", feature_category: feature_category do
eventable = find_noteable(eventable_type, params[:eventable_id]) eventable = find_noteable(eventable_type, params[:eventable_id])
events = eventable.resource_iteration_events.with_api_entity_associations events = eventable.resource_iteration_events.with_api_entity_associations
...@@ -39,7 +39,7 @@ module API ...@@ -39,7 +39,7 @@ module API
requires :event_id, type: String, desc: 'The ID of a resource iteration event' requires :event_id, type: String, desc: 'The ID of a resource iteration event'
requires :eventable_id, types: [Integer, String], desc: 'The ID of the eventable' requires :eventable_id, types: [Integer, String], desc: 'The ID of the eventable'
end end
get ":id/#{eventables_str}/:eventable_id/resource_iteration_events/:event_id" do get ":id/#{eventables_str}/:eventable_id/resource_iteration_events/:event_id", feature_category: feature_category do
eventable = find_noteable(eventable_type, params[:eventable_id]) eventable = find_noteable(eventable_type, params[:eventable_id])
event = eventable.resource_iteration_events.find(params[:event_id]) event = eventable.resource_iteration_events.find(params[:event_id])
......
...@@ -7,6 +7,8 @@ module API ...@@ -7,6 +7,8 @@ module API
before { authenticate! } before { authenticate! }
feature_category :issue_tracking
params do params do
requires :id, type: String, desc: "The ID of a project" requires :id, type: String, desc: "The ID of a project"
end end
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class Scim < ::API::Base class Scim < ::API::Base
include ::Gitlab::Utils::StrongMemoize include ::Gitlab::Utils::StrongMemoize
feature_category :authentication_and_authorization
prefix 'api/scim' prefix 'api/scim'
version 'v2' version 'v2'
content_type :json, 'application/scim+json' content_type :json, 'application/scim+json'
......
...@@ -6,6 +6,8 @@ module API ...@@ -6,6 +6,8 @@ module API
helpers ::API::Helpers::NotesHelpers helpers ::API::Helpers::NotesHelpers
helpers ::RendersNotes helpers ::RendersNotes
feature_category :code_review
params do params do
requires :id, type: String, desc: "The ID of a Project" requires :id, type: String, desc: "The ID of a Project"
end end
......
...@@ -5,6 +5,8 @@ module API ...@@ -5,6 +5,8 @@ module API
include ::API::Helpers::VulnerabilitiesHooks include ::API::Helpers::VulnerabilitiesHooks
include PaginationParams include PaginationParams
feature_category :vulnerability_management
helpers ::API::Helpers::VulnerabilitiesHelpers helpers ::API::Helpers::VulnerabilitiesHelpers
helpers do helpers do
......
...@@ -5,6 +5,8 @@ module API ...@@ -5,6 +5,8 @@ module API
include ::API::Helpers::VulnerabilitiesHooks include ::API::Helpers::VulnerabilitiesHooks
include ::Gitlab::Utils::StrongMemoize include ::Gitlab::Utils::StrongMemoize
feature_category :vulnerability_management
helpers do helpers do
def vulnerability_export def vulnerability_export
strong_memoize(:vulnerability_export) do strong_memoize(:vulnerability_export) do
......
...@@ -5,6 +5,8 @@ module API ...@@ -5,6 +5,8 @@ module API
include PaginationParams include PaginationParams
include ::Gitlab::Utils::StrongMemoize include ::Gitlab::Utils::StrongMemoize
feature_category :vulnerability_management
helpers do helpers do
def pipeline def pipeline
strong_memoize(:pipeline) do strong_memoize(:pipeline) do
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class VulnerabilityIssueLinks < ::API::Base class VulnerabilityIssueLinks < ::API::Base
include ::API::Helpers::VulnerabilitiesHooks include ::API::Helpers::VulnerabilitiesHooks
feature_category :vulnerability_management
helpers ::API::Helpers::VulnerabilitiesHelpers helpers ::API::Helpers::VulnerabilitiesHelpers
helpers do helpers do
......
...@@ -8,6 +8,8 @@ module EE ...@@ -8,6 +8,8 @@ module EE
prepend EE::API::BoardsResponses # rubocop: disable Cop/InjectEnterpriseEditionModule prepend EE::API::BoardsResponses # rubocop: disable Cop/InjectEnterpriseEditionModule
feature_category :boards
before do before do
authenticate! authenticate!
end end
......
...@@ -282,7 +282,7 @@ module API ...@@ -282,7 +282,7 @@ module API
end end
end end
route :any, '*path' do route :any, '*path', feature_category: :not_owned do
error!('404 Not Found', 404) error!('404 Not Found', 404)
end end
end end
......
...@@ -7,6 +7,8 @@ module API ...@@ -7,6 +7,8 @@ module API
before { authenticate! } before { authenticate! }
feature_category :container_registry
namespace 'registry' do namespace 'registry' do
params do params do
requires :id, type: String, desc: 'The ID of a project' requires :id, type: String, desc: 'The ID of a project'
......
...@@ -128,13 +128,13 @@ module API ...@@ -128,13 +128,13 @@ module API
# changes - changes as "oldrev newrev ref", see Gitlab::ChangesList # changes - changes as "oldrev newrev ref", see Gitlab::ChangesList
# check_ip - optional, only in EE version, may limit access to # check_ip - optional, only in EE version, may limit access to
# group resources based on its IP restrictions # group resources based on its IP restrictions
post "/allowed" do post "/allowed", feature_category: :source_code_management do
# It was moved to a separate method so that EE can alter its behaviour more # It was moved to a separate method so that EE can alter its behaviour more
# easily. # easily.
check_allowed(params) check_allowed(params)
end end
post "/lfs_authenticate" do post "/lfs_authenticate", feature_category: :source_code_management do
status 200 status 200
unless actor.key_or_user unless actor.key_or_user
...@@ -152,7 +152,7 @@ module API ...@@ -152,7 +152,7 @@ module API
# Get a ssh key using the fingerprint # Get a ssh key using the fingerprint
# #
# rubocop: disable CodeReuse/ActiveRecord # rubocop: disable CodeReuse/ActiveRecord
get '/authorized_keys' do get '/authorized_keys', feature_category: :source_code_management do
fingerprint = params.fetch(:fingerprint) do fingerprint = params.fetch(:fingerprint) do
Gitlab::InsecureKeyFingerprint.new(params.fetch(:key)).fingerprint Gitlab::InsecureKeyFingerprint.new(params.fetch(:key)).fingerprint
end end
...@@ -165,11 +165,11 @@ module API ...@@ -165,11 +165,11 @@ module API
# #
# Discover user by ssh key, user id or username # Discover user by ssh key, user id or username
# #
get '/discover' do get '/discover', feature_category: :authentication_and_authorization do
present actor.user, with: Entities::UserSafe present actor.user, with: Entities::UserSafe
end end
get '/check' do get '/check', feature_category: :not_owned do
{ {
api_version: API.version, api_version: API.version,
gitlab_version: Gitlab::VERSION, gitlab_version: Gitlab::VERSION,
...@@ -178,7 +178,7 @@ module API ...@@ -178,7 +178,7 @@ module API
} }
end end
post '/two_factor_recovery_codes' do post '/two_factor_recovery_codes', feature_category: :authentication_and_authorization do
status 200 status 200
actor.update_last_used_at! actor.update_last_used_at!
...@@ -207,7 +207,7 @@ module API ...@@ -207,7 +207,7 @@ module API
{ success: true, recovery_codes: codes } { success: true, recovery_codes: codes }
end end
post '/personal_access_token' do post '/personal_access_token', feature_category: :authentication_and_authorization do
status 200 status 200
actor.update_last_used_at! actor.update_last_used_at!
...@@ -257,7 +257,7 @@ module API ...@@ -257,7 +257,7 @@ module API
{ success: true, token: access_token.token, scopes: access_token.scopes, expires_at: access_token.expires_at } { success: true, token: access_token.token, scopes: access_token.scopes, expires_at: access_token.expires_at }
end end
post '/pre_receive' do post '/pre_receive', feature_category: :source_code_management do
status 200 status 200
reference_counter_increased = Gitlab::ReferenceCounter.new(params[:gl_repository]).increase reference_counter_increased = Gitlab::ReferenceCounter.new(params[:gl_repository]).increase
...@@ -265,7 +265,7 @@ module API ...@@ -265,7 +265,7 @@ module API
{ reference_counter_increased: reference_counter_increased } { reference_counter_increased: reference_counter_increased }
end end
post '/post_receive' do post '/post_receive', feature_category: :source_code_management do
status 200 status 200
response = PostReceiveService.new(actor.user, repository, project, params).execute response = PostReceiveService.new(actor.user, repository, project, params).execute
...@@ -273,7 +273,7 @@ module API ...@@ -273,7 +273,7 @@ module API
present response, with: Entities::InternalPostReceive::Response present response, with: Entities::InternalPostReceive::Response
end end
post '/two_factor_config' do post '/two_factor_config', feature_category: :authentication_and_authorization do
status 200 status 200
break { success: false } unless Feature.enabled?(:two_factor_for_cli) break { success: false } unless Feature.enabled?(:two_factor_for_cli)
...@@ -295,7 +295,7 @@ module API ...@@ -295,7 +295,7 @@ module API
end end
end end
post '/two_factor_otp_check' do post '/two_factor_otp_check', feature_category: :authentication_and_authorization do
status 200 status 200
break { success: false } unless Feature.enabled?(:two_factor_for_cli) break { success: false } unless Feature.enabled?(:two_factor_for_cli)
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
# Kubernetes Internal API # Kubernetes Internal API
module Internal module Internal
class Kubernetes < ::API::Base class Kubernetes < ::API::Base
feature_category :kubernetes_management
before do before do
check_feature_enabled check_feature_enabled
authenticate_gitlab_kas_request! authenticate_gitlab_kas_request!
......
...@@ -7,6 +7,8 @@ module API ...@@ -7,6 +7,8 @@ module API
before { authenticate_by_gitlab_shell_token! } before { authenticate_by_gitlab_shell_token! }
feature_category :source_code_management
helpers do helpers do
def find_lfs_object(lfs_oid) def find_lfs_object(lfs_oid)
LfsObject.find_by_oid(lfs_oid) LfsObject.find_by_oid(lfs_oid)
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
# Pages Internal API # Pages Internal API
module Internal module Internal
class Pages < ::API::Base class Pages < ::API::Base
feature_category :pages
before do before do
authenticate_gitlab_pages_request! authenticate_gitlab_pages_request!
end end
......
...@@ -4,6 +4,8 @@ module API ...@@ -4,6 +4,8 @@ module API
class PersonalAccessTokens < ::API::Base class PersonalAccessTokens < ::API::Base
include ::API::PaginationParams include ::API::PaginationParams
feature_category :authentication_and_authorization
desc 'Get all Personal Access Tokens' do desc 'Get all Personal Access Tokens' do
detail 'This feature was added in GitLab 13.3' detail 'This feature was added in GitLab 13.3'
success Entities::PersonalAccessToken success Entities::PersonalAccessToken
......
...@@ -22,6 +22,8 @@ module API ...@@ -22,6 +22,8 @@ module API
include PaginationParams include PaginationParams
feature_category :integrations
before do before do
authorize_jira_user_agent!(request) authorize_jira_user_agent!(request)
authenticate! authenticate!
......
...@@ -18,46 +18,6 @@ RSpec.describe 'Every API endpoint' do ...@@ -18,46 +18,6 @@ RSpec.describe 'Every API endpoint' do
api_endpoints.map do |(klass, path)| api_endpoints.map do |(klass, path)|
next if klass.try(:feature_category_for_action, path) next if klass.try(:feature_category_for_action, path)
# We'll add the rest in https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/463
completed_classes = [
::API::Users, ::API::Issues, ::API::AccessRequests, ::API::Admin::Ci::Variables,
::API::Admin::InstanceClusters, ::API::Admin::Sidekiq, ::API::Appearance,
::API::Applications, ::API::Avatar, ::API::AwardEmoji, API::Badges,
::API::Boards, ::API::Branches, ::API::BroadcastMessages, ::API::Ci::Pipelines,
::API::Ci::PipelineSchedules, ::API::Ci::Runners, ::API::Ci::Runner,
::API::Commits, ::API::CommitStatuses, ::API::ContainerRegistryEvent,
::API::DeployKeys, ::API::DeployTokens, ::API::Deployments, ::API::Environments,
::API::ErrorTracking, ::API::Events, ::API::FeatureFlags, ::API::FeatureFlagScopes,
::API::FeatureFlagsUserLists, ::API::Features, ::API::Files, ::API::FreezePeriods,
::API::GroupBoards, ::API::GroupClusters, ::API::GroupExport, ::API::GroupImport,
::API::GroupLabels, ::API::GroupMilestones, ::API::Groups,
::API::GroupContainerRepositories, ::API::GroupVariables,
::API::ImportBitbucketServer, ::API::ImportGithub, ::API::IssueLinks,
::API::Issues, ::API::JobArtifacts, ::API::Jobs, ::API::Keys, ::API::Labels,
::API::Lint, ::API::Markdown, ::API::Members, ::API::MergeRequestDiffs,
::API::MergeRequests, ::API::MergeRequestApprovals, ::API::Metrics::Dashboard::Annotations,
::API::Metrics::UserStarredDashboards, ::API::Namespaces, ::API::Notes,
::API::Discussions, ::API::ResourceLabelEvents, ::API::ResourceMilestoneEvents,
::API::ResourceStateEvents, ::API::NotificationSettings, ::API::ProjectPackages,
::API::GroupPackages, ::API::PackageFiles, ::API::NugetPackages, ::API::PypiPackages,
::API::ComposerPackages, ::API::ConanProjectPackages, ::API::ConanInstancePackages,
::API::DebianGroupPackages, ::API::DebianProjectPackages, ::API::MavenPackages,
::API::NpmPackages, ::API::GenericPackages, ::API::GoProxy, ::API::Pages,
::API::PagesDomains, ::API::ProjectClusters, ::API::ProjectContainerRepositories,
::API::ProjectEvents, ::API::ProjectExport, ::API::ProjectImport, ::API::ProjectHooks,
::API::ProjectMilestones, ::API::ProjectRepositoryStorageMoves, ::API::Projects,
::API::ProjectSnapshots, ::API::ProjectSnippets, ::API::ProjectStatistics,
::API::ProjectTemplates, ::API::Terraform::State, ::API::Terraform::StateVersion,
::API::ProtectedBranches, ::API::ProtectedTags, ::API::Releases, ::API::Release::Links,
::API::RemoteMirrors, ::API::Repositories, ::API::Search, ::API::Services,
::API::Settings, ::API::SidekiqMetrics, ::API::Snippets, ::API::Statistics,
::API::Submodules, ::API::Subscriptions, ::API::Suggestions, ::API::SystemHooks,
::API::Tags, ::API::Templates, ::API::Todos, ::API::Triggers, ::API::Unleash,
::API::UsageData, ::API::UserCounts, ::API::Variables, ::API::Version,
::API::Wikis
]
next unless completed_classes.include?(klass)
"#{klass}##{path}" "#{klass}##{path}"
end.compact.uniq end.compact.uniq
end end
......
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