summaryrefslogtreecommitdiff
path: root/lib/api/admin
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/admin')
-rw-r--r--lib/api/admin/ci/variables.rb49
-rw-r--r--lib/api/admin/instance_clusters.rb52
-rw-r--r--lib/api/admin/plan_limits.rb28
3 files changed, 99 insertions, 30 deletions
diff --git a/lib/api/admin/ci/variables.rb b/lib/api/admin/ci/variables.rb
index 0462878c90c..bc351e27f99 100644
--- a/lib/api/admin/ci/variables.rb
+++ b/lib/api/admin/ci/variables.rb
@@ -13,8 +13,9 @@ module API
namespace 'admin' do
namespace 'ci' do
namespace 'variables' do
- desc 'Get instance-level variables' do
+ desc 'List all instance-level variables' do
success Entities::Ci::Variable
+ tags %w[ci_variables]
end
params do
use :pagination
@@ -25,11 +26,13 @@ module API
present paginate(variables), with: Entities::Ci::Variable
end
- desc 'Get a specific variable from a group' do
+ desc 'Get the details of a specific instance-level variable' do
success Entities::Ci::Variable
+ failure [{ code: 404, message: 'Instance Variable Not Found' }]
+ tags %w[ci_variables]
end
params do
- requires :key, type: String, desc: 'The key of the variable'
+ requires :key, type: String, desc: 'The key of a variable'
end
get ':key' do
key = params[:key]
@@ -42,28 +45,35 @@ module API
desc 'Create a new instance-level variable' do
success Entities::Ci::Variable
+ failure [{ code: 400, message: '400 Bad Request' }]
+ tags %w[ci_variables]
end
+ route_setting :log_safety, { safe: %w[key], unsafe: %w[value] }
params do
requires :key,
type: String,
- desc: 'The key of the variable'
+ desc: 'The key of the variable. Max 255 characters'
requires :value,
type: String,
- desc: 'The value of the variable'
+ desc: 'The value of a variable'
optional :protected,
- type: String,
+ type: Boolean,
desc: 'Whether the variable is protected'
optional :masked,
- type: String,
+ type: Boolean,
desc: 'Whether the variable is masked'
+ optional :raw,
+ type: Boolean,
+ desc: 'Whether the variable will be expanded'
+
optional :variable_type,
type: String,
values: ::Ci::InstanceVariable.variable_types.keys,
- desc: 'The type of variable, must be one of env_var or file. Defaults to env_var'
+ desc: 'The type of a variable. Available types are: env_var (default) and file'
end
post '/' do
variable_params = declared_params(include_missing: false)
@@ -77,30 +87,37 @@ module API
end
end
- desc 'Update an existing instance-variable' do
+ desc 'Update an instance-level variable' do
success Entities::Ci::Variable
+ failure [{ code: 404, message: 'Instance Variable Not Found' }]
+ tags %w[ci_variables]
end
+ route_setting :log_safety, { safe: %w[key], unsafe: %w[value] }
params do
optional :key,
type: String,
- desc: 'The key of the variable'
+ desc: 'The key of a variable'
optional :value,
type: String,
- desc: 'The value of the variable'
+ desc: 'The value of a variable'
optional :protected,
- type: String,
+ type: Boolean,
desc: 'Whether the variable is protected'
optional :masked,
- type: String,
+ type: Boolean,
desc: 'Whether the variable is masked'
+ optional :raw,
+ type: Boolean,
+ desc: 'Whether the variable will be expanded'
+
optional :variable_type,
type: String,
values: ::Ci::InstanceVariable.variable_types.keys,
- desc: 'The type of variable, must be one of env_var or file'
+ desc: 'The type of a variable. Available types are: env_var (default) and file'
end
put ':key' do
variable = ::Ci::InstanceVariable.find_by_key(params[:key])
@@ -118,9 +135,11 @@ module API
desc 'Delete an existing instance-level variable' do
success Entities::Ci::Variable
+ failure [{ code: 404, message: 'Instance Variable Not Found' }]
+ tags %w[ci_variables]
end
params do
- requires :key, type: String, desc: 'The key of the variable'
+ requires :key, type: String, desc: 'The key of a variable'
end
delete ':key' do
variable = ::Ci::InstanceVariable.find_by_key(params[:key])
diff --git a/lib/api/admin/instance_clusters.rb b/lib/api/admin/instance_clusters.rb
index 7163225777a..f848103d9a0 100644
--- a/lib/api/admin/instance_clusters.rb
+++ b/lib/api/admin/instance_clusters.rb
@@ -14,16 +14,28 @@ module API
end
namespace 'admin' do
- desc "Get list of all instance clusters" do
- detail "This feature was introduced in GitLab 13.2."
+ desc 'List instance clusters' do
+ detail 'This feature was introduced in GitLab 13.2. Returns a list of instance clusters.'
+ success Entities::Cluster
+ failure [
+ { code: 403, message: 'Forbidden' }
+ ]
+ is_array true
+ tags %w[clusters]
end
get '/clusters' do
authorize! :read_cluster, clusterable_instance
present paginate(clusters_for_current_user), with: Entities::Cluster
end
- desc "Get a single instance cluster" do
- detail "This feature was introduced in GitLab 13.2."
+ desc 'Get a single instance cluster' do
+ detail 'This feature was introduced in GitLab 13.2. Returns a single instance cluster.'
+ success Entities::Cluster
+ failure [
+ { code: 403, message: 'Forbidden' },
+ { code: 404, message: 'Not found' }
+ ]
+ tags %w[clusters]
end
params do
requires :cluster_id, type: Integer, desc: "The cluster ID"
@@ -34,8 +46,15 @@ module API
present cluster, with: Entities::Cluster
end
- desc "Add an instance cluster" do
- detail "This feature was introduced in GitLab 13.2."
+ desc 'Add existing instance cluster' do
+ detail 'This feature was introduced in GitLab 13.2. Adds an existing Kubernetes instance cluster.'
+ success Entities::Cluster
+ failure [
+ { code: 400, message: 'Validation error' },
+ { code: 403, message: 'Forbidden' },
+ { code: 404, message: 'Not found' }
+ ]
+ tags %w[clusters]
end
params do
requires :name, type: String, desc: 'Cluster name'
@@ -67,8 +86,15 @@ module API
end
end
- desc "Update an instance cluster" do
- detail "This feature was introduced in GitLab 13.2."
+ desc 'Edit instance cluster' do
+ detail 'This feature was introduced in GitLab 13.2. Updates an existing instance cluster.'
+ success Entities::Cluster
+ failure [
+ { code: 400, message: 'Validation error' },
+ { code: 403, message: 'Forbidden' },
+ { code: 404, message: 'Not found' }
+ ]
+ tags %w[clusters]
end
params do
requires :cluster_id, type: Integer, desc: 'The cluster ID'
@@ -98,8 +124,14 @@ module API
end
end
- desc "Remove a cluster" do
- detail "This feature was introduced in GitLab 13.2."
+ desc 'Delete instance cluster' do
+ detail 'This feature was introduced in GitLab 13.2. Deletes an existing instance cluster. Does not remove existing resources within the connected Kubernetes cluster.'
+ success Entities::Cluster
+ failure [
+ { code: 403, message: 'Forbidden' },
+ { code: 404, message: 'Not found' }
+ ]
+ tags %w[clusters]
end
params do
requires :cluster_id, type: Integer, desc: "The cluster ID"
diff --git a/lib/api/admin/plan_limits.rb b/lib/api/admin/plan_limits.rb
index 7ce70d85d46..49b41b44a18 100644
--- a/lib/api/admin/plan_limits.rb
+++ b/lib/api/admin/plan_limits.rb
@@ -5,6 +5,8 @@ module API
class PlanLimits < ::API::Base
before { authenticated_as_admin! }
+ PLAN_LIMITS_TAGS = %w[plan_limits].freeze
+
feature_category :not_owned # rubocop:todo Gitlab/AvoidFeatureCategoryNotOwned
helpers do
@@ -17,10 +19,17 @@ module API
end
desc 'Get current plan limits' do
+ detail 'List the current limits of a plan on the GitLab instance.'
success Entities::PlanLimit
+ failure [
+ { code: 401, message: 'Unauthorized' },
+ { code: 403, message: 'Forbidden' }
+ ]
+ tags PLAN_LIMITS_TAGS
end
params do
- optional :plan_name, type: String, values: Plan.all_plans, default: Plan::DEFAULT, desc: 'Name of the plan'
+ optional :plan_name, type: String, values: Plan.all_plans, default: Plan::DEFAULT,
+ desc: 'Name of the plan to get the limits from. Default: default.'
end
get "application/plan_limits" do
params = declared_params(include_missing: false)
@@ -29,16 +38,24 @@ module API
present plan.actual_limits, with: Entities::PlanLimit
end
- desc 'Modify plan limits' do
+ desc 'Change plan limits' do
+ detail 'Modify the limits of a plan on the GitLab instance.'
success Entities::PlanLimit
+ failure [
+ { code: 400, message: 'Bad request' },
+ { code: 401, message: 'Unauthorized' },
+ { code: 403, message: 'Forbidden' }
+ ]
+ tags PLAN_LIMITS_TAGS
end
params do
- requires :plan_name, type: String, values: Plan.all_plans, desc: 'Name of the plan'
+ requires :plan_name, type: String, values: Plan.all_plans, desc: 'Name of the plan to update'
optional :ci_pipeline_size, type: Integer, desc: 'Maximum number of jobs in a single pipeline'
optional :ci_active_jobs, type: Integer, desc: 'Total number of jobs in currently active pipelines'
optional :ci_active_pipelines, type: Integer, desc: 'Maximum number of active pipelines per project'
- optional :ci_project_subscriptions, type: Integer, desc: 'Maximum number of pipeline subscriptions to and from a project'
+ optional :ci_project_subscriptions, type: Integer,
+ desc: 'Maximum number of pipeline subscriptions to and from a project'
optional :ci_pipeline_schedules, type: Integer, desc: 'Maximum number of pipeline schedules'
optional :ci_needs_size_limit, type: Integer, desc: 'Maximum number of DAG dependencies that a job can have'
optional :ci_registered_group_runners, type: Integer, desc: 'Maximum number of runners registered per group'
@@ -50,7 +67,8 @@ module API
optional :npm_max_file_size, type: Integer, desc: 'Maximum NPM package file size in bytes'
optional :nuget_max_file_size, type: Integer, desc: 'Maximum NuGet package file size in bytes'
optional :pypi_max_file_size, type: Integer, desc: 'Maximum PyPI package file size in bytes'
- optional :terraform_module_max_file_size, type: Integer, desc: 'Maximum Terraform Module package file size in bytes'
+ optional :terraform_module_max_file_size, type: Integer,
+ desc: 'Maximum Terraform Module package file size in bytes'
optional :storage_size_limit, type: Integer, desc: 'Maximum storage size for the root namespace in megabytes'
end
put "application/plan_limits" do