Skip to content

Ensure API params have a description

Description of the proposal

  • Ensures that all Grape API params have a desc (description)
  • The purpose of linting this param attribute is for the purposes of improving out OpenAPI documentation
  • it is helpful for our api definitions to be consistent and param descriptions benefit api users
  • Our API Style Guide#Methods and Paramaters Description section already outlines the description requirement but it has not been enforced in the past, which has allowed for some inconsistencies

How to Validate these changes

Running the linter

  1. Open any grape entity file that is not listed in .rubocop_todo/api/parameter_description.yml and remove the desc from any param
  2. Run the new linter on that file ie rubocop --only API/ParameterDescription lib/api/environments.rb
  3. Observe the offense that was added
  4. Change the file back, run the linter again and see no offenses

Ensuring files with exceptions will be ignored

  1. run rubocop --only API/ParameterDescription --format files - no files should be listed
  2. Remove one of the files from .rubocop_todo/api/parameter_description.yml
  3. run run rubocop --only API/ParameterDescription --format files - see the file you removed listed

*** Add the file back to the exception list ***

Check-list

  • Make sure this MR enables a static analysis check rule for new usage but ignores current offenses.
  • Mention this proposal in the relevant Slack channels (e.g. #development, #backend, #frontend).
  • If there is a choice to make between two potential styles, set up an emoji vote in the MR:
    • CHOICE_A: 🅰️
    • CHOICE_B: 🅱️
    • Vote for both choices, so they are visible to others.
  • The MR doesn't have significant objections, and is getting a majority of 👍 vs 👎 (remember that we don't need to reach a consensus).
  • (If applicable) One style is getting a majority of vote (compared to the other choice).
  • (If applicable) Update the MR with the chosen style.
  • Create a follow-up issue to fix the current offenses as a separate iteration: ISSUE_LINK
  • Follow the review process as usual.
  • Once approved and merged by a maintainer, mention it again:
    • In the relevant Slack channels (e.g. #development, #backend, #frontend).
    • (Optional depending on the impact of the change) In the Engineering Week in Review.

Impact on gitlab-org/gitlab>

Click to expand
Inspecting 46 files
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

Offenses:

ee/lib/api/admin/data_management.rb:61:15: C: API/ParameterDescription: API params must include a desc.
              requires :model_name, type: String, values: AVAILABLE_MODEL_NAMES
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/admin/data_management.rb:92:17: C: API/ParameterDescription: API params must include a desc.
                requires :model_name, type: String, values: AVAILABLE_MODEL_NAMES
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/admin/data_management.rb:93:17: C: API/ParameterDescription: API params must include a desc.
                requires :record_identifier, types: [Integer, String]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/admin/data_management.rb:123:17: C: API/ParameterDescription: API params must include a desc.
                requires :model_name, type: String, values: AVAILABLE_MODEL_NAMES
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/admin/data_management.rb:124:17: C: API/ParameterDescription: API params must include a desc.
                requires :record_identifier, type: Integer
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/admin_member_roles.rb:35:11: C: API/ParameterDescription: API params must include a desc.
          optional permission_name.to_s, type: Boolean, desc: permission_params[:description], default: false
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/ai/llm/git_command.rb:18:13: C: API/ParameterDescription: API params must include a desc.
            requires :prompt, type: String
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/analytics/code_review_analytics.rb:50:11: C: API/ParameterDescription: API params must include a desc.
          optional :not, type: Hash do
          ^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/audit_events.rb:37:9: C: API/ParameterDescription: API params must include a desc.
        optional :entity_id, type: Integer
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/audit_events.rb:39:11: C: API/ParameterDescription: API params must include a desc.
          requires :entity_type, type: String
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/chat.rb:56:11: C: API/ParameterDescription: API params must include a desc.
          optional :current_file, type: Hash do
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/code_suggestions.rb:127:11: C: API/ParameterDescription: API params must include a desc.
          requires :current_file, type: Hash do
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/elasticsearch_indexed_namespaces.rb:23:9: C: API/ParameterDescription: API params must include a desc.
        requires :percentage, type: Integer, values: 0..100
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/elasticsearch_indexed_namespaces.rb:24:9: C: API/ParameterDescription: API params must include a desc.
        requires :plan, type: String, values: Plan::PAID_HOSTED_PLANS
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/elasticsearch_indexed_namespaces.rb:40:9: C: API/ParameterDescription: API params must include a desc.
        requires :percentage, type: Integer, values: 0..100
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/elasticsearch_indexed_namespaces.rb:41:9: C: API/ParameterDescription: API params must include a desc.
        requires :plan, type: String, values: Plan::PAID_HOSTED_PLANS
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/epics.rb:124:11: C: API/ParameterDescription: API params must include a desc.
          optional :not, type: Hash do
          ^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/manage/groups.rb:77:11: C: API/ParameterDescription: API params must include a desc.
          requires :id, type: String
          ^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/member_roles.rb:45:11: C: API/ParameterDescription: API params must include a desc.
          optional permission_name.to_s, type: Boolean, desc: permission_params[:description], default: false
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/project_google_cloud_integration.rb:25:11: C: API/ParameterDescription: API params must include a desc.
          optional :enable_google_cloud_artifact_registry, types: Boolean
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/project_google_cloud_integration.rb:26:11: C: API/ParameterDescription: API params must include a desc.
          optional :google_cloud_artifact_registry_project_id, types: String, regexp: GOOGLE_PROJECT_ID_REGEXP
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/project_google_cloud_integration.rb:64:11: C: API/ParameterDescription: API params must include a desc.
          requires :google_cloud_project_id, types: String, regexp: GOOGLE_PROJECT_ID_REGEXP
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/scim/group_scim.rb:17:11: C: API/ParameterDescription: API params must include a desc.
          requires :group, type: String
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/vulnerabilities.rb:75:9: C: API/ParameterDescription: API params must include a desc.
        optional :comment, type: String
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/vulnerabilities.rb:88:9: C: API/ParameterDescription: API params must include a desc.
        optional :comment, type: String
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/vulnerability_archive_exports.rb:22:11: C: API/ParameterDescription: API params must include a desc.
          requires :start_date, type: Date
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/vulnerability_archive_exports.rb:23:11: C: API/ParameterDescription: API params must include a desc.
          requires :end_date, type: Date
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/vulnerability_exports.rb:50:11: C: API/ParameterDescription: API params must include a desc.
          optional :project_vulnerabilities_history, ...
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/vulnerability_exports.rb:53:11: C: API/ParameterDescription: API params must include a desc.
          optional :group_vulnerabilities_over_time, ...
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/vulnerability_exports.rb:56:11: C: API/ParameterDescription: API params must include a desc.
          optional :project_security_status, ...
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/vulnerability_exports.rb:59:11: C: API/ParameterDescription: API params must include a desc.
          optional :dashboard_type, ...
          ^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/vulnerability_exports.rb:63:11: C: API/ParameterDescription: API params must include a desc.
          optional :full_path, ...
          ^^^^^^^^^^^^^^^^^^^^
ee/lib/api/vulnerability_exports.rb:83:62: C: API/ParameterDescription: API params must include a desc.
            given(export_format: ->(fmt) { fmt == 'pdf' }) { optional(:send_email, type: Boolean, default: true) }
                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/vulnerability_exports.rb:84:62: C: API/ParameterDescription: API params must include a desc.
            given(export_format: ->(fmt) { fmt == 'csv' }) { optional(:send_email, type: Boolean, default: false) }
                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/vulnerability_exports.rb:107:62: C: API/ParameterDescription: API params must include a desc.
            given(export_format: ->(fmt) { fmt == 'pdf' }) { optional(:send_email, type: Boolean, default: true) }
                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/vulnerability_exports.rb:108:62: C: API/ParameterDescription: API params must include a desc.
            given(export_format: ->(fmt) { fmt == 'csv' }) { optional(:send_email, type: Boolean, default: false) }
                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/vulnerability_exports.rb:130:62: C: API/ParameterDescription: API params must include a desc.
            given(export_format: ->(fmt) { fmt == 'pdf' }) { optional(:send_email, type: Boolean, default: true) }
                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/api/vulnerability_exports.rb:131:62: C: API/ParameterDescription: API params must include a desc.
            given(export_format: ->(fmt) { fmt == 'csv' }) { optional(:send_email, type: Boolean, default: false) }
                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/geo.rb:127:13: C: API/ParameterDescription: API params must include a desc.
            optional :data, type: Hash do
            ^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/geo.rb:141:15: C: API/ParameterDescription: API params must include a desc.
              optional :status, type: Hash do
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/geo.rb:301:15: C: API/ParameterDescription: API params must include a desc.
              requires :data, type: Hash do
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/geo.rb:326:15: C: API/ParameterDescription: API params must include a desc.
              requires :secret_token, type: String
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/geo.rb:327:15: C: API/ParameterDescription: API params must include a desc.
              requires :data, type: Hash do
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/geo.rb:328:17: C: API/ParameterDescription: API params must include a desc.
                requires :gl_id, type: String
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/geo.rb:329:17: C: API/ParameterDescription: API params must include a desc.
                requires :primary_repo, type: String
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/geo.rb:355:15: C: API/ParameterDescription: API params must include a desc.
              requires :secret_token, type: String
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/geo.rb:356:15: C: API/ParameterDescription: API params must include a desc.
              requires :data, type: Hash do
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/geo.rb:357:17: C: API/ParameterDescription: API params must include a desc.
                requires :gl_id, type: String
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/geo.rb:358:17: C: API/ParameterDescription: API params must include a desc.
                requires :primary_repo, type: String
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/geo.rb:380:15: C: API/ParameterDescription: API params must include a desc.
              requires :secret_token, type: String
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/geo.rb:381:15: C: API/ParameterDescription: API params must include a desc.
              requires :data, type: Hash do
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/geo.rb:382:17: C: API/ParameterDescription: API params must include a desc.
                requires :gl_id, type: String
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/geo.rb:383:17: C: API/ParameterDescription: API params must include a desc.
                requires :primary_repo, type: String
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/helpers/protected_branches_helpers.rb:11:13: C: API/ParameterDescription: API params must include a desc.
            optional :user_id, type: Integer, documentation: { example: 1 }
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/helpers/protected_branches_helpers.rb:12:13: C: API/ParameterDescription: API params must include a desc.
            optional :group_id, type: Integer, documentation: { example: 1 }
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/helpers/protected_branches_helpers.rb:13:13: C: API/ParameterDescription: API params must include a desc.
            optional :id, type: Integer, documentation: { example: 1 }
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/helpers/protected_branches_helpers.rb:24:15: C: API/ParameterDescription: API params must include a desc.
              optional :access_level, type: Integer, values: ::ProtectedBranch::PushAccessLevel.allowed_access_levels
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/helpers/protected_branches_helpers.rb:26:15: C: API/ParameterDescription: API params must include a desc.
              optional :deploy_key_id, type: Integer, documentation: { example: 1 }
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/helpers/protected_branches_helpers.rb:31:15: C: API/ParameterDescription: API params must include a desc.
              optional :access_level, type: Integer, values: ::ProtectedBranch::MergeAccessLevel.allowed_access_levels
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/helpers/protected_branches_helpers.rb:37:15: C: API/ParameterDescription: API params must include a desc.
              optional :access_level, type: Integer, values: ::ProtectedBranch::UnprotectAccessLevel.allowed_access_levels
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/helpers/protected_tags_helpers.rb:12:15: C: API/ParameterDescription: API params must include a desc.
              optional :access_level, type: Integer, values: ::ProtectedTag::CreateAccessLevel.allowed_access_levels
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/helpers/protected_tags_helpers.rb:13:15: C: API/ParameterDescription: API params must include a desc.
              optional :user_id, type: Integer
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/helpers/protected_tags_helpers.rb:14:15: C: API/ParameterDescription: API params must include a desc.
              optional :group_id, type: Integer
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/helpers/protected_tags_helpers.rb:15:15: C: API/ParameterDescription: API params must include a desc.
              optional :deploy_key_id, type: Integer
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:146:21: C: API/ParameterDescription: API params must include a desc.
                    requires :name, type: String
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:147:21: C: API/ParameterDescription: API params must include a desc.
                    requires :severity, type: String, coerce_with: ->(s) { s.downcase }
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:148:21: C: API/ParameterDescription: API params must include a desc.
                    optional :confidence, type: String, coerce_with: ->(c) { c.downcase }
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:150:21: C: API/ParameterDescription: API params must include a desc.
                    requires :location, type: Hash do
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:151:23: C: API/ParameterDescription: API params must include a desc.
                      requires :image, type: String
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:153:23: C: API/ParameterDescription: API params must include a desc.
                      requires :dependency, type: Hash do
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:154:25: C: API/ParameterDescription: API params must include a desc.
                        requires :package, type: Hash do
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:155:27: C: API/ParameterDescription: API params must include a desc.
                          requires :name, type: String
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:158:25: C: API/ParameterDescription: API params must include a desc.
                        optional :version, type: String
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:161:23: C: API/ParameterDescription: API params must include a desc.
                      requires :kubernetes_resource, type: Hash do
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:162:25: C: API/ParameterDescription: API params must include a desc.
                        requires :namespace, type: String
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:163:25: C: API/ParameterDescription: API params must include a desc.
                        requires :name, type: String
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:164:25: C: API/ParameterDescription: API params must include a desc.
                        requires :kind, type: String
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:165:25: C: API/ParameterDescription: API params must include a desc.
                        requires :container_name, type: String
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:166:25: C: API/ParameterDescription: API params must include a desc.
                        requires :agent_id, type: String
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:169:23: C: API/ParameterDescription: API params must include a desc.
                      optional :operating_system, type: String
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:172:21: C: API/ParameterDescription: API params must include a desc.
                    requires :identifiers, type: Array do
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:173:23: C: API/ParameterDescription: API params must include a desc.
                      requires :type, type: String
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:174:23: C: API/ParameterDescription: API params must include a desc.
                      requires :name, type: String
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:175:23: C: API/ParameterDescription: API params must include a desc.
                      optional :value, type: String
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:176:23: C: API/ParameterDescription: API params must include a desc.
                      optional :url, type: String
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:179:21: C: API/ParameterDescription: API params must include a desc.
                    optional :message, type: String
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:180:21: C: API/ParameterDescription: API params must include a desc.
                    optional :description, type: String
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:181:21: C: API/ParameterDescription: API params must include a desc.
                    optional :solution, type: String
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:182:21: C: API/ParameterDescription: API params must include a desc.
                    optional :links, type: Array
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:187:21: C: API/ParameterDescription: API params must include a desc.
                    requires :id, type: String
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:188:21: C: API/ParameterDescription: API params must include a desc.
                    requires :name, type: String
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:189:21: C: API/ParameterDescription: API params must include a desc.
                    requires :vendor, type: Hash do
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/internal/kubernetes.rb:190:23: C: API/ParameterDescription: API params must include a desc.
                      requires :name, type: String
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/api/namespaces.rb:66:13: C: API/ParameterDescription: API params must include a desc.
            optional :gitlab_subscription_attributes, type: Hash do
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/admin/sidekiq.rb:16:17: C: API/ParameterDescription: API params must include a desc.
                optional key, type: String, allow_blank: false
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/award_emoji.rb:18:11: C: API/ParameterDescription: API params must include a desc.
          requires :"#{awardable_id_string}", type: Integer, desc: Helpers::AwardEmoji.awardable_id_desc
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/ci/pipelines.rb:62:11: C: API/ParameterDescription: API params must include a desc.
          optional :source,   type: String, values: ::Ci::Pipeline.sources.keys, ...
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/concerns/packages/nuget/public_endpoints.rb:75:17: C: API/ParameterDescription: API params must include a desc.
                requires :same_file_name, same_as: :file_name
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/discussions.rb:80:13: C: API/ParameterDescription: API params must include a desc.
            optional :position, type: Hash do
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/discussions.rb:96:19: C: API/ParameterDescription: API params must include a desc.
                  optional :start, type: Hash do
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/discussions.rb:102:19: C: API/ParameterDescription: API params must include a desc.
                  optional :end, type: Hash do
                  ^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/draft_notes.rb:51:9: C: API/ParameterDescription: API params must include a desc.
        optional :position, type: Hash do
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/draft_notes.rb:66:13: C: API/ParameterDescription: API params must include a desc.
            optional :start, type: Hash do
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/draft_notes.rb:72:13: C: API/ParameterDescription: API params must include a desc.
            optional :end, type: Hash do
            ^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/feature_flags.rb:64:11: C: API/ParameterDescription: API params must include a desc.
          optional :strategies, type: Array do
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/feature_flags.rb:68:13: C: API/ParameterDescription: API params must include a desc.
            optional :scopes, type: Array do
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/feature_flags.rb:131:11: C: API/ParameterDescription: API params must include a desc.
          optional :strategies, type: Array do
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/feature_flags.rb:137:13: C: API/ParameterDescription: API params must include a desc.
            optional :scopes, type: Array do
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/files.rb:164:9: C: API/ParameterDescription: API params must include a desc.
        optional :range, type: Hash do
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/generic_packages.rb:80:13: C: API/ParameterDescription: API params must include a desc.
            optional :select, type: String, values: %w[package_file]
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/helpers/projects_helpers.rb:59:9: C: API/ParameterDescription: API params must include a desc.
        optional :container_expiration_policy_attributes, type: Hash do
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/hooks/events.rb:19:9: C: API/ParameterDescription: API params must include a desc.
        optional :status, ...
        ^^^^^^^^^^^^^^^^^
lib/api/integrations.rb:90:15: C: API/ParameterDescription: API params must include a desc.
              requires setting[:name], type: setting[:type], desc: setting[:desc]
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/integrations/integratable_operations.rb:73:17: C: API/ParameterDescription: API params must include a desc.
                requires setting[:name], type: setting[:type], desc: setting[:desc]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/integrations/integratable_operations.rb:75:17: C: API/ParameterDescription: API params must include a desc.
                optional setting[:name], type: setting[:type], desc: setting[:desc]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/internal/kubernetes.rb:133:13: C: API/ParameterDescription: API params must include a desc.
            optional :counters, type: Hash do
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/internal/kubernetes.rb:141:13: C: API/ParameterDescription: API params must include a desc.
            optional :unique_counters, type: Hash do
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/internal/shellhorse.rb:32:13: C: API/ParameterDescription: API params must include a desc.
            requires :action, type: String
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/internal/shellhorse.rb:33:13: C: API/ParameterDescription: API params must include a desc.
            requires :protocol, type: String
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/internal/shellhorse.rb:34:13: C: API/ParameterDescription: API params must include a desc.
            requires :gl_repository, type: String # repository identifier, such as project-7
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/internal/shellhorse.rb:35:13: C: API/ParameterDescription: API params must include a desc.
            requires :changes, type: String
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/internal/shellhorse.rb:36:13: C: API/ParameterDescription: API params must include a desc.
            optional :check_ip, type: String
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/internal/shellhorse.rb:37:13: C: API/ParameterDescription: API params must include a desc.
            optional :packfile_stats, type: Hash do
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/internal/shellhorse.rb:39:15: C: API/ParameterDescription: API params must include a desc.
              optional :wants, type: Integer
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/internal/shellhorse.rb:41:15: C: API/ParameterDescription: API params must include a desc.
              optional :haves, type: Integer
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/issues.rb:73:9: C: API/ParameterDescription: API params must include a desc.
        optional :not, type: Hash do
        ^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/mcp/base.rb:110:11: C: API/ParameterDescription: API params must include a desc.
          requires :jsonrpc, type: String, allow_blank: false, values: [JSONRPC_VERSION]
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/mcp/base.rb:111:11: C: API/ParameterDescription: API params must include a desc.
          requires :method, type: String, allow_blank: false
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/mcp/base.rb:112:11: C: API/ParameterDescription: API params must include a desc.
          optional :id, allow_blank: false # NOTE: JSON-RPC server must reply with same value and type for "id" member
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/mcp/base.rb:113:11: C: API/ParameterDescription: API params must include a desc.
          optional :params, types: [Hash, Array]
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/ml/mlflow/runs.rb:177:13: C: API/ParameterDescription: API params must include a desc.
            optional :metrics, type: Array, default: [] do
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/ml/mlflow/runs.rb:183:13: C: API/ParameterDescription: API params must include a desc.
            optional :params, type: Array, default: [] do
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/project_export.rb:76:11: C: API/ParameterDescription: API params must include a desc.
          optional :upload, type: Hash do
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/pypi_packages.rb:292:11: C: API/ParameterDescription: API params must include a desc.
          requires :name, type: String, documentation: { example: 'my.pypi.package' }
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/pypi_packages.rb:293:11: C: API/ParameterDescription: API params must include a desc.
          requires :version, type: String, documentation: { example: '1.3.7' }
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/pypi_packages.rb:294:11: C: API/ParameterDescription: API params must include a desc.
          optional :requires_python, type: String, documentation: { example: '>=3.7' }
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/pypi_packages.rb:295:11: C: API/ParameterDescription: API params must include a desc.
          optional :md5_digest, type: String, documentation: { example: '900150983cd24fb0d6963f7d28e17f72' }
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/pypi_packages.rb:296:11: C: API/ParameterDescription: API params must include a desc.
          optional :sha256_digest, type: String, regexp: Gitlab::Regex.sha256_regex, documentation: { example: 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad' }
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/pypi_packages.rb:297:11: C: API/ParameterDescription: API params must include a desc.
          optional :metadata_version, type: String, documentation: { example: '2.3' }
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/pypi_packages.rb:298:11: C: API/ParameterDescription: API params must include a desc.
          optional :author_email, type: String, documentation: { example: 'cschultz@example.com, snoopy@peanuts.com' }
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/pypi_packages.rb:299:11: C: API/ParameterDescription: API params must include a desc.
          optional :description, type: String
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/pypi_packages.rb:300:11: C: API/ParameterDescription: API params must include a desc.
          optional :description_content_type, type: String, ...
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/pypi_packages.rb:302:11: C: API/ParameterDescription: API params must include a desc.
          optional :summary, type: String, documentation: { example: 'A module for collecting votes from beagles.' }
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/pypi_packages.rb:303:11: C: API/ParameterDescription: API params must include a desc.
          optional :keywords, type: String, documentation: { example: 'dog,puppy,voting,election' }
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/releases.rb:248:9: C: API/ParameterDescription: API params must include a desc.
        optional :assets, type: Hash do
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/releases.rb:249:11: C: API/ParameterDescription: API params must include a desc.
          optional :links, type: Array do
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/settings.rb:268:7: C: API/ParameterDescription: API params must include a desc.
      optional(*Helpers::SettingsHelpers.optional_attributes)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/terraform/modules/v1/namespace_packages.rb:37:15: C: API/ParameterDescription: API params must include a desc.
              requires :module_system, type: String, regexp: API::NO_SLASH_URL_PART_REGEX
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/users.rb:978:9: C: API/ParameterDescription: API params must include a desc.
        optional :type, type: String, values: %w[Project Namespace]
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/wikis.rb:88:11: C: API/ParameterDescription: API params must include a desc.
          optional :front_matter, type: Hash do
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/wikis.rb:118:11: C: API/ParameterDescription: API params must include a desc.
          optional :front_matter, type: Hash do
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

46 files inspected, 151 offenses detected

#570770 (closed)

Edited by Peter Leitzen

Merge request reports

Loading