Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/entities')
-rw-r--r--lib/api/entities/appearance.rb1
-rw-r--r--lib/api/entities/basic_success.rb12
-rw-r--r--lib/api/entities/batched_background_migration.rb12
-rw-r--r--lib/api/entities/ci/job_request/hook.rb13
-rw-r--r--lib/api/entities/ci/job_request/response.rb3
-rw-r--r--lib/api/entities/ci/runner_details.rb4
-rw-r--r--lib/api/entities/ci/secure_file.rb15
-rw-r--r--lib/api/entities/commit_signature.rb2
-rw-r--r--lib/api/entities/conan_package/conan_package_manifest.rb2
-rw-r--r--lib/api/entities/conan_package/conan_package_snapshot.rb6
-rw-r--r--lib/api/entities/conan_package/conan_recipe_manifest.rb2
-rw-r--r--lib/api/entities/conan_package/conan_recipe_snapshot.rb6
-rw-r--r--lib/api/entities/conan_package/conan_upload_urls.rb2
-rw-r--r--lib/api/entities/container_registry.rb23
-rw-r--r--lib/api/entities/event.rb16
-rw-r--r--lib/api/entities/issuable_references.rb6
-rw-r--r--lib/api/entities/issuable_time_stats.rb8
-rw-r--r--lib/api/entities/metric_image.rb8
-rw-r--r--lib/api/entities/milestone.rb2
-rw-r--r--lib/api/entities/ml/mlflow/experiment.rb1
-rw-r--r--lib/api/entities/ml/mlflow/key_value.rb (renamed from lib/api/entities/ml/mlflow/run_param.rb)2
-rw-r--r--lib/api/entities/ml/mlflow/run.rb3
-rw-r--r--lib/api/entities/namespace.rb2
-rw-r--r--lib/api/entities/namespace_basic.rb10
-rw-r--r--lib/api/entities/namespace_existence.rb3
-rw-r--r--lib/api/entities/npm_package.rb16
-rw-r--r--lib/api/entities/npm_package_tag.rb2
-rw-r--r--lib/api/entities/nuget/dependency.rb8
-rw-r--r--lib/api/entities/nuget/dependency_group.rb10
-rw-r--r--lib/api/entities/nuget/metadatum.rb6
-rw-r--r--lib/api/entities/nuget/package_metadata.rb7
-rw-r--r--lib/api/entities/nuget/package_metadata_catalog_entry.rb20
-rw-r--r--lib/api/entities/nuget/packages_metadata.rb5
-rw-r--r--lib/api/entities/nuget/packages_metadata_item.rb11
-rw-r--r--lib/api/entities/nuget/packages_versions.rb2
-rw-r--r--lib/api/entities/nuget/search_result.rb21
-rw-r--r--lib/api/entities/nuget/search_result_version.rb6
-rw-r--r--lib/api/entities/nuget/search_results.rb5
-rw-r--r--lib/api/entities/nuget/service_index.rb4
-rw-r--r--lib/api/entities/package.rb2
-rw-r--r--lib/api/entities/packages/debian/distribution.rb21
-rw-r--r--lib/api/entities/plan_limit.rb1
-rw-r--r--lib/api/entities/project.rb4
-rw-r--r--lib/api/entities/project_integration.rb4
-rw-r--r--lib/api/entities/push_event_payload.rb10
-rw-r--r--lib/api/entities/ssh_key.rb1
-rw-r--r--lib/api/entities/ssh_signature.rb10
-rw-r--r--lib/api/entities/tag_signature.rb13
-rw-r--r--lib/api/entities/todo.rb1
49 files changed, 235 insertions, 119 deletions
diff --git a/lib/api/entities/appearance.rb b/lib/api/entities/appearance.rb
index a09faf55f48..94a39568393 100644
--- a/lib/api/entities/appearance.rb
+++ b/lib/api/entities/appearance.rb
@@ -4,6 +4,7 @@ module API
module Entities
class Appearance < Grape::Entity
expose :title
+ expose :short_title
expose :description
expose :logo do |appearance, options|
diff --git a/lib/api/entities/basic_success.rb b/lib/api/entities/basic_success.rb
new file mode 100644
index 00000000000..37388f56221
--- /dev/null
+++ b/lib/api/entities/basic_success.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ # Simple representation for endpoints that returns a trivial success response.
+ class BasicSuccess < Grape::Entity
+ expose :success, documentation: { type: 'boolean' } do
+ true
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/batched_background_migration.rb b/lib/api/entities/batched_background_migration.rb
index eba17ff98f4..08e4681e0aa 100644
--- a/lib/api/entities/batched_background_migration.rb
+++ b/lib/api/entities/batched_background_migration.rb
@@ -3,12 +3,12 @@
module API
module Entities
class BatchedBackgroundMigration < Grape::Entity
- expose :id
- expose :job_class_name
- expose :table_name
- expose :status, &:status_name
- expose :progress
- expose :created_at
+ expose :id, documentation: { type: :string, example: "1234" }
+ expose :job_class_name, documentation: { type: :string, example: "CopyColumnUsingBackgroundMigrationJob" }
+ expose :table_name, documentation: { type: :string, example: "events" }
+ expose :status_name, as: :status, override: true, documentation: { type: :string, example: "active" }
+ expose :progress, documentation: { type: :float, example: 50 }
+ expose :created_at, documentation: { type: :dateTime, example: "2022-11-28T16:26:39+02:00" }
end
end
end
diff --git a/lib/api/entities/ci/job_request/hook.rb b/lib/api/entities/ci/job_request/hook.rb
new file mode 100644
index 00000000000..2d155bb1c45
--- /dev/null
+++ b/lib/api/entities/ci/job_request/hook.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module Ci
+ module JobRequest
+ class Hook < Grape::Entity
+ expose :name, :script
+ end
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/ci/job_request/response.rb b/lib/api/entities/ci/job_request/response.rb
index 9de415ebacb..cfdbeed79b6 100644
--- a/lib/api/entities/ci/job_request/response.rb
+++ b/lib/api/entities/ci/job_request/response.rb
@@ -23,6 +23,9 @@ module API
expose :runner_variables, as: :variables
expose :steps, using: Entities::Ci::JobRequest::Step
+ expose :runtime_hooks, as: :hooks,
+ using: Entities::Ci::JobRequest::Hook,
+ if: ->(job) { ::Feature.enabled?(:ci_hooks_pre_get_sources_script, job.project) }
expose :image, using: Entities::Ci::JobRequest::Image
expose :services, using: Entities::Ci::JobRequest::Service
expose :artifacts, using: Entities::Ci::JobRequest::Artifacts
diff --git a/lib/api/entities/ci/runner_details.rb b/lib/api/entities/ci/runner_details.rb
index 9b1decca274..8aa134dc669 100644
--- a/lib/api/entities/ci/runner_details.rb
+++ b/lib/api/entities/ci/runner_details.rb
@@ -14,7 +14,7 @@ module API
# rubocop: disable CodeReuse/ActiveRecord
expose :projects, with: Entities::BasicProjectDetails do |runner, options|
- if options[:current_user].admin? # rubocop: disable Cop/UserAdmin
+ if options[:current_user].can_read_all_resources?
runner.projects
else
options[:current_user].authorized_projects.where(id: runner.runner_projects.pluck(:project_id))
@@ -23,7 +23,7 @@ module API
# rubocop: enable CodeReuse/ActiveRecord
# rubocop: disable CodeReuse/ActiveRecord
expose :groups, with: Entities::BasicGroupDetails do |runner, options|
- if options[:current_user].admin? # rubocop: disable Cop/UserAdmin
+ if options[:current_user].can_read_all_resources?
runner.groups
else
options[:current_user].authorized_groups.where(id: runner.runner_namespaces.pluck(:namespace_id))
diff --git a/lib/api/entities/ci/secure_file.rb b/lib/api/entities/ci/secure_file.rb
index d957e4488fd..a234ada6f82 100644
--- a/lib/api/entities/ci/secure_file.rb
+++ b/lib/api/entities/ci/secure_file.rb
@@ -4,13 +4,14 @@ module API
module Entities
module Ci
class SecureFile < Grape::Entity
- expose :id
- expose :name
- expose :checksum
- expose :checksum_algorithm
- expose :created_at
- expose :expires_at
- expose :metadata
+ expose :id, documentation: { type: 'integer', example: 123 }
+ expose :name, documentation: { type: 'string', example: 'upload-keystore.jks' }
+ expose :checksum,
+documentation: { type: 'string', example: '16630b189ab34b2e3504f4758e1054d2e478deda510b2b08cc0ef38d12e80aac' }
+ expose :checksum_algorithm, documentation: { type: 'string', example: 'sha256' }
+ expose :created_at, documentation: { type: 'dateTime', example: '2022-02-22T22:22:22.222Z' }
+ expose :expires_at, documentation: { type: 'dateTime', example: '2022-09-21T14:56:00.000Z' }
+ expose :metadata, documentation: { type: 'Hash', example: { "id" => "75949910542696343243264405377658443914" } }
end
end
end
diff --git a/lib/api/entities/commit_signature.rb b/lib/api/entities/commit_signature.rb
index 9430dd5e2a2..9c30c3c59ea 100644
--- a/lib/api/entities/commit_signature.rb
+++ b/lib/api/entities/commit_signature.rb
@@ -10,6 +10,8 @@ module API
::API::Entities::GpgCommitSignature.represent commit_signature(commit), options
elsif commit.signature.is_a?(::CommitSignatures::X509CommitSignature)
::API::Entities::X509Signature.represent commit.signature, options
+ elsif commit.signature.is_a?(::CommitSignatures::SshSignature)
+ ::API::Entities::SshSignature.represent(commit.signature, options)
end
end
diff --git a/lib/api/entities/conan_package/conan_package_manifest.rb b/lib/api/entities/conan_package/conan_package_manifest.rb
index e6acfe1912f..70ab498c56a 100644
--- a/lib/api/entities/conan_package/conan_package_manifest.rb
+++ b/lib/api/entities/conan_package/conan_package_manifest.rb
@@ -4,7 +4,7 @@ module API
module Entities
module ConanPackage
class ConanPackageManifest < Grape::Entity
- expose :package_urls, merge: true
+ expose :package_urls, merge: true, documentation: { type: 'object', example: '{ "conan_package.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conan_package.tgz"' }
end
end
end
diff --git a/lib/api/entities/conan_package/conan_package_snapshot.rb b/lib/api/entities/conan_package/conan_package_snapshot.rb
index d7fdda09b5a..5cf623c53df 100644
--- a/lib/api/entities/conan_package/conan_package_snapshot.rb
+++ b/lib/api/entities/conan_package/conan_package_snapshot.rb
@@ -4,7 +4,11 @@ module API
module Entities
module ConanPackage
class ConanPackageSnapshot < Grape::Entity
- expose :package_snapshot, merge: true
+ expose :package_snapshot, merge: true,
+ documentation: {
+ type: 'object',
+ example: '{ "conan_package.tgz": "749b29bdf72587081ca03ec033ee59dc" }'
+ }
end
end
end
diff --git a/lib/api/entities/conan_package/conan_recipe_manifest.rb b/lib/api/entities/conan_package/conan_recipe_manifest.rb
index ecaa142cef9..0b29f0c5058 100644
--- a/lib/api/entities/conan_package/conan_recipe_manifest.rb
+++ b/lib/api/entities/conan_package/conan_recipe_manifest.rb
@@ -4,7 +4,7 @@ module API
module Entities
module ConanPackage
class ConanRecipeManifest < Grape::Entity
- expose :recipe_urls, merge: true
+ expose :recipe_urls, merge: true, documentation: { type: 'object', example: '{ "conan_sources.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conan_sources.tgz" }' }
end
end
end
diff --git a/lib/api/entities/conan_package/conan_recipe_snapshot.rb b/lib/api/entities/conan_package/conan_recipe_snapshot.rb
index 09a60d23727..f9806e90816 100644
--- a/lib/api/entities/conan_package/conan_recipe_snapshot.rb
+++ b/lib/api/entities/conan_package/conan_recipe_snapshot.rb
@@ -4,7 +4,11 @@ module API
module Entities
module ConanPackage
class ConanRecipeSnapshot < Grape::Entity
- expose :recipe_snapshot, merge: true
+ expose :recipe_snapshot, merge: true,
+ documentation: {
+ type: 'object',
+ example: '{ "conan_sources.tgz": "eadf19b33f4c3c7e113faabf26e76277" }'
+ }
end
end
end
diff --git a/lib/api/entities/conan_package/conan_upload_urls.rb b/lib/api/entities/conan_package/conan_upload_urls.rb
index c14963c87f5..fd5ea80068c 100644
--- a/lib/api/entities/conan_package/conan_upload_urls.rb
+++ b/lib/api/entities/conan_package/conan_upload_urls.rb
@@ -4,7 +4,7 @@ module API
module Entities
module ConanPackage
class ConanUploadUrls < Grape::Entity
- expose :upload_urls, merge: true
+ expose :upload_urls, merge: true, documentation: { type: 'object', example: '{ "conan_package.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/package/103f6067a947f366ef91fc1b7da351c588d1827f/0/conan_package.tgz" }' }
end
end
end
diff --git a/lib/api/entities/container_registry.rb b/lib/api/entities/container_registry.rb
index d12c8142e69..cadd45cb0eb 100644
--- a/lib/api/entities/container_registry.rb
+++ b/lib/api/entities/container_registry.rb
@@ -4,9 +4,9 @@ module API
module Entities
module ContainerRegistry
class Tag < Grape::Entity
- expose :name
- expose :path
- expose :location
+ expose :name, documentation: { type: 'string', example: 'latest' }
+ expose :path, documentation: { type: 'string', example: 'namespace1/project1/test_image_1:latest' }
+ expose :location, documentation: { type: 'string', example: 'registry.dev/namespace1/project1/test_image_1:latest' }
end
class Repository < Grape::Entity
@@ -19,10 +19,11 @@ module API
expose :location, documentation: { type: 'string', example: 'gitlab.example.com/group/project/releases' }
expose :created_at, documentation: { type: 'dateTime', example: '2019-01-10T13:39:08.229Z' }
expose :expiration_policy_started_at, as: :cleanup_policy_started_at, documentation: { type: 'dateTime', example: '2020-08-17T03:12:35.489Z' }
- expose :tags_count, if: -> (_, options) { options[:tags_count] }
+ expose :tags_count, if: -> (_, options) { options[:tags_count] }, documentation: { type: 'integer', example: 3 }
expose :tags, using: Tag, if: -> (_, options) { options[:tags] }
- expose :delete_api_path, if: ->(object, options) { Ability.allowed?(options[:user], :admin_container_image, object) }
- expose :size, if: -> (_, options) { options[:size] }
+ expose :delete_api_path, if: ->(object, options) { Ability.allowed?(options[:user], :admin_container_image, object) },
+ documentation: { type: 'string', example: 'delete/api/path' }
+ expose :size, if: -> (_, options) { options[:size] }, documentation: { type: 'integer', example: 12345 }
private
@@ -32,11 +33,11 @@ module API
end
class TagDetails < Tag
- expose :revision
- expose :short_revision
- expose :digest
- expose :created_at
- expose :total_size
+ expose :revision, documentation: { type: 'string', example: 'tagrevision' }
+ expose :short_revision, documentation: { type: 'string', example: 'shortrevison' }
+ expose :digest, documentation: { type: 'string', example: 'shadigest' }
+ expose :created_at, documentation: { type: 'dateTime', example: '2022-01-10T13:39:08.229Z' }
+ expose :total_size, documentation: { type: 'integer', example: 3 }
end
end
end
diff --git a/lib/api/entities/event.rb b/lib/api/entities/event.rb
index f750d728e03..e81e89a8393 100644
--- a/lib/api/entities/event.rb
+++ b/lib/api/entities/event.rb
@@ -3,11 +3,15 @@
module API
module Entities
class Event < Grape::Entity
- expose :id
- expose :project_id, :action_name
- expose :target_id, :target_iid, :target_type, :author_id
- expose :target_title
- expose :created_at
+ expose :id, documentation: { type: 'integer', example: 1 }
+ expose :project_id, documentation: { type: 'integer', example: 2 }
+ expose :action_name, documentation: { type: 'string', example: 'closed' }
+ expose :target_id, documentation: { type: 'integer', example: 160 }
+ expose :target_iid, documentation: { type: 'integer', example: 157 }
+ expose :target_type, documentation: { type: 'string', example: 'Issue' }
+ expose :author_id, documentation: { type: 'integer', example: 25 }
+ expose :target_title, documentation: { type: 'string', example: 'Public project search field' }
+ expose :created_at, documentation: { type: 'string', example: '2017-02-09T10:43:19.667Z' }
expose :note, using: Entities::Note, if: ->(event, options) { event.note? }
expose :author, using: Entities::UserBasic, if: ->(event, options) { event.author }
expose :wiki_page, using: Entities::WikiPageBasic, if: ->(event, _options) { event.wiki_page? }
@@ -17,7 +21,7 @@ module API
using: Entities::PushEventPayload,
if: -> (event, _) { event.push_action? }
- expose :author_username do |event, options|
+ expose :author_username, documentation: { type: 'string', example: 'root' } do |event, options|
event.author&.username
end
end
diff --git a/lib/api/entities/issuable_references.rb b/lib/api/entities/issuable_references.rb
index 1bf078847cf..7b966b85800 100644
--- a/lib/api/entities/issuable_references.rb
+++ b/lib/api/entities/issuable_references.rb
@@ -3,15 +3,15 @@
module API
module Entities
class IssuableReferences < Grape::Entity
- expose :short do |issuable|
+ expose :short, documentation: { type: "string", example: "&6" } do |issuable|
issuable.to_reference
end
- expose :relative do |issuable, options|
+ expose :relative, documentation: { type: "string", example: "&6" } do |issuable, options|
issuable.to_reference(options[:group] || options[:project])
end
- expose :full do |issuable|
+ expose :full, documentation: { type: "string", example: "test&6" } do |issuable|
issuable.to_reference(full: true)
end
end
diff --git a/lib/api/entities/issuable_time_stats.rb b/lib/api/entities/issuable_time_stats.rb
index f93b4651b1f..717d2282441 100644
--- a/lib/api/entities/issuable_time_stats.rb
+++ b/lib/api/entities/issuable_time_stats.rb
@@ -7,12 +7,12 @@ module API
Gitlab::TimeTrackingFormatter.output(time_spent)
end
- expose :time_estimate
- expose :total_time_spent
- expose :human_time_estimate
+ expose :time_estimate, documentation: { type: 'integer', example: 12600 }
+ expose :total_time_spent, documentation: { type: 'integer', example: 3600 }
+ expose :human_time_estimate, documentation: { type: 'string', example: '3h 30m' }
with_options(format_with: :time_tracking_formatter) do
- expose :total_time_spent, as: :human_total_time_spent
+ expose :total_time_spent, as: :human_total_time_spent, documentation: { type: 'string', example: '1h' }
end
# rubocop: disable CodeReuse/ActiveRecord
diff --git a/lib/api/entities/metric_image.rb b/lib/api/entities/metric_image.rb
index fd5e3a62e40..3e4566832c9 100644
--- a/lib/api/entities/metric_image.rb
+++ b/lib/api/entities/metric_image.rb
@@ -3,7 +3,13 @@
module API
module Entities
class MetricImage < Grape::Entity
- expose :id, :created_at, :filename, :file_path, :url, :url_text
+ expose :id, documentation: { type: 'integer', example: 23 }
+ expose :created_at, documentation: { type: 'dateTime', example: '2020-11-13T00:06:18.084Z' }
+ expose :filename, documentation: { type: 'string', example: 'file.png' }
+ expose :file_path, documentation: { type: 'string',
+ example: '/uploads/-/system/alert_metric_image/file/23/file.png' }
+ expose :url, documentation: { type: 'string', example: 'https://example.com/metric' }
+ expose :url_text, documentation: { type: 'string', example: 'An example metric' }
end
end
end
diff --git a/lib/api/entities/milestone.rb b/lib/api/entities/milestone.rb
index b191210a234..ea73ade46cd 100644
--- a/lib/api/entities/milestone.rb
+++ b/lib/api/entities/milestone.rb
@@ -10,7 +10,7 @@ module API
expose :state, :created_at, :updated_at
expose :due_date
expose :start_date
- expose :expired?, as: :expired
+ expose :expired
expose :web_url do |milestone, _options|
Gitlab::UrlBuilder.build(milestone)
diff --git a/lib/api/entities/ml/mlflow/experiment.rb b/lib/api/entities/ml/mlflow/experiment.rb
index 54e0fe63985..51650c36d98 100644
--- a/lib/api/entities/ml/mlflow/experiment.rb
+++ b/lib/api/entities/ml/mlflow/experiment.rb
@@ -9,6 +9,7 @@ module API
expose :name
expose(:lifecycle_stage) { |experiment| experiment.deleted_on? ? 'deleted' : 'active' }
expose(:artifact_location) { |experiment| 'not_implemented' }
+ expose :metadata, as: :tags, using: KeyValue
end
end
end
diff --git a/lib/api/entities/ml/mlflow/run_param.rb b/lib/api/entities/ml/mlflow/key_value.rb
index 75fee738f8b..cf2c32f6f44 100644
--- a/lib/api/entities/ml/mlflow/run_param.rb
+++ b/lib/api/entities/ml/mlflow/key_value.rb
@@ -4,7 +4,7 @@ module API
module Entities
module Ml
module Mlflow
- class RunParam < Grape::Entity
+ class KeyValue < Grape::Entity
expose :name, as: :key
expose :value
end
diff --git a/lib/api/entities/ml/mlflow/run.rb b/lib/api/entities/ml/mlflow/run.rb
index 8b16c67611f..01d85e8862b 100644
--- a/lib/api/entities/ml/mlflow/run.rb
+++ b/lib/api/entities/ml/mlflow/run.rb
@@ -9,7 +9,8 @@ module API
expose :itself, using: RunInfo, as: :info
expose :data do
expose :metrics, using: Metric
- expose :params, using: RunParam
+ expose :params, using: KeyValue
+ expose :metadata, as: :tags, using: KeyValue
end
end
end
diff --git a/lib/api/entities/namespace.rb b/lib/api/entities/namespace.rb
index f11303d41a6..15bc7d158c4 100644
--- a/lib/api/entities/namespace.rb
+++ b/lib/api/entities/namespace.rb
@@ -3,7 +3,7 @@
module API
module Entities
class Namespace < Entities::NamespaceBasic
- expose :members_count_with_descendants, if: -> (namespace, opts) { expose_members_count_with_descendants?(namespace, opts) } do |namespace, _|
+ expose :members_count_with_descendants, documentation: { type: 'integer', example: 5 }, if: -> (namespace, opts) { expose_members_count_with_descendants?(namespace, opts) } do |namespace, _|
namespace.users_with_descendants.count
end
diff --git a/lib/api/entities/namespace_basic.rb b/lib/api/entities/namespace_basic.rb
index 2b9dd0b5f4d..4264326cdc2 100644
--- a/lib/api/entities/namespace_basic.rb
+++ b/lib/api/entities/namespace_basic.rb
@@ -3,9 +3,15 @@
module API
module Entities
class NamespaceBasic < Grape::Entity
- expose :id, :name, :path, :kind, :full_path, :parent_id, :avatar_url
+ expose :id, documentation: { type: 'integer', example: 2 }
+ expose :name, documentation: { type: 'string', example: 'project' }
+ expose :path, documentation: { type: 'string', example: 'my_project' }
+ expose :kind, documentation: { type: 'string', example: 'project' }
+ expose :full_path, documentation: { type: 'string', example: 'group/my_project' }
+ expose :parent_id, documentation: { type: 'integer', example: 1 }
+ expose :avatar_url, documentation: { type: 'string', example: 'https://example.com/avatar/12345' }
- expose :web_url do |namespace|
+ expose :web_url, documentation: { type: 'string', example: 'https://example.com/group/my_project' } do |namespace|
if namespace.user_namespace?
Gitlab::Routing.url_helpers.user_url(namespace.owner)
else
diff --git a/lib/api/entities/namespace_existence.rb b/lib/api/entities/namespace_existence.rb
index d93078ecdac..ac9511930ab 100644
--- a/lib/api/entities/namespace_existence.rb
+++ b/lib/api/entities/namespace_existence.rb
@@ -3,7 +3,8 @@
module API
module Entities
class NamespaceExistence < Grape::Entity
- expose :exists, :suggests
+ expose :exists, documentation: { type: 'boolean' }
+ expose :suggests, documentation: { type: 'string', is_array: true, example: 'my-group1' }
end
end
end
diff --git a/lib/api/entities/npm_package.rb b/lib/api/entities/npm_package.rb
index b094f3acdb6..ad864f86fd5 100644
--- a/lib/api/entities/npm_package.rb
+++ b/lib/api/entities/npm_package.rb
@@ -3,9 +3,19 @@
module API
module Entities
class NpmPackage < Grape::Entity
- expose :name
- expose :versions
- expose :dist_tags, as: 'dist-tags'
+ expose :name, documentation: { type: 'string', example: 'my_package' }
+ expose :versions,
+ documentation: {
+ type: 'object',
+ example: '{
+ "1.0.0": {
+ "name": "my_package",
+ "version": "1.0.0",
+ "dist": { "shasum": "12345", "tarball": "https://..." }
+ }
+ }'
+ }
+ expose :dist_tags, as: 'dist-tags', documentation: { type: 'object', example: '{ "latest":"1.0.1" }' }
end
end
end
diff --git a/lib/api/entities/npm_package_tag.rb b/lib/api/entities/npm_package_tag.rb
index 7f458fa037f..0a20d18e917 100644
--- a/lib/api/entities/npm_package_tag.rb
+++ b/lib/api/entities/npm_package_tag.rb
@@ -3,7 +3,7 @@
module API
module Entities
class NpmPackageTag < Grape::Entity
- expose :dist_tags, merge: true
+ expose :dist_tags, merge: true, documentation: { type: 'object', example: '{ "latest":"1.0.1" }' }
end
end
end
diff --git a/lib/api/entities/nuget/dependency.rb b/lib/api/entities/nuget/dependency.rb
index b61c37f5882..adb11376cfa 100644
--- a/lib/api/entities/nuget/dependency.rb
+++ b/lib/api/entities/nuget/dependency.rb
@@ -4,10 +4,10 @@ module API
module Entities
module Nuget
class Dependency < Grape::Entity
- expose :id, as: :@id
- expose :type, as: :@type
- expose :name, as: :id
- expose :range
+ expose :id, as: :@id, documentation: { type: 'string', example: 'http://gitlab.com/Sandbox.App/1.0.0.json#dependency' }
+ expose :type, as: :@type, documentation: { type: 'string', example: 'PackageDependency' }
+ expose :name, as: :id, documentation: { type: 'string', example: 'Dependency' }
+ expose :range, documentation: { type: 'string', example: '2.0.0' }
end
end
end
diff --git a/lib/api/entities/nuget/dependency_group.rb b/lib/api/entities/nuget/dependency_group.rb
index dcab9359fcf..8d943050cd8 100644
--- a/lib/api/entities/nuget/dependency_group.rb
+++ b/lib/api/entities/nuget/dependency_group.rb
@@ -4,10 +4,12 @@ module API
module Entities
module Nuget
class DependencyGroup < Grape::Entity
- expose :id, as: :@id
- expose :type, as: :@type
- expose :target_framework, as: :targetFramework, expose_nil: false
- expose :dependencies, using: ::API::Entities::Nuget::Dependency
+ expose :id, as: :@id, documentation: { type: 'string', example: 'http://gitlab.com/Sandbox.App/1.0.0.json#dependencygroup' }
+ expose :type, as: :@type, documentation: { type: 'string', example: 'PackageDependencyGroup' }
+ expose :target_framework, as: :targetFramework, expose_nil: false,
+ documentation: { type: 'string', example: 'fwk test' }
+ expose :dependencies, using: ::API::Entities::Nuget::Dependency,
+ documentation: { is_array: true, type: 'API::Entities::Nuget::Dependency' }
end
end
end
diff --git a/lib/api/entities/nuget/metadatum.rb b/lib/api/entities/nuget/metadatum.rb
index 87caef41a85..256b916cb64 100644
--- a/lib/api/entities/nuget/metadatum.rb
+++ b/lib/api/entities/nuget/metadatum.rb
@@ -4,9 +4,9 @@ module API
module Entities
module Nuget
class Metadatum < Grape::Entity
- expose :project_url, as: :projectUrl, expose_nil: false
- expose :license_url, as: :licenseUrl, expose_nil: false
- expose :icon_url, as: :iconUrl, expose_nil: false
+ expose :project_url, as: :projectUrl, expose_nil: false, documentation: { type: 'string', example: 'http://sandbox.com/project' }
+ expose :license_url, as: :licenseUrl, expose_nil: false, documentation: { type: 'string', example: 'http://sandbox.com/license' }
+ expose :icon_url, as: :iconUrl, expose_nil: false, documentation: { type: 'string', example: 'http://sandbox.com/icon' }
end
end
end
diff --git a/lib/api/entities/nuget/package_metadata.rb b/lib/api/entities/nuget/package_metadata.rb
index e1c2a1ae161..1c94426bdd6 100644
--- a/lib/api/entities/nuget/package_metadata.rb
+++ b/lib/api/entities/nuget/package_metadata.rb
@@ -4,9 +4,10 @@ module API
module Entities
module Nuget
class PackageMetadata < Grape::Entity
- expose :json_url, as: :@id
- expose :archive_url, as: :packageContent
- expose :catalog_entry, as: :catalogEntry, using: ::API::Entities::Nuget::PackageMetadataCatalogEntry
+ expose :json_url, as: :@id, documentation: { type: 'string', example: 'https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata/MyNuGetPkg/1.3.0.17.json' }
+ expose :archive_url, as: :packageContent, documentation: { type: 'string', example: 'https://gitlab.example.com/api/v4/projects/1/packages/nuget/download/MyNuGetPkg/1.3.0.17/helloworld.1.3.0.17.nupkg' }
+ expose :catalog_entry, as: :catalogEntry, using: ::API::Entities::Nuget::PackageMetadataCatalogEntry,
+ documentation: { type: 'API::Entities::Nuget::PackageMetadataCatalogEntry' }
end
end
end
diff --git a/lib/api/entities/nuget/package_metadata_catalog_entry.rb b/lib/api/entities/nuget/package_metadata_catalog_entry.rb
index 5533f857596..ce328c5a5ca 100644
--- a/lib/api/entities/nuget/package_metadata_catalog_entry.rb
+++ b/lib/api/entities/nuget/package_metadata_catalog_entry.rb
@@ -4,15 +4,17 @@ module API
module Entities
module Nuget
class PackageMetadataCatalogEntry < Grape::Entity
- expose :json_url, as: :@id
- expose :authors
- expose :dependency_groups, as: :dependencyGroups, using: ::API::Entities::Nuget::DependencyGroup
- expose :package_name, as: :id
- expose :package_version, as: :version
- expose :tags
- expose :archive_url, as: :packageContent
- expose :summary
- expose :metadatum, using: ::API::Entities::Nuget::Metadatum, merge: true
+ expose :json_url, as: :@id, documentation: { type: 'string', example: 'https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata/MyNuGetPkg/1.3.0.17.json' }
+ expose :authors, documentation: { type: 'string', example: 'Author' }
+ expose :dependency_groups, as: :dependencyGroups, using: ::API::Entities::Nuget::DependencyGroup,
+ documentation: { is_array: true, type: 'API::Entities::Nuget::DependencyGroup' }
+ expose :package_name, as: :id, documentation: { type: 'string', example: 'MyNuGetPkg' }
+ expose :package_version, as: :version, documentation: { type: 'string', example: '1.3.0.17' }
+ expose :tags, documentation: { type: 'string', example: 'tag#1 tag#2' }
+ expose :archive_url, as: :packageContent, documentation: { type: 'string', example: 'https://gitlab.example.com/api/v4/projects/1/packages/nuget/download/MyNuGetPkg/1.3.0.17/helloworld.1.3.0.17.nupkg' }
+ expose :summary, documentation: { type: 'string', example: 'Summary' }
+ expose :metadatum, using: ::API::Entities::Nuget::Metadatum, merge: true,
+ documentation: { type: 'API::Entities::Nuget::Metadatum' }
end
end
end
diff --git a/lib/api/entities/nuget/packages_metadata.rb b/lib/api/entities/nuget/packages_metadata.rb
index 1cdf2491725..e556df0ce1f 100644
--- a/lib/api/entities/nuget/packages_metadata.rb
+++ b/lib/api/entities/nuget/packages_metadata.rb
@@ -4,8 +4,9 @@ module API
module Entities
module Nuget
class PackagesMetadata < Grape::Entity
- expose :count
- expose :items, using: ::API::Entities::Nuget::PackagesMetadataItem
+ expose :count, documentation: { type: 'integer', example: 1 }
+ expose :items, using: ::API::Entities::Nuget::PackagesMetadataItem,
+ documentation: { is_array: true, type: 'API::Entities::Nuget::PackagesMetadataItem' }
end
end
end
diff --git a/lib/api/entities/nuget/packages_metadata_item.rb b/lib/api/entities/nuget/packages_metadata_item.rb
index 84cc79166f3..420a4c3941c 100644
--- a/lib/api/entities/nuget/packages_metadata_item.rb
+++ b/lib/api/entities/nuget/packages_metadata_item.rb
@@ -4,11 +4,12 @@ module API
module Entities
module Nuget
class PackagesMetadataItem < Grape::Entity
- expose :json_url, as: :@id
- expose :lower_version, as: :lower
- expose :upper_version, as: :upper
- expose :packages_count, as: :count
- expose :packages, as: :items, using: ::API::Entities::Nuget::PackageMetadata
+ expose :json_url, as: :@id, documentation: { type: 'string', example: 'https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata/MyNuGetPkg/1.3.0.17.json' }
+ expose :lower_version, as: :lower, documentation: { type: 'string', example: '1.3.0.17' }
+ expose :upper_version, as: :upper, documentation: { type: 'string', example: '1.3.0.17' }
+ expose :packages_count, as: :count, documentation: { type: 'integer', example: 1 }
+ expose :packages, as: :items, using: ::API::Entities::Nuget::PackageMetadata,
+ documentation: { is_array: true, type: 'API::Entities::Nuget::PackageMetadata' }
end
end
end
diff --git a/lib/api/entities/nuget/packages_versions.rb b/lib/api/entities/nuget/packages_versions.rb
index 498c6970d5c..e0330300ca7 100644
--- a/lib/api/entities/nuget/packages_versions.rb
+++ b/lib/api/entities/nuget/packages_versions.rb
@@ -4,7 +4,7 @@ module API
module Entities
module Nuget
class PackagesVersions < Grape::Entity
- expose :versions
+ expose :versions, documentation: { type: 'string', is_array: true, example: '1.3.0.17' }
end
end
end
diff --git a/lib/api/entities/nuget/search_result.rb b/lib/api/entities/nuget/search_result.rb
index 8e028cbad95..bb3698de30b 100644
--- a/lib/api/entities/nuget/search_result.rb
+++ b/lib/api/entities/nuget/search_result.rb
@@ -4,17 +4,18 @@ module API
module Entities
module Nuget
class SearchResult < Grape::Entity
- expose :type, as: :@type
- expose :authors
- expose :name, as: :id
- expose :name, as: :title
- expose :summary
- expose :total_downloads, as: :totalDownloads
- expose :verified
- expose :version
+ expose :type, as: :@type, documentation: { type: 'string', example: 'Package' }
+ expose :authors, documentation: { type: 'string', example: 'Author' }
+ expose :name, as: :id, documentation: { type: 'string', example: 'MyNuGetPkg' }
+ expose :name, as: :title, documentation: { type: 'string', example: 'MyNuGetPkg' }
+ expose :summary, documentation: { type: 'string', example: 'Summary' }
+ expose :total_downloads, as: :totalDownloads, documentation: { type: 'integer', example: 1 }
+ expose :verified, documentation: { type: 'boolean' }
+ expose :version, documentation: { type: 'string', example: '1.3.0.17' }
expose :versions, using: ::API::Entities::Nuget::SearchResultVersion
- expose :tags
- expose :metadatum, using: ::API::Entities::Nuget::Metadatum, merge: true
+ expose :tags, documentation: { type: 'string', example: 'tag#1 tag#2' }
+ expose :metadatum, using: ::API::Entities::Nuget::Metadatum, merge: true,
+ documentation: { is_array: true, type: 'API::Entities::Nuget::Metadatum' }
end
end
end
diff --git a/lib/api/entities/nuget/search_result_version.rb b/lib/api/entities/nuget/search_result_version.rb
index 9032c964c44..fb8d8b75f83 100644
--- a/lib/api/entities/nuget/search_result_version.rb
+++ b/lib/api/entities/nuget/search_result_version.rb
@@ -4,9 +4,9 @@ module API
module Entities
module Nuget
class SearchResultVersion < Grape::Entity
- expose :json_url, as: :@id
- expose :version
- expose :downloads
+ expose :json_url, as: :@id, documentation: { type: 'string', example: 'https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata/MyNuGetPkg/1.3.0.17.json' }
+ expose :version, documentation: { type: 'string', example: '1.3.0.17' }
+ expose :downloads, documentation: { type: 'integer', example: 1 }
end
end
end
diff --git a/lib/api/entities/nuget/search_results.rb b/lib/api/entities/nuget/search_results.rb
index 22a77dc7b6c..117904a1aff 100644
--- a/lib/api/entities/nuget/search_results.rb
+++ b/lib/api/entities/nuget/search_results.rb
@@ -4,8 +4,9 @@ module API
module Entities
module Nuget
class SearchResults < Grape::Entity
- expose :total_count, as: :totalHits
- expose :data, using: ::API::Entities::Nuget::SearchResult
+ expose :total_count, as: :totalHits, documentation: { type: 'integer', example: 1 }
+ expose :data, using: ::API::Entities::Nuget::SearchResult,
+ documentation: { is_array: true, type: 'API::Entities::Nuget::SearchResult' }
end
end
end
diff --git a/lib/api/entities/nuget/service_index.rb b/lib/api/entities/nuget/service_index.rb
index e57bd04adb9..4ab6c5ddc8b 100644
--- a/lib/api/entities/nuget/service_index.rb
+++ b/lib/api/entities/nuget/service_index.rb
@@ -4,8 +4,8 @@ module API
module Entities
module Nuget
class ServiceIndex < Grape::Entity
- expose :version
- expose :resources
+ expose :version, documentation: { type: 'string', example: '1.3.0.17' }
+ expose :resources, documentation: { type: 'object', is_array: true, example: '{ "@id": "https://gitlab.com/api/v4/projects/1/packages/nuget/query", "@type": "SearchQueryService", "comment": "Filter and search for packages by keyword."}' }
end
end
end
diff --git a/lib/api/entities/package.rb b/lib/api/entities/package.rb
index c92a4677220..ab6cc0fcb0a 100644
--- a/lib/api/entities/package.rb
+++ b/lib/api/entities/package.rb
@@ -26,7 +26,7 @@ module API
expose :status, documentation: { type: 'string', example: 'default' }
expose :_links do
- expose :web_path do |package|
+ expose :web_path, if: ->(package) { package.default? } do |package|
package_path(package)
end
diff --git a/lib/api/entities/packages/debian/distribution.rb b/lib/api/entities/packages/debian/distribution.rb
index 97a3c479f40..a11f4337f38 100644
--- a/lib/api/entities/packages/debian/distribution.rb
+++ b/lib/api/entities/packages/debian/distribution.rb
@@ -5,17 +5,18 @@ module API
module Packages
module Debian
class Distribution < Grape::Entity
- expose :id
- expose :codename
- expose :suite
- expose :origin
- expose :label
- expose :version
- expose :description
- expose :valid_time_duration_seconds
+ expose :id, documentation: { type: 'integer', example: 1 }
+ expose :codename, documentation: { type: 'string', example: 'unstable' }
+ expose :suite, documentation: { type: 'string', example: 'unstable' }
+ expose :origin, documentation: { type: 'string', example: 'Grep' }
+ expose :label, documentation: { type: 'string', example: 'grep.be' }
+ expose :version, documentation: { type: 'string', example: '12' }
+ expose :description, documentation: { type: 'string', example: 'My description' }
+ expose :valid_time_duration_seconds, documentation: { type: 'integer', example: 604800 }
- expose :component_names, as: :components
- expose :architecture_names, as: :architectures
+ expose :component_names, as: :components, documentation: { is_array: true, type: 'string', example: 'main' }
+ expose :architecture_names, as: :architectures,
+ documentation: { is_array: true, type: 'string', example: 'amd64' }
end
end
end
diff --git a/lib/api/entities/plan_limit.rb b/lib/api/entities/plan_limit.rb
index 34018f03eb1..d69be0077f2 100644
--- a/lib/api/entities/plan_limit.rb
+++ b/lib/api/entities/plan_limit.rb
@@ -17,6 +17,7 @@ module API
expose :maven_max_file_size, documentation: { type: 'integer', example: 3221225472 }
expose :npm_max_file_size, documentation: { type: 'integer', example: 524288000 }
expose :nuget_max_file_size, documentation: { type: 'integer', example: 524288000 }
+ expose :pipeline_hierarchy_size, documentation: { type: 'integer', example: 1000 }
expose :pypi_max_file_size, documentation: { type: 'integer', example: 3221225472 }
expose :terraform_module_max_file_size, documentation: { type: 'integer', example: 1073741824 }
expose :storage_size_limit, documentation: { type: 'integer', example: 15000 }
diff --git a/lib/api/entities/project.rb b/lib/api/entities/project.rb
index 1c1bafbf161..37be6903d8b 100644
--- a/lib/api/entities/project.rb
+++ b/lib/api/entities/project.rb
@@ -81,6 +81,10 @@ module API
expose(:container_registry_access_level, documentation: { type: 'string', example: 'enabled' }) { |project, options| project_feature_string_access_level(project, :container_registry) }
expose(:security_and_compliance_access_level, documentation: { type: 'string', example: 'enabled' }) { |project, options| project_feature_string_access_level(project, :security_and_compliance) }
expose(:releases_access_level, documentation: { type: 'string', example: 'enabled' }) { |project, options| project_feature_string_access_level(project, :releases) }
+ expose(:environments_access_level, documentation: { type: 'string', example: 'enabled' }) { |project, options| project_feature_string_access_level(project, :environments) }
+ expose(:feature_flags_access_level, documentation: { type: 'string', example: 'enabled' }) { |project, options| project_feature_string_access_level(project, :feature_flags) }
+ expose(:infrastructure_access_level, documentation: { type: 'string', example: 'enabled' }) { |project, options| project_feature_string_access_level(project, :infrastructure) }
+ expose(:monitor_access_level, documentation: { type: 'string', example: 'enabled' }) { |project, options| project_feature_string_access_level(project, :monitor) }
expose :emails_disabled, documentation: { type: 'boolean' }
expose :shared_runners_enabled, documentation: { type: 'boolean' }
diff --git a/lib/api/entities/project_integration.rb b/lib/api/entities/project_integration.rb
index 29bb60a19e5..f4709ce6dab 100644
--- a/lib/api/entities/project_integration.rb
+++ b/lib/api/entities/project_integration.rb
@@ -5,8 +5,8 @@ module API
class ProjectIntegration < Entities::ProjectIntegrationBasic
# Expose serialized properties
expose :properties, documentation: { type: 'Hash', example: { "token" => "secr3t" } } do |integration, options|
- integration.api_field_names.to_h do |name|
- [name, integration.public_send(name)] # rubocop:disable GitlabSecurity/PublicSend
+ integration.api_field_names.index_with do |name|
+ integration.public_send(name) # rubocop:disable GitlabSecurity/PublicSend
end
end
end
diff --git a/lib/api/entities/push_event_payload.rb b/lib/api/entities/push_event_payload.rb
index 6aad5f10177..2d8f0d9344c 100644
--- a/lib/api/entities/push_event_payload.rb
+++ b/lib/api/entities/push_event_payload.rb
@@ -3,8 +3,14 @@
module API
module Entities
class PushEventPayload < Grape::Entity
- expose :commit_count, :action, :ref_type, :commit_from, :commit_to, :ref,
- :commit_title, :ref_count
+ expose :commit_count, documentation: { type: 'integer', example: 1 }
+ expose :action, documentation: { type: 'string', example: 'pushed' }
+ expose :ref_type, documentation: { type: 'string', example: 'branch' }
+ expose :commit_from, documentation: { type: 'string', example: '50d4420237a9de7be1304607147aec22e4a14af7' }
+ expose :commit_to, documentation: { type: 'string', example: 'c5feabde2d8cd023215af4d2ceeb7a64839fc428' }
+ expose :ref, documentation: { type: 'string', example: 'master' }
+ expose :commit_title, documentation: { type: 'string', example: 'Add simple search to projects in public area' }
+ expose :ref_count, documentation: { type: 'integer', example: 1 }
end
end
end
diff --git a/lib/api/entities/ssh_key.rb b/lib/api/entities/ssh_key.rb
index 3db10bb8ec2..37e8ad7b1f5 100644
--- a/lib/api/entities/ssh_key.rb
+++ b/lib/api/entities/ssh_key.rb
@@ -12,6 +12,7 @@ module API
example: 'ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt1256k6Yjz\
GGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCdd\
NaP0L+hM7zhFNzjFvpaMgJw0=' }
+ expose :usage_type, documentation: { type: 'string', example: 'auth' }
end
end
end
diff --git a/lib/api/entities/ssh_signature.rb b/lib/api/entities/ssh_signature.rb
new file mode 100644
index 00000000000..dc3800c87c5
--- /dev/null
+++ b/lib/api/entities/ssh_signature.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ class SshSignature < Grape::Entity
+ expose :verification_status, documentation: { type: 'string', example: 'unverified' }
+ expose :key, using: 'API::Entities::SSHKey'
+ end
+ end
+end
diff --git a/lib/api/entities/tag_signature.rb b/lib/api/entities/tag_signature.rb
new file mode 100644
index 00000000000..e75fd04109a
--- /dev/null
+++ b/lib/api/entities/tag_signature.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ class TagSignature < Grape::Entity
+ expose :signature_type, documentation: { type: 'string', example: 'PGP' }
+
+ expose :signature, merge: true do |tag|
+ ::API::Entities::X509Signature.represent tag.signature if tag.signature_type == :X509
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/todo.rb b/lib/api/entities/todo.rb
index 5bbbb59f565..02dfdb68af9 100644
--- a/lib/api/entities/todo.rb
+++ b/lib/api/entities/todo.rb
@@ -32,6 +32,7 @@ module API
def todo_target_url(todo)
return design_todo_target_url(todo) if todo.for_design?
+ return todo.access_request_url if todo.member_access_requested?
target_type = todo.target_type.gsub('::', '_').underscore
target_url = "#{todo.resource_parent.class.to_s.underscore}_#{target_type}_url"