Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2025-05-22 09:09:21 +00:00
parent d4e7a67fd0
commit d4d74b4e25
54 changed files with 688 additions and 359 deletions

View File

@ -2694,6 +2694,7 @@ Gitlab/BoundedContexts:
- 'ee/app/models/concerns/epics/metadata_cache_update.rb'
- 'ee/app/models/concerns/filterable_by_test_reports.rb'
- 'ee/app/models/concerns/health_status.rb'
- 'ee/app/models/concerns/singleton_record.rb'
- 'ee/app/models/concerns/identity_verifiable.rb'
- 'ee/app/models/concerns/incident_management/base_pending_escalation.rb'
- 'ee/app/models/concerns/insights_feature.rb'

View File

@ -365,7 +365,7 @@
{"name":"kubeclient","version":"4.11.0","platform":"ruby","checksum":"4985fcd749fb8c364a668a8350a49821647f03aa52d9ee6cbc582beb8e883fcc"},
{"name":"language_server-protocol","version":"3.17.0.3","platform":"ruby","checksum":"3d5c58c02f44a20d972957a9febe386d7e7468ab3900ce6bd2b563dd910c6b3f"},
{"name":"launchy","version":"2.5.2","platform":"ruby","checksum":"8aa0441655aec5514008e1d04892c2de3ba57bd337afb984568da091121a241b"},
{"name":"lefthook","version":"1.11.5","platform":"ruby","checksum":"309fe0b9c8586af81775e88f111572003192d2a1598bf2800f0d4d1f8ba9a826"},
{"name":"lefthook","version":"1.11.12","platform":"ruby","checksum":"7bcc883edeb03b01b109f802ed85c33f539b5d21fa64a838625f1ff2ff04edcf"},
{"name":"letter_opener","version":"1.10.0","platform":"ruby","checksum":"2ff33f2e3b5c3c26d1959be54b395c086ca6d44826e8bf41a14ff96fdf1bdbb2"},
{"name":"letter_opener_web","version":"3.0.0","platform":"ruby","checksum":"3f391efe0e8b9b24becfab5537dfb17a5cf5eb532038f947daab58cb4b749860"},
{"name":"libyajl2","version":"2.1.0","platform":"ruby","checksum":"aa5df6c725776fc050c8418450de0f7c129cb7200b811907c4c0b3b5c0aea0ef"},

View File

@ -1114,7 +1114,7 @@ GEM
language_server-protocol (3.17.0.3)
launchy (2.5.2)
addressable (~> 2.8)
lefthook (1.11.5)
lefthook (1.11.12)
letter_opener (1.10.0)
launchy (>= 2.2, < 4)
letter_opener_web (3.0.0)

View File

@ -365,7 +365,7 @@
{"name":"kubeclient","version":"4.11.0","platform":"ruby","checksum":"4985fcd749fb8c364a668a8350a49821647f03aa52d9ee6cbc582beb8e883fcc"},
{"name":"language_server-protocol","version":"3.17.0.3","platform":"ruby","checksum":"3d5c58c02f44a20d972957a9febe386d7e7468ab3900ce6bd2b563dd910c6b3f"},
{"name":"launchy","version":"2.5.2","platform":"ruby","checksum":"8aa0441655aec5514008e1d04892c2de3ba57bd337afb984568da091121a241b"},
{"name":"lefthook","version":"1.11.5","platform":"ruby","checksum":"309fe0b9c8586af81775e88f111572003192d2a1598bf2800f0d4d1f8ba9a826"},
{"name":"lefthook","version":"1.11.12","platform":"ruby","checksum":"7bcc883edeb03b01b109f802ed85c33f539b5d21fa64a838625f1ff2ff04edcf"},
{"name":"letter_opener","version":"1.10.0","platform":"ruby","checksum":"2ff33f2e3b5c3c26d1959be54b395c086ca6d44826e8bf41a14ff96fdf1bdbb2"},
{"name":"letter_opener_web","version":"3.0.0","platform":"ruby","checksum":"3f391efe0e8b9b24becfab5537dfb17a5cf5eb532038f947daab58cb4b749860"},
{"name":"libyajl2","version":"2.1.0","platform":"ruby","checksum":"aa5df6c725776fc050c8418450de0f7c129cb7200b811907c4c0b3b5c0aea0ef"},

View File

@ -1114,7 +1114,7 @@ GEM
language_server-protocol (3.17.0.3)
launchy (2.5.2)
addressable (~> 2.8)
lefthook (1.11.5)
lefthook (1.11.12)
letter_opener (1.10.0)
launchy (>= 2.2, < 4)
letter_opener_web (3.0.0)

View File

@ -38,6 +38,8 @@ export default {
import('ee_component/related_items_tree/components/issue_health_status.vue'),
EpicCountables: () =>
import('ee_else_ce/vue_shared/components/epic_countables/epic_countables.vue'),
WorkItemStatusBadge: () =>
import('ee_component/work_items/components/shared/work_item_status_badge.vue'),
},
directives: {
GlTooltip: GlTooltipDirective,
@ -202,6 +204,12 @@ export default {
targetId() {
return uniqueId(`${this.item.iid}`);
},
showStatus() {
return this.hasStatus && this.glFeatures.workItemStatusFeatureFlag;
},
hasStatus() {
return Boolean(this.item.status);
},
},
methods: {
setError,
@ -305,7 +313,9 @@ export default {
/>
</template>
</div>
<div class="board-card-footer gl-mt-3 gl-flex gl-items-end gl-justify-between">
<div
class="board-card-footer gl-mt-3 gl-flex gl-flex-wrap gl-items-end gl-justify-between gl-gap-y-3"
>
<div
class="align-items-start board-card-number-container gl-flex gl-flex-wrap-reverse gl-overflow-hidden"
>
@ -366,7 +376,7 @@ export default {
</span>
</span>
</div>
<div class="gl-flex gl-items-center">
<div class="gl-flex gl-flex-1 gl-items-center gl-justify-end gl-gap-3">
<div class="board-card-assignee gl-flex">
<user-avatar-link
v-for="assignee in cappedAssignees"
@ -395,7 +405,7 @@ export default {
</div>
<work-item-relationship-icons
v-if="filteredLinkedItems.length"
class="gl-ml-3 gl-whitespace-nowrap"
class="gl-whitespace-nowrap"
:work-item-type="workItemType"
:linked-work-items="filteredLinkedItems"
:work-item-full-path="workItemFullPath"
@ -403,6 +413,12 @@ export default {
:work-item-web-url="item.webUrl"
:target-id="targetId"
/>
<work-item-status-badge
v-if="showStatus"
:name="item.status.name"
:icon-name="item.status.iconName"
:color="item.status.color"
/>
</div>
</div>
</div>

View File

@ -16,7 +16,16 @@ const defaultFields = [
tableField({ key: 'status', label: s__('Runners|Status'), thClasses: ['gl-w-3/20'] }),
tableField({ key: 'summary', label: s__('Runners|Runner configuration') }),
tableField({ key: 'owner', label: s__('Runners|Owner'), thClasses: ['gl-w-4/20'] }),
tableField({ key: 'actions', label: __('Actions'), thClasses: ['md:gl-invisible', 'gl-w-3/20'] }),
tableField({
key: 'actions',
label: __('Actions'),
thClasses: [
'md:gl-invisible', // hides the "Actions" header in large viewports
'gl-w-4/20',
'lg:gl-w-3/20',
],
tdClass: 'gl-text-right',
}),
];
export default {

View File

@ -1,5 +1,5 @@
<script>
import { GlButton } from '@gitlab/ui';
import { GlButton, GlTooltipDirective } from '@gitlab/ui';
import { sprintf, s__ } from '~/locale';
import { captureException } from '../../sentry_utils';
import runnerAssignToProjectMutation from '../../graphql/list/runner_assign_to_project.mutation.graphql';
@ -11,6 +11,9 @@ export default {
components: {
GlButton,
},
directives: {
GlTooltip: GlTooltipDirective,
},
props: {
projectFullPath: {
type: String,
@ -38,7 +41,10 @@ export default {
}
return runnerUnassignFromProjectMutation;
},
text() {
icon() {
return this.assigns ? 'link' : 'unlink';
},
tooltip() {
return this.assigns ? s__('Runner|Assign to project') : s__('Runner|Unassign from project');
},
doneMessage() {
@ -86,7 +92,5 @@ export default {
};
</script>
<template>
<gl-button size="small" :loading="loading" @click="onClick">
{{ text }}
</gl-button>
<gl-button v-gl-tooltip="tooltip" size="small" :icon="icon" :loading="loading" @click="onClick" />
</template>

View File

@ -116,7 +116,7 @@ export default {
<p v-if="isEmpty" data-testid="empty-message" class="gl-px-5 gl-pt-5 gl-text-subtle">
<slot name="empty"></slot>
</p>
<runner-list v-else :runners="runners.items" :fixed="false" :loading="isLoading">
<runner-list v-else :runners="runners.items" :loading="isLoading">
<template #runner-name="{ runner }">
<gl-link v-if="runner.webUrl" data-testid="runner-link" :href="runner.webUrl">
<runner-name :runner="runner" />

View File

@ -59,7 +59,7 @@ export default {
<template>
<li
:class="{ '!gl-rounded-b-base gl-text-subtle': collapsed }"
:class="{ '!gl-rounded-b-lg gl-text-subtle': collapsed }"
class="toggle-replies-widget gl-border-r gl-border-l !gl-flex gl-flex-wrap gl-items-center gl-border-l-section gl-border-r-section gl-bg-subtle gl-px-5 gl-py-2 gl-leading-24"
:aria-expanded="ariaState"
>

View File

@ -138,7 +138,7 @@ export default {
<template v-if="replies.length || isReplying" #note-footer>
<div
data-testid="wiki-note-footer"
class="gl-border-t gl-rounded-b-base gl-border-t-subtle gl-bg-subtle dark:gl-border-t-section"
class="gl-border-t gl-rounded-b-lg gl-border-t-subtle gl-bg-subtle dark:gl-border-t-section"
>
<toggle-replies-widget
v-if="replies.length"

View File

@ -27,7 +27,7 @@ export default {
<template>
<div class="gl-mt-3" data-testid="disabled-comments">
<span class="issuable-note-warning gl-inline-block gl-w-full gl-rounded-base gl-px-5 gl-py-4">
<span class="issuable-note-warning gl-inline-block gl-w-full gl-rounded-lg gl-px-5 gl-py-4">
<gl-icon :size="16" name="lock" class="icon" />
<span v-if="isContainerArchived">
{{ archivedContainerWarning }}

View File

@ -110,7 +110,7 @@ export default {
'internal-note': this.note.internal,
},
noteParent: {
'gl-rounded-base gl-border gl-border-section': !this.replyNote,
'gl-rounded-lg gl-border gl-border-section': !this.replyNote,
'gl-ml-7': this.replyNote,
'gl-bg-section gl-ml-8': !this.replyNote,
},

View File

@ -72,8 +72,8 @@ export default {
this.displayError();
},
update({ project }) {
this.pathLocks = project.pathLocks || DEFAULT_BLOB_INFO.pathLocks;
this.userPermissions = project.userPermissions;
this.pathLocks = project?.pathLocks || DEFAULT_BLOB_INFO.pathLocks;
this.userPermissions = project?.userPermissions || DEFAULT_BLOB_INFO.userPermissions;
},
},
project: {

View File

@ -93,7 +93,7 @@ export default {
};
},
update({ project }) {
this.userPermissions = project?.userPermissions;
this.userPermissions = project?.userPermissions || DEFAULT_BLOB_INFO.userPermissions;
},
error() {
createAlert({ message: this.$options.i18n.fetchError });

View File

@ -8,7 +8,7 @@ $diff-file-header: 41px;
margin-bottom: $gl-padding;
table.code tr:last-of-type td:last-of-type {
border-bottom-right-radius: $gl-border-radius-base-inner;
border-bottom-right-radius: $gl-border-radius-lg-inner;
}
.file-title,
@ -411,7 +411,7 @@ table.code {
margin: 0;
padding: 0;
table-layout: fixed;
border-radius: 0 0 $gl-border-radius-base $gl-border-radius-base;
border-radius: 0 0 $gl-border-radius-large $gl-border-radius-large;
.diff-td.highlight-top {
box-shadow: 0 -1px var(--highlight-border-color, $blue-300);
@ -521,17 +521,17 @@ table.code {
.diff-grid-left {
.diff-td:first-child,
td:first-child {
border-bottom-left-radius: $gl-border-radius-base-inner;
border-bottom-left-radius: $gl-border-radius-lg-inner;
.diff-line-expand-button {
border-bottom-left-radius: $gl-border-radius-base-inner;
border-bottom-left-radius: $gl-border-radius-lg-inner;
}
}
}
.diff-td:last-child:not(.left-side.parallel),
td:last-child:not(.left-side.parallel) {
border-bottom-right-radius: $gl-border-radius-base-inner;
border-bottom-right-radius: $gl-border-radius-lg-inner;
}
}
@ -800,7 +800,7 @@ table.code {
margin: 0 $gl-padding $gl-padding;
.notes {
@apply gl-rounded-base;
@apply gl-rounded-lg;
}
}

View File

@ -29,7 +29,7 @@
.timeline-content {
margin-left: $note-spacing-left;
@apply gl-bg-section gl-border gl-border-section gl-rounded-base;
@apply gl-bg-section gl-border gl-border-section gl-rounded-lg;
padding: $gl-padding-4 $gl-padding-8;
}
@ -59,7 +59,7 @@
.timeline-content {
margin-left: $note-spacing-left;
@apply gl-bg-section gl-border gl-border-b-subtle dark:gl-border-section gl-rounded-t-base;
@apply gl-bg-section gl-border gl-border-b-subtle dark:gl-border-section gl-rounded-t-lg;
padding: $gl-padding-4 $gl-padding-8;
}
}
@ -82,7 +82,7 @@
}
&:last-of-type .timeline-entry-inner {
@apply gl-border-b gl-rounded-b-base;
@apply gl-border-b gl-rounded-b-lg;
}
}
}
@ -278,7 +278,7 @@
.timeline-content {
padding: $gl-padding-8 !important;
@apply gl-bg-section gl-border gl-border-section gl-rounded-base;
@apply gl-bg-section gl-border gl-border-section gl-rounded-lg;
&.expanded {
@apply gl-border-b-0;

View File

@ -60,7 +60,7 @@
.discussion .timeline-entry {
margin: 0;
border-right: 0;
border-radius: $gl-border-radius-base $gl-border-radius-base 0 0;
@apply gl-rounded-t-lg gl-rounded-r-lg gl-rounded-l-none gl-rounded-b-none;
}
.issuable-discussion:not(.incident-timeline-events),

View File

@ -147,7 +147,7 @@
.issuable-note-warning {
color: $orange-600;
background-color: $orange-50;
@apply gl-rounded-t-base gl-rounded-b-none;
@apply gl-rounded-t-lg gl-rounded-b-none;
padding: 3px 12px;
margin: auto;
align-items: center;
@ -261,10 +261,6 @@ table {
.md-area-wrapper {
@apply gl-bg-subtle;
}
.md-area {
@apply gl-rounded-base;
}
}
.js-note-attachment-delete {
@ -297,7 +293,7 @@ table {
.commit-diff {
.discussion-reply-holder {
padding: 0 $gl-padding $gl-padding-12 $gl-padding;
@apply gl-rounded-t-none gl-rounded-b-base;
@apply gl-rounded-t-none gl-rounded-b-lg;
+ .new-note {
@apply gl-border-t gl-border-t-subtle;
@ -488,3 +484,7 @@ table {
transition: border-color ease-in-out 0.15s,
box-shadow ease-in-out 0.15s;
}
.text-file .notes-content {
@apply gl-rounded-b-none;
}

View File

@ -48,10 +48,7 @@ module Users
LIMIT #{limit}
SQL
::Gitlab::Database::LoadBalancing::SessionMap
.current(load_balancer).fallback_to_replicas_for_ambiguous_queries do
connection.execute(sql).to_a
end
connection.select_all(sql).to_a
end
end
end

View File

@ -2169,10 +2169,23 @@ class User < ApplicationRecord
Feature.enabled?(:merge_request_dashboard, self, type: :wip)
end
def merge_request_dashboard_author_or_assignee_enabled?
::Feature.enabled?(:merge_request_dashboard_author_or_assignee, self)
end
def assigned_open_merge_requests_count(force: false)
Rails.cache.fetch(['users', id, 'assigned_open_merge_requests_count', merge_request_dashboard_enabled?], force: force, expires_in: COUNT_CACHE_VALIDITY_PERIOD) do
params = { assignee_id: id, state: 'opened', non_archived: true }
params[:reviewer_id] = 'none' if merge_request_dashboard_enabled?
Rails.cache.fetch(['users', id, 'assigned_open_merge_requests_count', merge_request_dashboard_enabled?, merge_request_dashboard_author_or_assignee_enabled?], force: force, expires_in: COUNT_CACHE_VALIDITY_PERIOD) do
params = { state: 'opened', non_archived: true }
if merge_request_dashboard_enabled?
params = params.merge(or: { reviewer_wildcard: 'none', review_states: %w[reviewed requested_changes], only_reviewer_username: ::Users::Internal.duo_code_review_bot.username })
end
if merge_request_dashboard_author_or_assignee_enabled? && merge_request_dashboard_enabled?
params = params.merge(include_assigned: true, author_id: id)
else
params[:assignee_id] = id
end
MergeRequestsFinder.new(self, params).execute.count
end
@ -2180,11 +2193,10 @@ class User < ApplicationRecord
def review_requested_open_merge_requests_count(force: false)
Rails.cache.fetch(['users', id, 'review_requested_open_merge_requests_count', merge_request_dashboard_enabled?], force: force, expires_in: COUNT_CACHE_VALIDITY_PERIOD) do
if merge_request_dashboard_enabled?
MergeRequestsFinder.new(self, assigned_user_id: id, reviewer_review_states: %w[unreviewed unapproved review_started], assigned_review_states: %w[requested_changes reviewed], state: 'opened', non_archived: true).execute.count
else
MergeRequestsFinder.new(self, reviewer_id: id, state: 'opened', non_archived: true).execute.count
end
params = { reviewer_id: id, state: 'opened', non_archived: true }
params[:review_states] = %w[unapproved unreviewed review_started] if merge_request_dashboard_enabled?
MergeRequestsFinder.new(self, params).execute.count
end
end
@ -2223,7 +2235,7 @@ class User < ApplicationRecord
end
def invalidate_merge_request_cache_counts
Rails.cache.delete(['users', id, 'assigned_open_merge_requests_count', merge_request_dashboard_enabled?])
Rails.cache.delete(['users', id, 'assigned_open_merge_requests_count', merge_request_dashboard_enabled?, merge_request_dashboard_author_or_assignee_enabled?])
Rails.cache.delete(['users', id, 'review_requested_open_merge_requests_count', merge_request_dashboard_enabled?])
end

View File

@ -68,8 +68,11 @@ module WorkItems
available_work_item_types[work_item_type&.downcase]
end
# todo: This should be updated once we can determine available work item types based on namespace,
# see https://gitlab.com/gitlab-org/gitlab/-/issues/524828
def available_work_item_types
WorkItems::Type.all.index_by(&:name).with_indifferent_access.transform_keys(&:strip).transform_keys(&:downcase)
WorkItems::Type.all.reject { |wit| wit.base_type == :epic }
.index_by(&:name).with_indifferent_access.transform_keys(&:strip).transform_keys(&:downcase)
end
strong_memoize_attr :available_work_item_types

View File

@ -425,8 +425,8 @@ notes:
- table: vulnerabilities
column: noteable_id
conditions:
- column: noteable_type
value: "Vulnerability"
- column: noteable_type
value: Vulnerability
on_delete: async_delete
notification_settings:
- table: users
@ -619,6 +619,10 @@ sbom_sources:
- table: organizations
column: organization_id
on_delete: async_delete
security_policy_settings:
- table: namespaces
column: csp_namespace_id
on_delete: async_nullify
security_scans:
- table: p_ci_builds
column: build_id

View File

@ -0,0 +1,3 @@
# frozen_string_literal: true
Rails.application.deprecators[:qa] = ActiveSupport::Deprecation.new('19.0', 'qa')

View File

@ -445,6 +445,8 @@
- 1
- - gitlab_subscriptions_refresh_seats
- 1
- - gitlab_subscriptions_seat_assignments_group_links_create_or_update_seats
- 1
- - gitlab_subscriptions_self_managed_duo_core_todo_notification
- 1
- - gitlab_subscriptions_trials_apply_trial

View File

@ -0,0 +1,11 @@
---
table_name: security_policy_settings
classes:
- Security::PolicySetting
feature_categories:
- security_policy_management
description: Stores instance-wide security policies related settings
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/191298
milestone: '18.1'
gitlab_schema: gitlab_main_clusterwide_setting
table_size: small

View File

@ -0,0 +1,23 @@
# frozen_string_literal: true
class AddSecurityPolicySettings < Gitlab::Database::Migration[2.3]
milestone '18.1'
disable_ddl_transaction!
INDEX_NAME = 'index_security_policy_settings_on_csp_namespace_id'
def up
create_table :security_policy_settings do |t|
t.bigint :csp_namespace_id, null: true
t.boolean :singleton, null: false, default: true, comment: 'Always true, used for singleton enforcement'
end
add_check_constraint :security_policy_settings, "(singleton IS TRUE)", 'check_singleton'
add_index :security_policy_settings, :singleton, unique: true
add_index :security_policy_settings, :csp_namespace_id, name: INDEX_NAME
end
def down
drop_table :security_policy_settings
end
end

View File

@ -0,0 +1,25 @@
# frozen_string_literal: true
class UpdateUniqIdxOnVirtualRegPkgsMvnGroupId < Gitlab::Database::Migration[2.3]
disable_ddl_transaction!
milestone '18.1'
TABLE_NAME = :virtual_registries_packages_maven_registries
OLD_INDEX = :virtual_registries_pkgs_maven_registries_on_unique_group_ids
NEW_INDEX = :virtual_reg_pkgs_mvn_registries_on_unique_group_id_and_name
def up
add_concurrent_index(
:virtual_registries_packages_maven_registries,
%i[group_id name],
name: NEW_INDEX,
unique: true
)
remove_concurrent_index_by_name(TABLE_NAME, OLD_INDEX)
end
def down
add_concurrent_index(:virtual_registries_packages_maven_registries, :group_id, name: OLD_INDEX, unique: true)
remove_concurrent_index_by_name(TABLE_NAME, NEW_INDEX)
end
end

View File

@ -0,0 +1 @@
ffce20b7db13ba447c3303b84538a26e56988bef6f4ae0a0ee872ed807463b0c

View File

@ -0,0 +1 @@
88cd3f17ad29bbb921bd6e2b8c0fcf61dd214c9b0514d92beade497d6e955214

View File

@ -22714,6 +22714,24 @@ CREATE SEQUENCE security_policy_requirements_id_seq
ALTER SEQUENCE security_policy_requirements_id_seq OWNED BY security_policy_requirements.id;
CREATE TABLE security_policy_settings (
id bigint NOT NULL,
csp_namespace_id bigint,
singleton boolean DEFAULT true NOT NULL,
CONSTRAINT check_singleton CHECK ((singleton IS TRUE))
);
COMMENT ON COLUMN security_policy_settings.singleton IS 'Always true, used for singleton enforcement';
CREATE SEQUENCE security_policy_settings_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE security_policy_settings_id_seq OWNED BY security_policy_settings.id;
CREATE TABLE security_scans (
id bigint NOT NULL,
created_at timestamp with time zone NOT NULL,
@ -27822,6 +27840,8 @@ ALTER TABLE ONLY security_policy_project_links ALTER COLUMN id SET DEFAULT nextv
ALTER TABLE ONLY security_policy_requirements ALTER COLUMN id SET DEFAULT nextval('security_policy_requirements_id_seq'::regclass);
ALTER TABLE ONLY security_policy_settings ALTER COLUMN id SET DEFAULT nextval('security_policy_settings_id_seq'::regclass);
ALTER TABLE ONLY security_scans ALTER COLUMN id SET DEFAULT nextval('security_scans_id_seq'::regclass);
ALTER TABLE ONLY security_training_providers ALTER COLUMN id SET DEFAULT nextval('security_training_providers_id_seq'::regclass);
@ -30831,6 +30851,9 @@ ALTER TABLE ONLY security_policy_project_links
ALTER TABLE ONLY security_policy_requirements
ADD CONSTRAINT security_policy_requirements_pkey PRIMARY KEY (id);
ALTER TABLE ONLY security_policy_settings
ADD CONSTRAINT security_policy_settings_pkey PRIMARY KEY (id);
ALTER TABLE ONLY security_scans
ADD CONSTRAINT security_scans_pkey PRIMARY KEY (id);
@ -37176,6 +37199,10 @@ CREATE INDEX index_security_policy_requirements_on_compliance_requirement_id ON
CREATE INDEX index_security_policy_requirements_on_namespace_id ON security_policy_requirements USING btree (namespace_id);
CREATE INDEX index_security_policy_settings_on_csp_namespace_id ON security_policy_settings USING btree (csp_namespace_id);
CREATE UNIQUE INDEX index_security_policy_settings_on_singleton ON security_policy_settings USING btree (singleton);
CREATE INDEX index_security_scans_for_non_purged_records ON security_scans USING btree (created_at, id) WHERE (status <> 6);
CREATE INDEX index_security_scans_on_created_at ON security_scans USING btree (created_at);
@ -38704,7 +38731,7 @@ CREATE INDEX user_uploads_uploader_path_idx ON user_uploads USING btree (uploade
CREATE UNIQUE INDEX virtual_reg_packages_maven_reg_upstreams_on_unique_upstream_ids ON virtual_registries_packages_maven_registry_upstreams USING btree (upstream_id);
CREATE UNIQUE INDEX virtual_registries_pkgs_maven_registries_on_unique_group_ids ON virtual_registries_packages_maven_registries USING btree (group_id);
CREATE UNIQUE INDEX virtual_reg_pkgs_mvn_registries_on_unique_group_id_and_name ON virtual_registries_packages_maven_registries USING btree (group_id, name);
CREATE INDEX vulnerability_archive_export__model_id_model_type_uploader__idx ON vulnerability_archive_export_uploads USING btree (model_id, model_type, uploader, created_at);

View File

@ -583,7 +583,7 @@ Returns [`DesignManagement!`](#designmanagement).
### `Query.devopsAdoptionEnabledNamespaces`
Get configured DevOps adoption namespaces. **Status:** Beta. This endpoint is subject to change without notice.
Get configured DevOps adoption namespaces. **Status**: Beta. This endpoint is subject to change without notice.
Returns [`DevopsAdoptionEnabledNamespaceConnection`](#devopsadoptionenablednamespaceconnection).
@ -2213,7 +2213,7 @@ Input type: `AiModelSelectionNamespaceUpdateInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationaimodelselectionnamespaceupdateaifeaturesettings"></a>`aiFeatureSettings` {{< icon name="warning-solid" >}} | [`[AiModelSelectionNamespaceFeatureSetting!]!`](#aimodelselectionnamespacefeaturesetting) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 18.1. |
| <a id="mutationaimodelselectionnamespaceupdateaifeaturesettings"></a>`aiFeatureSettings` {{< icon name="warning-solid" >}} | [`[AiModelSelectionNamespaceFeatureSetting!]!`](#aimodelselectionnamespacefeaturesetting) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 18.1. |
| <a id="mutationaimodelselectionnamespaceupdateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationaimodelselectionnamespaceupdateerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
@ -3140,7 +3140,7 @@ Input type: `BoardListCreateInput`
| <a id="mutationboardlistcreatelabelid"></a>`labelId` | [`LabelID`](#labelid) | Global ID of an existing label. |
| <a id="mutationboardlistcreatemilestoneid"></a>`milestoneId` | [`MilestoneID`](#milestoneid) | Global ID of an existing milestone. |
| <a id="mutationboardlistcreateposition"></a>`position` | [`Int`](#int) | Position of the list. |
| <a id="mutationboardlistcreatestatusid"></a>`statusId` {{< icon name="warning-solid" >}} | [`WorkItemsStatusesStatusID`](#workitemsstatusesstatusid) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 18.0. |
| <a id="mutationboardlistcreatestatusid"></a>`statusId` {{< icon name="warning-solid" >}} | [`WorkItemsStatusesStatusID`](#workitemsstatusesstatusid) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 18.0. |
#### Fields
@ -3458,7 +3458,7 @@ Input type: `BulkDestroyJobArtifactsInput`
### `Mutation.bulkEnableDevopsAdoptionNamespaces`
**Status:** Beta.
**Status**: Beta.
Input type: `BulkEnableDevopsAdoptionNamespacesInput`
@ -3558,8 +3558,8 @@ Input type: `CiJobTokenScopeAddGroupOrProjectInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationcijobtokenscopeaddgrouporprojectclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationcijobtokenscopeaddgrouporprojectdefaultpermissions"></a>`defaultPermissions` {{< icon name="warning-solid" >}} | [`Boolean`](#boolean) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.8. |
| <a id="mutationcijobtokenscopeaddgrouporprojectjobtokenpolicies"></a>`jobTokenPolicies` {{< icon name="warning-solid" >}} | [`[CiJobTokenScopePolicies!]`](#cijobtokenscopepolicies) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.5. |
| <a id="mutationcijobtokenscopeaddgrouporprojectdefaultpermissions"></a>`defaultPermissions` {{< icon name="warning-solid" >}} | [`Boolean`](#boolean) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.8. |
| <a id="mutationcijobtokenscopeaddgrouporprojectjobtokenpolicies"></a>`jobTokenPolicies` {{< icon name="warning-solid" >}} | [`[CiJobTokenScopePolicies!]`](#cijobtokenscopepolicies) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.5. |
| <a id="mutationcijobtokenscopeaddgrouporprojectprojectpath"></a>`projectPath` | [`ID!`](#id) | Project that the CI job token scope belongs to. |
| <a id="mutationcijobtokenscopeaddgrouporprojecttargetpath"></a>`targetPath` | [`ID!`](#id) | Group or project to be added to the CI job token scope. |
@ -3568,7 +3568,7 @@ Input type: `CiJobTokenScopeAddGroupOrProjectInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationcijobtokenscopeaddgrouporprojectcijobtokenscope"></a>`ciJobTokenScope` | [`CiJobTokenScopeType`](#cijobtokenscopetype) | CI job token's access scope. |
| <a id="mutationcijobtokenscopeaddgrouporprojectcijobtokenscopeallowlistentry"></a>`ciJobTokenScopeAllowlistEntry` {{< icon name="warning-solid" >}} | [`CiJobTokenScopeAllowlistEntry`](#cijobtokenscopeallowlistentry) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.6. |
| <a id="mutationcijobtokenscopeaddgrouporprojectcijobtokenscopeallowlistentry"></a>`ciJobTokenScopeAllowlistEntry` {{< icon name="warning-solid" >}} | [`CiJobTokenScopeAllowlistEntry`](#cijobtokenscopeallowlistentry) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.6. |
| <a id="mutationcijobtokenscopeaddgrouporprojectclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationcijobtokenscopeaddgrouporprojecterrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
@ -3581,7 +3581,7 @@ Input type: `CiJobTokenScopeAddProjectInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationcijobtokenscopeaddprojectclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationcijobtokenscopeaddprojectdirection"></a>`direction` {{< icon name="warning-solid" >}} | [`CiJobTokenScopeDirection`](#cijobtokenscopedirection) | **Deprecated:** Outbound job token scope is being removed. This field can now only be set to INBOUND. Deprecated in GitLab 16.0. |
| <a id="mutationcijobtokenscopeaddprojectdirection"></a>`direction` {{< icon name="warning-solid" >}} | [`CiJobTokenScopeDirection`](#cijobtokenscopedirection) | **Deprecated**: Outbound job token scope is being removed. This field can now only be set to INBOUND. Deprecated in GitLab 16.0. |
| <a id="mutationcijobtokenscopeaddprojectprojectpath"></a>`projectPath` | [`ID!`](#id) | Project that the CI job token scope belongs to. |
| <a id="mutationcijobtokenscopeaddprojecttargetprojectpath"></a>`targetProjectPath` | [`ID!`](#id) | Project to be added to the CI job token scope. |
@ -3590,7 +3590,7 @@ Input type: `CiJobTokenScopeAddProjectInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationcijobtokenscopeaddprojectcijobtokenscope"></a>`ciJobTokenScope` | [`CiJobTokenScopeType`](#cijobtokenscopetype) | CI job token's access scope. |
| <a id="mutationcijobtokenscopeaddprojectcijobtokenscopeallowlistentry"></a>`ciJobTokenScopeAllowlistEntry` {{< icon name="warning-solid" >}} | [`CiJobTokenScopeAllowlistEntry`](#cijobtokenscopeallowlistentry) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.6. |
| <a id="mutationcijobtokenscopeaddprojectcijobtokenscopeallowlistentry"></a>`ciJobTokenScopeAllowlistEntry` {{< icon name="warning-solid" >}} | [`CiJobTokenScopeAllowlistEntry`](#cijobtokenscopeallowlistentry) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.6. |
| <a id="mutationcijobtokenscopeaddprojectclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationcijobtokenscopeaddprojecterrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
@ -3659,7 +3659,7 @@ Input type: `CiJobTokenScopeRemoveGroupInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationcijobtokenscoperemovegroupcijobtokenscope"></a>`ciJobTokenScope` | [`CiJobTokenScopeType`](#cijobtokenscopetype) | CI job token's access scope. |
| <a id="mutationcijobtokenscoperemovegroupcijobtokenscopeallowlistentry"></a>`ciJobTokenScopeAllowlistEntry` {{< icon name="warning-solid" >}} | [`CiJobTokenScopeAllowlistEntry`](#cijobtokenscopeallowlistentry) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.6. |
| <a id="mutationcijobtokenscoperemovegroupcijobtokenscopeallowlistentry"></a>`ciJobTokenScopeAllowlistEntry` {{< icon name="warning-solid" >}} | [`CiJobTokenScopeAllowlistEntry`](#cijobtokenscopeallowlistentry) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.6. |
| <a id="mutationcijobtokenscoperemovegroupclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationcijobtokenscoperemovegrouperrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
@ -3672,7 +3672,7 @@ Input type: `CiJobTokenScopeRemoveProjectInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationcijobtokenscoperemoveprojectclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationcijobtokenscoperemoveprojectdirection"></a>`direction` {{< icon name="warning-solid" >}} | [`CiJobTokenScopeDirection`](#cijobtokenscopedirection) | **Deprecated:** Outbound job token scope is being removed. This field can now only be set to INBOUND. Deprecated in GitLab 16.9. |
| <a id="mutationcijobtokenscoperemoveprojectdirection"></a>`direction` {{< icon name="warning-solid" >}} | [`CiJobTokenScopeDirection`](#cijobtokenscopedirection) | **Deprecated**: Outbound job token scope is being removed. This field can now only be set to INBOUND. Deprecated in GitLab 16.9. |
| <a id="mutationcijobtokenscoperemoveprojectprojectpath"></a>`projectPath` | [`ID!`](#id) | Project that the CI job token scope belongs to. |
| <a id="mutationcijobtokenscoperemoveprojecttargetprojectpath"></a>`targetProjectPath` | [`ID!`](#id) | Project to be removed from the CI job token scope. |
@ -3681,7 +3681,7 @@ Input type: `CiJobTokenScopeRemoveProjectInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationcijobtokenscoperemoveprojectcijobtokenscope"></a>`ciJobTokenScope` | [`CiJobTokenScopeType`](#cijobtokenscopetype) | CI job token's access scope. |
| <a id="mutationcijobtokenscoperemoveprojectcijobtokenscopeallowlistentry"></a>`ciJobTokenScopeAllowlistEntry` {{< icon name="warning-solid" >}} | [`CiJobTokenScopeAllowlistEntry`](#cijobtokenscopeallowlistentry) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.6. |
| <a id="mutationcijobtokenscoperemoveprojectcijobtokenscopeallowlistentry"></a>`ciJobTokenScopeAllowlistEntry` {{< icon name="warning-solid" >}} | [`CiJobTokenScopeAllowlistEntry`](#cijobtokenscopeallowlistentry) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.6. |
| <a id="mutationcijobtokenscoperemoveprojectclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationcijobtokenscoperemoveprojecterrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
@ -3708,7 +3708,7 @@ Input type: `CiJobTokenScopeUpdatePoliciesInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationcijobtokenscopeupdatepoliciescijobtokenscopeallowlistentry"></a>`ciJobTokenScopeAllowlistEntry` {{< icon name="warning-solid" >}} | [`CiJobTokenScopeAllowlistEntry`](#cijobtokenscopeallowlistentry) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.6. |
| <a id="mutationcijobtokenscopeupdatepoliciescijobtokenscopeallowlistentry"></a>`ciJobTokenScopeAllowlistEntry` {{< icon name="warning-solid" >}} | [`CiJobTokenScopeAllowlistEntry`](#cijobtokenscopeallowlistentry) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.6. |
| <a id="mutationcijobtokenscopeupdatepoliciesclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationcijobtokenscopeupdatepolicieserrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
@ -4245,7 +4245,7 @@ Input type: `createContainerProtectionTagRuleInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationcreatecontainerprotectiontagruleclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationcreatecontainerprotectiontagrulecontainerprotectiontagrule"></a>`containerProtectionTagRule` {{< icon name="warning-solid" >}} | [`ContainerProtectionTagRule`](#containerprotectiontagrule) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.8. |
| <a id="mutationcreatecontainerprotectiontagrulecontainerprotectiontagrule"></a>`containerProtectionTagRule` {{< icon name="warning-solid" >}} | [`ContainerProtectionTagRule`](#containerprotectiontagrule) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.8. |
| <a id="mutationcreatecontainerprotectiontagruleerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
### `Mutation.createCustomEmoji`
@ -4387,7 +4387,7 @@ Input type: `CreateIssueInput`
| <a id="mutationcreateissuedescription"></a>`description` | [`String`](#string) | Description of the issue. |
| <a id="mutationcreateissuediscussiontoresolve"></a>`discussionToResolve` | [`String`](#string) | ID of a discussion to resolve. Also pass `merge_request_to_resolve_discussions_of`. |
| <a id="mutationcreateissueduedate"></a>`dueDate` | [`ISO8601Date`](#iso8601date) | Due date of the issue. |
| <a id="mutationcreateissueepicid"></a>`epicId` {{< icon name="warning-solid" >}} | [`EpicID`](#epicid) | **Deprecated:** This will be replaced by WorkItem hierarchyWidget. Deprecated in GitLab 17.5. |
| <a id="mutationcreateissueepicid"></a>`epicId` {{< icon name="warning-solid" >}} | [`EpicID`](#epicid) | **Deprecated**: This will be replaced by WorkItem hierarchyWidget. Deprecated in GitLab 17.5. |
| <a id="mutationcreateissuehealthstatus"></a>`healthStatus` | [`HealthStatus`](#healthstatus) | Desired health status. |
| <a id="mutationcreateissueiid"></a>`iid` | [`Int`](#int) | IID (internal ID) of a project issue. Only admins and project owners can modify. |
| <a id="mutationcreateissueiterationcadenceid"></a>`iterationCadenceId` | [`IterationsCadenceID`](#iterationscadenceid) | Global iteration cadence ID. Required when `iterationWildcardId` is provided. |
@ -4483,7 +4483,7 @@ Input type: `CreatePackagesProtectionRuleInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationcreatepackagesprotectionruleclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationcreatepackagesprotectionruleminimumaccesslevelfordelete"></a>`minimumAccessLevelForDelete` {{< icon name="warning-solid" >}} | [`PackagesProtectionRuleAccessLevelForDelete`](#packagesprotectionruleaccesslevelfordelete) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="mutationcreatepackagesprotectionruleminimumaccesslevelfordelete"></a>`minimumAccessLevelForDelete` {{< icon name="warning-solid" >}} | [`PackagesProtectionRuleAccessLevelForDelete`](#packagesprotectionruleaccesslevelfordelete) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="mutationcreatepackagesprotectionruleminimumaccesslevelforpush"></a>`minimumAccessLevelForPush` | [`PackagesProtectionRuleAccessLevel`](#packagesprotectionruleaccesslevel) | Minimum GitLab access required to push packages to the package registry. Valid values include `MAINTAINER`, `OWNER`, or `ADMIN`. If the value is `nil`, the default minimum access level is `DEVELOPER`. |
| <a id="mutationcreatepackagesprotectionrulepackagenamepattern"></a>`packageNamePattern` | [`String!`](#string) | Package name protected by the protection rule. For example, `@my-scope/my-package-*`. Wildcard character `*` allowed. |
| <a id="mutationcreatepackagesprotectionrulepackagetype"></a>`packageType` | [`PackagesProtectionRulePackageType!`](#packagesprotectionrulepackagetype) | Package type protected by the protection rule. For example, `NPM`, `PYPI`. |
@ -4840,7 +4840,7 @@ Input type: `DastProfileRunInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationdastprofilerunclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationdastprofilerunfullpath"></a>`fullPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated:** Full path not required to qualify Global ID. Deprecated in GitLab 14.5. |
| <a id="mutationdastprofilerunfullpath"></a>`fullPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated**: Full path not required to qualify Global ID. Deprecated in GitLab 14.5. |
| <a id="mutationdastprofilerunid"></a>`id` | [`DastProfileID!`](#dastprofileid) | ID of the profile to be used for the scan. |
#### Fields
@ -4865,7 +4865,7 @@ Input type: `DastProfileUpdateInput`
| <a id="mutationdastprofileupdatedastscannerprofileid"></a>`dastScannerProfileId` | [`DastScannerProfileID`](#dastscannerprofileid) | ID of the scanner profile to be associated. |
| <a id="mutationdastprofileupdatedastsiteprofileid"></a>`dastSiteProfileId` | [`DastSiteProfileID`](#dastsiteprofileid) | ID of the site profile to be associated. |
| <a id="mutationdastprofileupdatedescription"></a>`description` | [`String`](#string) | Description of the profile. Defaults to an empty string. |
| <a id="mutationdastprofileupdatefullpath"></a>`fullPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated:** Full path not required to qualify Global ID. Deprecated in GitLab 14.5. |
| <a id="mutationdastprofileupdatefullpath"></a>`fullPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated**: Full path not required to qualify Global ID. Deprecated in GitLab 14.5. |
| <a id="mutationdastprofileupdateid"></a>`id` | [`DastProfileID!`](#dastprofileid) | ID of the profile to be deleted. |
| <a id="mutationdastprofileupdatename"></a>`name` | [`String`](#string) | Name of the profile. |
| <a id="mutationdastprofileupdaterunafterupdate"></a>`runAfterUpdate` | [`Boolean`](#boolean) | Run scan using profile after update. Defaults to false. |
@ -4894,7 +4894,7 @@ Input type: `DastScannerProfileCreateInput`
| <a id="mutationdastscannerprofilecreatescantype"></a>`scanType` | [`DastScanTypeEnum`](#dastscantypeenum) | Indicates the type of DAST scan that will run. Either a Passive Scan or an Active Scan. |
| <a id="mutationdastscannerprofilecreateshowdebugmessages"></a>`showDebugMessages` | [`Boolean`](#boolean) | Indicates if debug messages should be included in DAST console output. True to include the debug messages. |
| <a id="mutationdastscannerprofilecreatespidertimeout"></a>`spiderTimeout` | [`Int`](#int) | Maximum number of minutes allowed for the spider to traverse the site. |
| <a id="mutationdastscannerprofilecreatetaglist"></a>`tagList` {{< icon name="warning-solid" >}} | [`[String!]`](#string) | **Deprecated:** Moved to DastProfile. Deprecated in GitLab 15.8. |
| <a id="mutationdastscannerprofilecreatetaglist"></a>`tagList` {{< icon name="warning-solid" >}} | [`[String!]`](#string) | **Deprecated**: Moved to DastProfile. Deprecated in GitLab 15.8. |
| <a id="mutationdastscannerprofilecreatetargettimeout"></a>`targetTimeout` | [`Int`](#int) | Maximum number of seconds allowed for the site under test to respond to a request. |
| <a id="mutationdastscannerprofilecreateuseajaxspider"></a>`useAjaxSpider` | [`Boolean`](#boolean) | Indicates if the AJAX spider should be used to crawl the target site. True to run the AJAX spider in addition to the traditional spider, and false to run only the traditional spider. |
@ -4905,7 +4905,7 @@ Input type: `DastScannerProfileCreateInput`
| <a id="mutationdastscannerprofilecreateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationdastscannerprofilecreatedastscannerprofile"></a>`dastScannerProfile` | [`DastScannerProfile`](#dastscannerprofile) | Created scanner profile. |
| <a id="mutationdastscannerprofilecreateerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
| <a id="mutationdastscannerprofilecreateid"></a>`id` {{< icon name="warning-solid" >}} | [`DastScannerProfileID`](#dastscannerprofileid) | **Deprecated:** use `dastScannerProfile` field. Deprecated in GitLab 14.10. |
| <a id="mutationdastscannerprofilecreateid"></a>`id` {{< icon name="warning-solid" >}} | [`DastScannerProfileID`](#dastscannerprofileid) | **Deprecated**: use `dastScannerProfile` field. Deprecated in GitLab 14.10. |
### `Mutation.dastScannerProfileDelete`
@ -4916,7 +4916,7 @@ Input type: `DastScannerProfileDeleteInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationdastscannerprofiledeleteclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationdastscannerprofiledeletefullpath"></a>`fullPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated:** Full path not required to qualify Global ID. Deprecated in GitLab 14.5. |
| <a id="mutationdastscannerprofiledeletefullpath"></a>`fullPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated**: Full path not required to qualify Global ID. Deprecated in GitLab 14.5. |
| <a id="mutationdastscannerprofiledeleteid"></a>`id` | [`DastScannerProfileID!`](#dastscannerprofileid) | ID of the scanner profile to be deleted. |
#### Fields
@ -4935,13 +4935,13 @@ Input type: `DastScannerProfileUpdateInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationdastscannerprofileupdateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationdastscannerprofileupdatefullpath"></a>`fullPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated:** Full path not required to qualify Global ID. Deprecated in GitLab 14.5. |
| <a id="mutationdastscannerprofileupdatefullpath"></a>`fullPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated**: Full path not required to qualify Global ID. Deprecated in GitLab 14.5. |
| <a id="mutationdastscannerprofileupdateid"></a>`id` | [`DastScannerProfileID!`](#dastscannerprofileid) | ID of the scanner profile to be updated. |
| <a id="mutationdastscannerprofileupdateprofilename"></a>`profileName` | [`String!`](#string) | Name of the scanner profile. |
| <a id="mutationdastscannerprofileupdatescantype"></a>`scanType` | [`DastScanTypeEnum`](#dastscantypeenum) | Indicates the type of DAST scan that will run. Either a Passive Scan or an Active Scan. |
| <a id="mutationdastscannerprofileupdateshowdebugmessages"></a>`showDebugMessages` | [`Boolean`](#boolean) | Indicates if debug messages should be included in DAST console output. True to include the debug messages. |
| <a id="mutationdastscannerprofileupdatespidertimeout"></a>`spiderTimeout` | [`Int!`](#int) | Maximum number of minutes allowed for the spider to traverse the site. |
| <a id="mutationdastscannerprofileupdatetaglist"></a>`tagList` {{< icon name="warning-solid" >}} | [`[String!]`](#string) | **Deprecated:** Moved to DastProfile. Deprecated in GitLab 15.8. |
| <a id="mutationdastscannerprofileupdatetaglist"></a>`tagList` {{< icon name="warning-solid" >}} | [`[String!]`](#string) | **Deprecated**: Moved to DastProfile. Deprecated in GitLab 15.8. |
| <a id="mutationdastscannerprofileupdatetargettimeout"></a>`targetTimeout` | [`Int!`](#int) | Maximum number of seconds allowed for the site under test to respond to a request. |
| <a id="mutationdastscannerprofileupdateuseajaxspider"></a>`useAjaxSpider` | [`Boolean`](#boolean) | Indicates if the AJAX spider should be used to crawl the target site. True to run the AJAX spider in addition to the traditional spider, and false to run only the traditional spider. |
@ -4952,7 +4952,7 @@ Input type: `DastScannerProfileUpdateInput`
| <a id="mutationdastscannerprofileupdateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationdastscannerprofileupdatedastscannerprofile"></a>`dastScannerProfile` | [`DastScannerProfile`](#dastscannerprofile) | Updated scanner profile. |
| <a id="mutationdastscannerprofileupdateerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
| <a id="mutationdastscannerprofileupdateid"></a>`id` {{< icon name="warning-solid" >}} | [`DastScannerProfileID`](#dastscannerprofileid) | **Deprecated:** use `dastScannerProfile` field. Deprecated in GitLab 14.10. |
| <a id="mutationdastscannerprofileupdateid"></a>`id` {{< icon name="warning-solid" >}} | [`DastScannerProfileID`](#dastscannerprofileid) | **Deprecated**: use `dastScannerProfile` field. Deprecated in GitLab 14.10. |
### `Mutation.dastSiteProfileCreate`
@ -4981,7 +4981,7 @@ Input type: `DastSiteProfileCreateInput`
| <a id="mutationdastsiteprofilecreateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationdastsiteprofilecreatedastsiteprofile"></a>`dastSiteProfile` | [`DastSiteProfile`](#dastsiteprofile) | Site Profile object. |
| <a id="mutationdastsiteprofilecreateerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
| <a id="mutationdastsiteprofilecreateid"></a>`id` {{< icon name="warning-solid" >}} | [`DastSiteProfileID`](#dastsiteprofileid) | **Deprecated:** use `dastSiteProfile.id` field. Deprecated in GitLab 14.10. |
| <a id="mutationdastsiteprofilecreateid"></a>`id` {{< icon name="warning-solid" >}} | [`DastSiteProfileID`](#dastsiteprofileid) | **Deprecated**: use `dastSiteProfile.id` field. Deprecated in GitLab 14.10. |
### `Mutation.dastSiteProfileDelete`
@ -4992,7 +4992,7 @@ Input type: `DastSiteProfileDeleteInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationdastsiteprofiledeleteclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationdastsiteprofiledeletefullpath"></a>`fullPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated:** Full path not required to qualify Global ID. Deprecated in GitLab 14.5. |
| <a id="mutationdastsiteprofiledeletefullpath"></a>`fullPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated**: Full path not required to qualify Global ID. Deprecated in GitLab 14.5. |
| <a id="mutationdastsiteprofiledeleteid"></a>`id` | [`DastSiteProfileID!`](#dastsiteprofileid) | ID of the site profile to be deleted. |
#### Fields
@ -5013,7 +5013,7 @@ Input type: `DastSiteProfileUpdateInput`
| <a id="mutationdastsiteprofileupdateauth"></a>`auth` | [`DastSiteProfileAuthInput`](#dastsiteprofileauthinput) | Parameters for authentication. |
| <a id="mutationdastsiteprofileupdateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationdastsiteprofileupdateexcludedurls"></a>`excludedUrls` | [`[String!]`](#string) | URLs to skip during an authenticated scan. |
| <a id="mutationdastsiteprofileupdatefullpath"></a>`fullPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated:** Full path not required to qualify Global ID. Deprecated in GitLab 14.5. |
| <a id="mutationdastsiteprofileupdatefullpath"></a>`fullPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated**: Full path not required to qualify Global ID. Deprecated in GitLab 14.5. |
| <a id="mutationdastsiteprofileupdateid"></a>`id` | [`DastSiteProfileID!`](#dastsiteprofileid) | ID of the site profile to be updated. |
| <a id="mutationdastsiteprofileupdateoptionalvariables"></a>`optionalVariables` | [`[JSON!]`](#json) | Optional variables that can be configured for DAST scans. |
| <a id="mutationdastsiteprofileupdateprofilename"></a>`profileName` | [`String!`](#string) | Name of the site profile. |
@ -5030,7 +5030,7 @@ Input type: `DastSiteProfileUpdateInput`
| <a id="mutationdastsiteprofileupdateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationdastsiteprofileupdatedastsiteprofile"></a>`dastSiteProfile` | [`DastSiteProfile`](#dastsiteprofile) | Site profile object. |
| <a id="mutationdastsiteprofileupdateerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
| <a id="mutationdastsiteprofileupdateid"></a>`id` {{< icon name="warning-solid" >}} | [`DastSiteProfileID`](#dastsiteprofileid) | **Deprecated:** use `dastSiteProfile.id` field. Deprecated in GitLab 14.10. |
| <a id="mutationdastsiteprofileupdateid"></a>`id` {{< icon name="warning-solid" >}} | [`DastSiteProfileID`](#dastsiteprofileid) | **Deprecated**: use `dastSiteProfile.id` field. Deprecated in GitLab 14.10. |
### `Mutation.dastSiteTokenCreate`
@ -5163,7 +5163,7 @@ Input type: `DeleteContainerProtectionTagRuleInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationdeletecontainerprotectiontagruleclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationdeletecontainerprotectiontagrulecontainerprotectiontagrule"></a>`containerProtectionTagRule` {{< icon name="warning-solid" >}} | [`ContainerProtectionTagRule`](#containerprotectiontagrule) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.8. |
| <a id="mutationdeletecontainerprotectiontagrulecontainerprotectiontagrule"></a>`containerProtectionTagRule` {{< icon name="warning-solid" >}} | [`ContainerProtectionTagRule`](#containerprotectiontagrule) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.8. |
| <a id="mutationdeletecontainerprotectiontagruleerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
### `Mutation.deleteConversationThread`
@ -5619,7 +5619,7 @@ Input type: `DestroySnippetInput`
### `Mutation.disableDevopsAdoptionNamespace`
**Status:** Beta.
**Status**: Beta.
Input type: `DisableDevopsAdoptionNamespaceInput`
@ -5738,7 +5738,7 @@ Input type: `EchoCreateInput`
### `Mutation.enableDevopsAdoptionNamespace`
**Status:** Beta.
**Status**: Beta.
Input type: `EnableDevopsAdoptionNamespaceInput`
@ -7168,7 +7168,7 @@ Input type: `IssueMoveListInput`
| ---- | ---- | ----------- |
| <a id="mutationissuemovelistboardid"></a>`boardId` | [`BoardID!`](#boardid) | Global ID of the board that the issue is in. |
| <a id="mutationissuemovelistclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationissuemovelistepicid"></a>`epicId` {{< icon name="warning-solid" >}} | [`EpicID`](#epicid) | **Deprecated:** This will be replaced by WorkItem hierarchyWidget. Deprecated in GitLab 17.5. |
| <a id="mutationissuemovelistepicid"></a>`epicId` {{< icon name="warning-solid" >}} | [`EpicID`](#epicid) | **Deprecated**: This will be replaced by WorkItem hierarchyWidget. Deprecated in GitLab 17.5. |
| <a id="mutationissuemovelistfromlistid"></a>`fromListId` | [`ID`](#id) | ID of the board list that the issue will be moved from. |
| <a id="mutationissuemovelistiid"></a>`iid` | [`String!`](#string) | IID of the issue to mutate. |
| <a id="mutationissuemovelistmoveafterid"></a>`moveAfterId` | [`ID`](#id) | ID of issue that should be placed after the current issue. |
@ -7285,7 +7285,7 @@ Input type: `IssueSetEpicInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationissuesetepicclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationissuesetepicepicid"></a>`epicId` {{< icon name="warning-solid" >}} | [`EpicID`](#epicid) | **Deprecated:** This will be replaced by WorkItem hierarchyWidget. Deprecated in GitLab 17.5. |
| <a id="mutationissuesetepicepicid"></a>`epicId` {{< icon name="warning-solid" >}} | [`EpicID`](#epicid) | **Deprecated**: This will be replaced by WorkItem hierarchyWidget. Deprecated in GitLab 17.5. |
| <a id="mutationissuesetepiciid"></a>`iid` | [`String!`](#string) | IID of the issue to mutate. |
| <a id="mutationissuesetepicprojectpath"></a>`projectPath` | [`ID!`](#id) | Project the issue to mutate is in. |
@ -7592,7 +7592,7 @@ Input type: `JiraImportStartInput`
| ---- | ---- | ----------- |
| <a id="mutationjiraimportstartclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationjiraimportstartjiraprojectkey"></a>`jiraProjectKey` | [`String!`](#string) | Project key of the importer Jira project. |
| <a id="mutationjiraimportstartjiraprojectname"></a>`jiraProjectName` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated:** Argument is not used. Deprecated in GitLab 17.4. |
| <a id="mutationjiraimportstartjiraprojectname"></a>`jiraProjectName` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated**: Argument is not used. Deprecated in GitLab 17.4. |
| <a id="mutationjiraimportstartprojectpath"></a>`projectPath` | [`ID!`](#id) | Project to import the Jira project into. |
| <a id="mutationjiraimportstartusersmapping"></a>`usersMapping` | [`[JiraUsersMappingInputType!]`](#jirausersmappinginputtype) | Mapping of Jira to GitLab users. |
@ -8563,7 +8563,7 @@ Input type: `NamespaceCreateRemoteDevelopmentClusterAgentMappingInput`
| ---- | ---- | ----------- |
| <a id="mutationnamespacecreateremotedevelopmentclusteragentmappingclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationnamespacecreateremotedevelopmentclusteragentmappingerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
| <a id="mutationnamespacecreateremotedevelopmentclusteragentmappingnamespaceclusteragentmapping"></a>`namespaceClusterAgentMapping` {{< icon name="warning-solid" >}} | [`NamespaceClusterAgentMapping`](#namespaceclusteragentmapping) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="mutationnamespacecreateremotedevelopmentclusteragentmappingnamespaceclusteragentmapping"></a>`namespaceClusterAgentMapping` {{< icon name="warning-solid" >}} | [`NamespaceClusterAgentMapping`](#namespaceclusteragentmapping) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.10. |
### `Mutation.namespaceDeleteRemoteDevelopmentClusterAgentMapping`
@ -8583,7 +8583,7 @@ Input type: `NamespaceDeleteRemoteDevelopmentClusterAgentMappingInput`
| ---- | ---- | ----------- |
| <a id="mutationnamespacedeleteremotedevelopmentclusteragentmappingclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationnamespacedeleteremotedevelopmentclusteragentmappingerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
| <a id="mutationnamespacedeleteremotedevelopmentclusteragentmappingnamespaceclusteragentmapping"></a>`namespaceClusterAgentMapping` {{< icon name="warning-solid" >}} | [`NamespaceClusterAgentMapping`](#namespaceclusteragentmapping) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.11. |
| <a id="mutationnamespacedeleteremotedevelopmentclusteragentmappingnamespaceclusteragentmapping"></a>`namespaceClusterAgentMapping` {{< icon name="warning-solid" >}} | [`NamespaceClusterAgentMapping`](#namespaceclusteragentmapping) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.11. |
### `Mutation.namespaceSettingsUpdate`
@ -8895,7 +8895,7 @@ Input type: `OrganizationUserUpdateInput`
| ---- | ---- | ----------- |
| <a id="mutationorganizationuserupdateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationorganizationuserupdateerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
| <a id="mutationorganizationuserupdateorganizationuser"></a>`organizationUser` {{< icon name="warning-solid" >}} | [`OrganizationUser`](#organizationuser) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.5. |
| <a id="mutationorganizationuserupdateorganizationuser"></a>`organizationUser` {{< icon name="warning-solid" >}} | [`OrganizationUser`](#organizationuser) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.5. |
### `Mutation.pagesMarkOnboardingComplete`
@ -8942,9 +8942,9 @@ Input type: `PipelineCreateInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationpipelinecreateasync"></a>`async` {{< icon name="warning-solid" >}} | [`Boolean`](#boolean) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.8. |
| <a id="mutationpipelinecreateasync"></a>`async` {{< icon name="warning-solid" >}} | [`Boolean`](#boolean) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.8. |
| <a id="mutationpipelinecreateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationpipelinecreateinputs"></a>`inputs` {{< icon name="warning-solid" >}} | [`[CiInputsInput!]`](#ciinputsinput) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="mutationpipelinecreateinputs"></a>`inputs` {{< icon name="warning-solid" >}} | [`[CiInputsInput!]`](#ciinputsinput) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="mutationpipelinecreateprojectpath"></a>`projectPath` | [`ID!`](#id) | Full path of the project that is triggering the pipeline. |
| <a id="mutationpipelinecreateref"></a>`ref` | [`String!`](#string) | Ref on which to run the pipeline. |
| <a id="mutationpipelinecreatevariables"></a>`variables` | [`[CiVariableInput!]`](#civariableinput) | Variables for the pipeline. |
@ -8956,7 +8956,7 @@ Input type: `PipelineCreateInput`
| <a id="mutationpipelinecreateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationpipelinecreateerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
| <a id="mutationpipelinecreatepipeline"></a>`pipeline` | [`Pipeline`](#pipeline) | Pipeline created after mutation. Null if `async: true`. |
| <a id="mutationpipelinecreaterequestid"></a>`requestId` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.8. |
| <a id="mutationpipelinecreaterequestid"></a>`requestId` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.8. |
### `Mutation.pipelineDestroy`
@ -9008,7 +9008,7 @@ Input type: `PipelineScheduleCreateInput`
| <a id="mutationpipelineschedulecreatecron"></a>`cron` | [`String!`](#string) | Cron expression of the pipeline schedule. |
| <a id="mutationpipelineschedulecreatecrontimezone"></a>`cronTimezone` | [`String`](#string) | Cron time zone supported by ActiveSupport::TimeZone. For example: "Pacific Time (US & Canada)" (default: "UTC"). |
| <a id="mutationpipelineschedulecreatedescription"></a>`description` | [`String!`](#string) | Description of the pipeline schedule. |
| <a id="mutationpipelineschedulecreateinputs"></a>`inputs` {{< icon name="warning-solid" >}} | [`[CiInputsInput!]`](#ciinputsinput) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="mutationpipelineschedulecreateinputs"></a>`inputs` {{< icon name="warning-solid" >}} | [`[CiInputsInput!]`](#ciinputsinput) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="mutationpipelineschedulecreateprojectpath"></a>`projectPath` | [`ID!`](#id) | Full path of the project the pipeline schedule is associated with. |
| <a id="mutationpipelineschedulecreateref"></a>`ref` | [`String!`](#string) | Ref of the pipeline schedule. |
| <a id="mutationpipelineschedulecreatevariables"></a>`variables` | [`[PipelineScheduleVariableInput!]`](#pipelineschedulevariableinput) | Variables for the pipeline schedule. |
@ -9091,7 +9091,7 @@ Input type: `PipelineScheduleUpdateInput`
| <a id="mutationpipelinescheduleupdatecrontimezone"></a>`cronTimezone` | [`String`](#string) | Cron time zone supported by ActiveSupport::TimeZone. For example: "Pacific Time (US & Canada)" (default: "UTC"). |
| <a id="mutationpipelinescheduleupdatedescription"></a>`description` | [`String`](#string) | Description of the pipeline schedule. |
| <a id="mutationpipelinescheduleupdateid"></a>`id` | [`CiPipelineScheduleID!`](#cipipelinescheduleid) | ID of the pipeline schedule to mutate. |
| <a id="mutationpipelinescheduleupdateinputs"></a>`inputs` {{< icon name="warning-solid" >}} | [`[CiInputsInput!]`](#ciinputsinput) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.11. |
| <a id="mutationpipelinescheduleupdateinputs"></a>`inputs` {{< icon name="warning-solid" >}} | [`[CiInputsInput!]`](#ciinputsinput) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.11. |
| <a id="mutationpipelinescheduleupdateref"></a>`ref` | [`String`](#string) | Ref of the pipeline schedule. |
| <a id="mutationpipelinescheduleupdatevariables"></a>`variables` | [`[PipelineScheduleVariableInput!]`](#pipelineschedulevariableinput) | Variables for the pipeline schedule. |
@ -9263,7 +9263,7 @@ Input type: `ProjectCiCdSettingsUpdateInput`
| <a id="mutationprojectcicdsettingsupdateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationprojectcicdsettingsupdatefullpath"></a>`fullPath` | [`ID!`](#id) | Full Path of the project the settings belong to. |
| <a id="mutationprojectcicdsettingsupdateinboundjobtokenscopeenabled"></a>`inboundJobTokenScopeEnabled` | [`Boolean`](#boolean) | Indicates CI/CD job tokens generated in other projects have restricted access to this project. |
| <a id="mutationprojectcicdsettingsupdatejobtokenscopeenabled"></a>`jobTokenScopeEnabled` {{< icon name="warning-solid" >}} | [`Boolean`](#boolean) | **Deprecated:** Outbound job token scope is being removed. This field can now only be set to false. Deprecated in GitLab 16.0. |
| <a id="mutationprojectcicdsettingsupdatejobtokenscopeenabled"></a>`jobTokenScopeEnabled` {{< icon name="warning-solid" >}} | [`Boolean`](#boolean) | **Deprecated**: Outbound job token scope is being removed. This field can now only be set to false. Deprecated in GitLab 16.0. |
| <a id="mutationprojectcicdsettingsupdatekeeplatestartifact"></a>`keepLatestArtifact` | [`Boolean`](#boolean) | Indicates if the latest artifact should be kept for the project. |
| <a id="mutationprojectcicdsettingsupdatemergepipelinesenabled"></a>`mergePipelinesEnabled` | [`Boolean`](#boolean) | Indicates if merged results pipelines are enabled for the project. |
| <a id="mutationprojectcicdsettingsupdatemergetrainsenabled"></a>`mergeTrainsEnabled` | [`Boolean`](#boolean) | Indicates if merge trains are enabled for the project. |
@ -10200,9 +10200,9 @@ Input type: `RunnerCreateInput`
| <a id="mutationrunnercreatemaintenancenote"></a>`maintenanceNote` | [`String`](#string) | Runner's maintenance notes. |
| <a id="mutationrunnercreatemaximumtimeout"></a>`maximumTimeout` | [`Int`](#int) | Maximum timeout (in seconds) for jobs processed by the runner. |
| <a id="mutationrunnercreatepaused"></a>`paused` | [`Boolean`](#boolean) | Indicates the runner is not allowed to receive jobs. |
| <a id="mutationrunnercreateprivateprojectsminutescostfactor"></a>`privateProjectsMinutesCostFactor` {{< icon name="warning-solid" >}} | [`Float`](#float) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.7. |
| <a id="mutationrunnercreateprivateprojectsminutescostfactor"></a>`privateProjectsMinutesCostFactor` {{< icon name="warning-solid" >}} | [`Float`](#float) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.7. |
| <a id="mutationrunnercreateprojectid"></a>`projectId` | [`ProjectID`](#projectid) | Global ID of the project that the runner is created in (valid only for project runner). |
| <a id="mutationrunnercreatepublicprojectsminutescostfactor"></a>`publicProjectsMinutesCostFactor` {{< icon name="warning-solid" >}} | [`Float`](#float) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.7. |
| <a id="mutationrunnercreatepublicprojectsminutescostfactor"></a>`publicProjectsMinutesCostFactor` {{< icon name="warning-solid" >}} | [`Float`](#float) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.7. |
| <a id="mutationrunnercreaterununtagged"></a>`runUntagged` | [`Boolean`](#boolean) | Indicates the runner is able to run untagged jobs. |
| <a id="mutationrunnercreaterunnertype"></a>`runnerType` | [`CiRunnerType!`](#cirunnertype) | Type of the runner to create. |
| <a id="mutationrunnercreatetaglist"></a>`tagList` | [`[String!]`](#string) | Tags associated with the runner. |
@ -10266,7 +10266,7 @@ Input type: `RunnerUpdateInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationrunnerupdateaccesslevel"></a>`accessLevel` | [`CiRunnerAccessLevel`](#cirunneraccesslevel) | Access level of the runner. |
| <a id="mutationrunnerupdateactive"></a>`active` {{< icon name="warning-solid" >}} | [`Boolean`](#boolean) | **Deprecated:** This was renamed. Please use `paused`. Deprecated in GitLab 14.8. |
| <a id="mutationrunnerupdateactive"></a>`active` {{< icon name="warning-solid" >}} | [`Boolean`](#boolean) | **Deprecated**: This was renamed. Please use `paused`. Deprecated in GitLab 14.8. |
| <a id="mutationrunnerupdateassociatedprojects"></a>`associatedProjects` | [`[ProjectID!]`](#projectid) | Projects associated with the runner. Available only for project runners. |
| <a id="mutationrunnerupdateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationrunnerupdatedescription"></a>`description` | [`String`](#string) | Description of the runner. |
@ -10275,8 +10275,8 @@ Input type: `RunnerUpdateInput`
| <a id="mutationrunnerupdatemaintenancenote"></a>`maintenanceNote` | [`String`](#string) | Runner's maintenance notes. |
| <a id="mutationrunnerupdatemaximumtimeout"></a>`maximumTimeout` | [`Int`](#int) | Maximum timeout (in seconds) for jobs processed by the runner. |
| <a id="mutationrunnerupdatepaused"></a>`paused` | [`Boolean`](#boolean) | Indicates the runner is not allowed to receive jobs. |
| <a id="mutationrunnerupdateprivateprojectsminutescostfactor"></a>`privateProjectsMinutesCostFactor` {{< icon name="warning-solid" >}} | [`Float`](#float) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.7. |
| <a id="mutationrunnerupdatepublicprojectsminutescostfactor"></a>`publicProjectsMinutesCostFactor` {{< icon name="warning-solid" >}} | [`Float`](#float) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.7. |
| <a id="mutationrunnerupdateprivateprojectsminutescostfactor"></a>`privateProjectsMinutesCostFactor` {{< icon name="warning-solid" >}} | [`Float`](#float) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.7. |
| <a id="mutationrunnerupdatepublicprojectsminutescostfactor"></a>`publicProjectsMinutesCostFactor` {{< icon name="warning-solid" >}} | [`Float`](#float) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.7. |
| <a id="mutationrunnerupdaterununtagged"></a>`runUntagged` | [`Boolean`](#boolean) | Indicates the runner is able to run untagged jobs. |
| <a id="mutationrunnerupdatetaglist"></a>`tagList` | [`[String!]`](#string) | Tags associated with the runner. |
@ -10410,7 +10410,7 @@ Input type: `ScanExecutionPolicyCommitInput`
| <a id="mutationscanexecutionpolicycommitname"></a>`name` | [`String!`](#string) | Name of the policy. If the name is null, the `name` field from `policy_yaml` is used. |
| <a id="mutationscanexecutionpolicycommitoperationmode"></a>`operationMode` | [`MutationOperationMode!`](#mutationoperationmode) | Changes the operation mode. |
| <a id="mutationscanexecutionpolicycommitpolicyyaml"></a>`policyYaml` | [`String!`](#string) | YAML snippet of the policy. |
| <a id="mutationscanexecutionpolicycommitprojectpath"></a>`projectPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated:** Use `fullPath`. Deprecated in GitLab 14.10. |
| <a id="mutationscanexecutionpolicycommitprojectpath"></a>`projectPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated**: Use `fullPath`. Deprecated in GitLab 14.10. |
#### Fields
@ -10600,7 +10600,7 @@ Input type: `SecurityPolicyProjectAssignInput`
| ---- | ---- | ----------- |
| <a id="mutationsecuritypolicyprojectassignclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationsecuritypolicyprojectassignfullpath"></a>`fullPath` | [`String`](#string) | Full path of the project or group. |
| <a id="mutationsecuritypolicyprojectassignprojectpath"></a>`projectPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated:** Use `fullPath`. Deprecated in GitLab 14.10. |
| <a id="mutationsecuritypolicyprojectassignprojectpath"></a>`projectPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated**: Use `fullPath`. Deprecated in GitLab 14.10. |
| <a id="mutationsecuritypolicyprojectassignsecuritypolicyprojectid"></a>`securityPolicyProjectId` | [`ProjectID!`](#projectid) | ID of the security policy project. |
#### Fields
@ -10622,7 +10622,7 @@ Input type: `SecurityPolicyProjectCreateInput`
| ---- | ---- | ----------- |
| <a id="mutationsecuritypolicyprojectcreateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationsecuritypolicyprojectcreatefullpath"></a>`fullPath` | [`String`](#string) | Full path of the project or group. |
| <a id="mutationsecuritypolicyprojectcreateprojectpath"></a>`projectPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated:** Use `fullPath`. Deprecated in GitLab 14.10. |
| <a id="mutationsecuritypolicyprojectcreateprojectpath"></a>`projectPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated**: Use `fullPath`. Deprecated in GitLab 14.10. |
#### Fields
@ -10634,7 +10634,7 @@ Input type: `SecurityPolicyProjectCreateInput`
### `Mutation.securityPolicyProjectCreateAsync`
**Status:** Experiment. Creates and assigns a security policy project for the given project or group (`full_path`) async.
**Status**: Experiment. Creates and assigns a security policy project for the given project or group (`full_path`) async.
{{< details >}}
**Introduced** in GitLab 17.3.
@ -10669,7 +10669,7 @@ Input type: `SecurityPolicyProjectUnassignInput`
| ---- | ---- | ----------- |
| <a id="mutationsecuritypolicyprojectunassignclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationsecuritypolicyprojectunassignfullpath"></a>`fullPath` | [`String`](#string) | Full path of the project or group. |
| <a id="mutationsecuritypolicyprojectunassignprojectpath"></a>`projectPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated:** Use `fullPath`. Deprecated in GitLab 14.10. |
| <a id="mutationsecuritypolicyprojectunassignprojectpath"></a>`projectPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated**: Use `fullPath`. Deprecated in GitLab 14.10. |
#### Fields
@ -11546,7 +11546,7 @@ Input type: `UpdateContainerExpirationPolicyInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationupdatecontainerexpirationpolicyclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationupdatecontainerexpirationpolicycontainerexpirationpolicy"></a>`containerExpirationPolicy` {{< icon name="warning-solid" >}} | [`ContainerExpirationPolicy`](#containerexpirationpolicy) | **Deprecated:** Use `container_tags_expiration_policy`. Deprecated in GitLab 17.5. |
| <a id="mutationupdatecontainerexpirationpolicycontainerexpirationpolicy"></a>`containerExpirationPolicy` {{< icon name="warning-solid" >}} | [`ContainerExpirationPolicy`](#containerexpirationpolicy) | **Deprecated**: Use `container_tags_expiration_policy`. Deprecated in GitLab 17.5. |
| <a id="mutationupdatecontainerexpirationpolicycontainertagsexpirationpolicy"></a>`containerTagsExpirationPolicy` | [`ContainerTagsExpirationPolicy`](#containertagsexpirationpolicy) | Container tags expiration policy after mutation. |
| <a id="mutationupdatecontainerexpirationpolicyerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
@ -11591,16 +11591,16 @@ Input type: `UpdateContainerProtectionTagRuleInput`
| ---- | ---- | ----------- |
| <a id="mutationupdatecontainerprotectiontagruleclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationupdatecontainerprotectiontagruleid"></a>`id` | [`ContainerRegistryProtectionTagRuleID!`](#containerregistryprotectiontagruleid) | Global ID of the tag protection rule to update. |
| <a id="mutationupdatecontainerprotectiontagruleminimumaccesslevelfordelete"></a>`minimumAccessLevelForDelete` {{< icon name="warning-solid" >}} | [`ContainerProtectionTagRuleAccessLevel`](#containerprotectiontagruleaccesslevel) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.8. |
| <a id="mutationupdatecontainerprotectiontagruleminimumaccesslevelforpush"></a>`minimumAccessLevelForPush` {{< icon name="warning-solid" >}} | [`ContainerProtectionTagRuleAccessLevel`](#containerprotectiontagruleaccesslevel) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.8. |
| <a id="mutationupdatecontainerprotectiontagruletagnamepattern"></a>`tagNamePattern` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.8. |
| <a id="mutationupdatecontainerprotectiontagruleminimumaccesslevelfordelete"></a>`minimumAccessLevelForDelete` {{< icon name="warning-solid" >}} | [`ContainerProtectionTagRuleAccessLevel`](#containerprotectiontagruleaccesslevel) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.8. |
| <a id="mutationupdatecontainerprotectiontagruleminimumaccesslevelforpush"></a>`minimumAccessLevelForPush` {{< icon name="warning-solid" >}} | [`ContainerProtectionTagRuleAccessLevel`](#containerprotectiontagruleaccesslevel) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.8. |
| <a id="mutationupdatecontainerprotectiontagruletagnamepattern"></a>`tagNamePattern` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.8. |
#### Fields
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationupdatecontainerprotectiontagruleclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationupdatecontainerprotectiontagrulecontainerprotectiontagrule"></a>`containerProtectionTagRule` {{< icon name="warning-solid" >}} | [`ContainerProtectionTagRule`](#containerprotectiontagrule) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.8. |
| <a id="mutationupdatecontainerprotectiontagrulecontainerprotectiontagrule"></a>`containerProtectionTagRule` {{< icon name="warning-solid" >}} | [`ContainerProtectionTagRule`](#containerprotectiontagrule) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.8. |
| <a id="mutationupdatecontainerprotectiontagruleerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
### `Mutation.updateDependencyProxyImageTtlGroupPolicy`
@ -11781,7 +11781,7 @@ Input type: `UpdateIssueInput`
| <a id="mutationupdateissueconfidential"></a>`confidential` | [`Boolean`](#boolean) | Indicates the issue is confidential. |
| <a id="mutationupdateissuedescription"></a>`description` | [`String`](#string) | Description of the issue. |
| <a id="mutationupdateissueduedate"></a>`dueDate` | [`ISO8601Date`](#iso8601date) | Due date of the issue. |
| <a id="mutationupdateissueepicid"></a>`epicId` {{< icon name="warning-solid" >}} | [`EpicID`](#epicid) | **Deprecated:** This will be replaced by WorkItem hierarchyWidget. Deprecated in GitLab 17.5. |
| <a id="mutationupdateissueepicid"></a>`epicId` {{< icon name="warning-solid" >}} | [`EpicID`](#epicid) | **Deprecated**: This will be replaced by WorkItem hierarchyWidget. Deprecated in GitLab 17.5. |
| <a id="mutationupdateissuehealthstatus"></a>`healthStatus` | [`HealthStatus`](#healthstatus) | Desired health status. |
| <a id="mutationupdateissueiid"></a>`iid` | [`String!`](#string) | IID of the issue to mutate. |
| <a id="mutationupdateissuelabelids"></a>`labelIds` | [`[ID!]`](#id) | IDs of labels to be set. Replaces existing issue labels. |
@ -11837,7 +11837,7 @@ Input type: `UpdateNamespacePackageSettingsInput`
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationupdatenamespacepackagesettingsauditeventsenabled"></a>`auditEventsEnabled` {{< icon name="warning-solid" >}} | [`Boolean`](#boolean) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="mutationupdatenamespacepackagesettingsauditeventsenabled"></a>`auditEventsEnabled` {{< icon name="warning-solid" >}} | [`Boolean`](#boolean) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="mutationupdatenamespacepackagesettingsclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationupdatenamespacepackagesettingsgenericduplicateexceptionregex"></a>`genericDuplicateExceptionRegex` | [`UntrustedRegexp`](#untrustedregexp) | When generic_duplicates_allowed is false, you can publish duplicate packages with names that match this regex. Otherwise, this setting has no effect. |
| <a id="mutationupdatenamespacepackagesettingsgenericduplicatesallowed"></a>`genericDuplicatesAllowed` | [`Boolean`](#boolean) | Indicates whether duplicate generic packages are allowed for the namespace. |
@ -11922,7 +11922,7 @@ Input type: `UpdatePackagesProtectionRuleInput`
| ---- | ---- | ----------- |
| <a id="mutationupdatepackagesprotectionruleclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationupdatepackagesprotectionruleid"></a>`id` | [`PackagesProtectionRuleID!`](#packagesprotectionruleid) | Global ID of the package protection rule to be updated. |
| <a id="mutationupdatepackagesprotectionruleminimumaccesslevelfordelete"></a>`minimumAccessLevelForDelete` {{< icon name="warning-solid" >}} | [`PackagesProtectionRuleAccessLevelForDelete`](#packagesprotectionruleaccesslevelfordelete) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="mutationupdatepackagesprotectionruleminimumaccesslevelfordelete"></a>`minimumAccessLevelForDelete` {{< icon name="warning-solid" >}} | [`PackagesProtectionRuleAccessLevelForDelete`](#packagesprotectionruleaccesslevelfordelete) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="mutationupdatepackagesprotectionruleminimumaccesslevelforpush"></a>`minimumAccessLevelForPush` | [`PackagesProtectionRuleAccessLevel`](#packagesprotectionruleaccesslevel) | Minimum GitLab access required to push packages to the package registry. Valid values include `MAINTAINER`, `OWNER`, or `ADMIN`. If the value is `nil`, the default minimum access level is `DEVELOPER`. |
| <a id="mutationupdatepackagesprotectionrulepackagenamepattern"></a>`packageNamePattern` | [`String`](#string) | Package name protected by the protection rule. For example, `@my-scope/my-package-*`. Wildcard character `*` allowed. |
| <a id="mutationupdatepackagesprotectionrulepackagetype"></a>`packageType` | [`PackagesProtectionRulePackageType`](#packagesprotectionrulepackagetype) | Package type protected by the protection rule. For example, `NPM`, `PYPI`. |
@ -11945,7 +11945,7 @@ Input type: `UpdateRequirementInput`
| ---- | ---- | ----------- |
| <a id="mutationupdaterequirementclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationupdaterequirementdescription"></a>`description` | [`String`](#string) | Description of the requirement. |
| <a id="mutationupdaterequirementiid"></a>`iid` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated:** Use work_item_iid instead. Deprecated in GitLab 15.8. |
| <a id="mutationupdaterequirementiid"></a>`iid` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated**: Use work_item_iid instead. Deprecated in GitLab 15.8. |
| <a id="mutationupdaterequirementlasttestreportstate"></a>`lastTestReportState` | [`TestReportState`](#testreportstate) | Creates a test report for the requirement with the given state. |
| <a id="mutationupdaterequirementprojectpath"></a>`projectPath` | [`ID!`](#id) | Full project path the requirement is associated with. |
| <a id="mutationupdaterequirementstate"></a>`state` | [`RequirementState`](#requirementstate) | State of the requirement. |
@ -12194,8 +12194,8 @@ Input type: `UserPreferencesUpdateInput`
| <a id="mutationuserpreferencesupdateissuessort"></a>`issuesSort` | [`IssueSort`](#issuesort) | Sort order for issue lists. |
| <a id="mutationuserpreferencesupdatemergerequestdashboardlisttype"></a>`mergeRequestDashboardListType` | [`MergeRequestsDashboardListType`](#mergerequestsdashboardlisttype) | Merge request dashboard list rendering type. |
| <a id="mutationuserpreferencesupdatemergerequestssort"></a>`mergeRequestsSort` | [`MergeRequestSort`](#mergerequestsort) | Sort order for issue lists. |
| <a id="mutationuserpreferencesupdateorganizationgroupsprojectsdisplay"></a>`organizationGroupsProjectsDisplay` {{< icon name="warning-solid" >}} | [`OrganizationGroupProjectDisplay`](#organizationgroupprojectdisplay) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.2. |
| <a id="mutationuserpreferencesupdateorganizationgroupsprojectssort"></a>`organizationGroupsProjectsSort` {{< icon name="warning-solid" >}} | [`OrganizationGroupProjectSort`](#organizationgroupprojectsort) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.2. |
| <a id="mutationuserpreferencesupdateorganizationgroupsprojectsdisplay"></a>`organizationGroupsProjectsDisplay` {{< icon name="warning-solid" >}} | [`OrganizationGroupProjectDisplay`](#organizationgroupprojectdisplay) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.2. |
| <a id="mutationuserpreferencesupdateorganizationgroupsprojectssort"></a>`organizationGroupsProjectsSort` {{< icon name="warning-solid" >}} | [`OrganizationGroupProjectSort`](#organizationgroupprojectsort) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.2. |
| <a id="mutationuserpreferencesupdateprojectssort"></a>`projectsSort` | [`ProjectSort`](#projectsort) | Sort order for projects. |
| <a id="mutationuserpreferencesupdateuseworkitemsview"></a>`useWorkItemsView` | [`Boolean`](#boolean) | Use work item view instead of legacy issue view. |
| <a id="mutationuserpreferencesupdatevisibilitypipelineidtype"></a>`visibilityPipelineIdType` | [`VisibilityPipelineIdType`](#visibilitypipelineidtype) | Determines whether the pipeline list shows ID or IID. |
@ -12751,8 +12751,8 @@ Input type: `WorkItemCreateInput`
| <a id="mutationworkitemcreateconfidential"></a>`confidential` | [`Boolean`](#boolean) | Sets the work item confidentiality. |
| <a id="mutationworkitemcreatecreatedat"></a>`createdAt` | [`Time`](#time) | Timestamp when the work item was created. Available only for admins and project owners. |
| <a id="mutationworkitemcreatecrmcontactswidget"></a>`crmContactsWidget` | [`WorkItemWidgetCrmContactsCreateInput`](#workitemwidgetcrmcontactscreateinput) | Input for CRM contacts widget. |
| <a id="mutationworkitemcreatecustomfieldswidget"></a>`customFieldsWidget` {{< icon name="warning-solid" >}} | [`[WorkItemWidgetCustomFieldValueInputType!]`](#workitemwidgetcustomfieldvalueinputtype) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="mutationworkitemcreatedescription"></a>`description` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated:** use description widget instead. Deprecated in GitLab 16.9. |
| <a id="mutationworkitemcreatecustomfieldswidget"></a>`customFieldsWidget` {{< icon name="warning-solid" >}} | [`[WorkItemWidgetCustomFieldValueInputType!]`](#workitemwidgetcustomfieldvalueinputtype) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="mutationworkitemcreatedescription"></a>`description` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated**: use description widget instead. Deprecated in GitLab 16.9. |
| <a id="mutationworkitemcreatedescriptionwidget"></a>`descriptionWidget` | [`WorkItemWidgetDescriptionInput`](#workitemwidgetdescriptioninput) | Input for description widget. |
| <a id="mutationworkitemcreatediscussionstoresolve"></a>`discussionsToResolve` | [`WorkItemResolveDiscussionsInput`](#workitemresolvediscussionsinput) | Information required to resolve discussions in a noteable, when the work item is created. |
| <a id="mutationworkitemcreatehealthstatuswidget"></a>`healthStatusWidget` | [`WorkItemWidgetHealthStatusInput`](#workitemwidgethealthstatusinput) | Input for health status widget. |
@ -12762,11 +12762,11 @@ Input type: `WorkItemCreateInput`
| <a id="mutationworkitemcreatelinkeditemswidget"></a>`linkedItemsWidget` | [`WorkItemWidgetLinkedItemsCreateInput`](#workitemwidgetlinkeditemscreateinput) | Input for linked items widget. |
| <a id="mutationworkitemcreatemilestonewidget"></a>`milestoneWidget` | [`WorkItemWidgetMilestoneInput`](#workitemwidgetmilestoneinput) | Input for milestone widget. |
| <a id="mutationworkitemcreatenamespacepath"></a>`namespacePath` | [`ID`](#id) | Full path of the namespace(project or group) the work item is created in. |
| <a id="mutationworkitemcreateprojectpath"></a>`projectPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated:** Please use namespacePath instead. That will cover for both projects and groups. Deprecated in GitLab 15.10. |
| <a id="mutationworkitemcreateprojectpath"></a>`projectPath` {{< icon name="warning-solid" >}} | [`ID`](#id) | **Deprecated**: Please use namespacePath instead. That will cover for both projects and groups. Deprecated in GitLab 15.10. |
| <a id="mutationworkitemcreatestartandduedatewidget"></a>`startAndDueDateWidget` | [`WorkItemWidgetStartAndDueDateUpdateInput`](#workitemwidgetstartandduedateupdateinput) | Input for start and due date widget. |
| <a id="mutationworkitemcreatestatuswidget"></a>`statusWidget` {{< icon name="warning-solid" >}} | [`WorkItemWidgetStatusInput`](#workitemwidgetstatusinput) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.11. |
| <a id="mutationworkitemcreatestatuswidget"></a>`statusWidget` {{< icon name="warning-solid" >}} | [`WorkItemWidgetStatusInput`](#workitemwidgetstatusinput) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.11. |
| <a id="mutationworkitemcreatetitle"></a>`title` | [`String!`](#string) | Title of the work item. |
| <a id="mutationworkitemcreatevulnerabilityid"></a>`vulnerabilityId` {{< icon name="warning-solid" >}} | [`VulnerabilityID`](#vulnerabilityid) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.9. |
| <a id="mutationworkitemcreatevulnerabilityid"></a>`vulnerabilityId` {{< icon name="warning-solid" >}} | [`VulnerabilityID`](#vulnerabilityid) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.9. |
| <a id="mutationworkitemcreateweightwidget"></a>`weightWidget` | [`WorkItemWidgetWeightInput`](#workitemwidgetweightinput) | Input for weight widget. |
| <a id="mutationworkitemcreateworkitemtypeid"></a>`workItemTypeId` | [`WorkItemsTypeID!`](#workitemstypeid) | Global ID of a work item type. |
@ -12831,7 +12831,7 @@ Input type: `WorkItemDeleteInput`
| <a id="mutationworkitemdeleteclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationworkitemdeleteerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
| <a id="mutationworkitemdeletenamespace"></a>`namespace` | [`Namespace`](#namespace) | Namespace the deleted work item belonged to. |
| <a id="mutationworkitemdeleteproject"></a>`project` {{< icon name="warning-solid" >}} | [`Project`](#project) | **Deprecated:** Use `namespace`. Deprecated in GitLab 16.9. |
| <a id="mutationworkitemdeleteproject"></a>`project` {{< icon name="warning-solid" >}} | [`Project`](#project) | **Deprecated**: Use `namespace`. Deprecated in GitLab 16.9. |
### `Mutation.workItemExport`
@ -12958,7 +12958,7 @@ Input type: `WorkItemUpdateInput`
| <a id="mutationworkitemupdateconfidential"></a>`confidential` | [`Boolean`](#boolean) | Sets the work item confidentiality. |
| <a id="mutationworkitemupdatecrmcontactswidget"></a>`crmContactsWidget` | [`WorkItemWidgetCrmContactsUpdateInput`](#workitemwidgetcrmcontactsupdateinput) | Input for CRM contacts widget. |
| <a id="mutationworkitemupdatecurrentusertodoswidget"></a>`currentUserTodosWidget` | [`WorkItemWidgetCurrentUserTodosInput`](#workitemwidgetcurrentusertodosinput) | Input for to-dos widget. |
| <a id="mutationworkitemupdatecustomfieldswidget"></a>`customFieldsWidget` {{< icon name="warning-solid" >}} | [`[WorkItemWidgetCustomFieldValueInputType!]`](#workitemwidgetcustomfieldvalueinputtype) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="mutationworkitemupdatecustomfieldswidget"></a>`customFieldsWidget` {{< icon name="warning-solid" >}} | [`[WorkItemWidgetCustomFieldValueInputType!]`](#workitemwidgetcustomfieldvalueinputtype) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="mutationworkitemupdatedescriptionwidget"></a>`descriptionWidget` | [`WorkItemWidgetDescriptionInput`](#workitemwidgetdescriptioninput) | Input for description widget. |
| <a id="mutationworkitemupdatehealthstatuswidget"></a>`healthStatusWidget` | [`WorkItemWidgetHealthStatusInput`](#workitemwidgethealthstatusinput) | Input for health status widget. |
| <a id="mutationworkitemupdatehierarchywidget"></a>`hierarchyWidget` | [`WorkItemWidgetHierarchyUpdateInput`](#workitemwidgethierarchyupdateinput) | Input for hierarchy widget. |
@ -12971,7 +12971,7 @@ Input type: `WorkItemUpdateInput`
| <a id="mutationworkitemupdateprogresswidget"></a>`progressWidget` | [`WorkItemWidgetProgressInput`](#workitemwidgetprogressinput) | Input for progress widget. |
| <a id="mutationworkitemupdatestartandduedatewidget"></a>`startAndDueDateWidget` | [`WorkItemWidgetStartAndDueDateUpdateInput`](#workitemwidgetstartandduedateupdateinput) | Input for start and due date widget. |
| <a id="mutationworkitemupdatestateevent"></a>`stateEvent` | [`WorkItemStateEvent`](#workitemstateevent) | Close or reopen a work item. |
| <a id="mutationworkitemupdatestatuswidget"></a>`statusWidget` {{< icon name="warning-solid" >}} | [`WorkItemWidgetStatusInput`](#workitemwidgetstatusinput) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.11. |
| <a id="mutationworkitemupdatestatuswidget"></a>`statusWidget` {{< icon name="warning-solid" >}} | [`WorkItemWidgetStatusInput`](#workitemwidgetstatusinput) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.11. |
| <a id="mutationworkitemupdatetimetrackingwidget"></a>`timeTrackingWidget` | [`WorkItemWidgetTimeTrackingInput`](#workitemwidgettimetrackinginput) | Input for time tracking widget. |
| <a id="mutationworkitemupdatetitle"></a>`title` | [`String`](#string) | Title of the work item. |
| <a id="mutationworkitemupdateverificationstatuswidget"></a>`verificationStatusWidget` | [`VerificationStatusInput`](#verificationstatusinput) | Input for verification status widget. |
@ -13106,13 +13106,13 @@ Input type: `WorkspaceCreateInput`
| <a id="mutationworkspacecreateclusteragentid"></a>`clusterAgentId` | [`ClustersAgentID!`](#clustersagentid) | GlobalID of the cluster agent the created workspace will be associated with. |
| <a id="mutationworkspacecreatedesiredstate"></a>`desiredState` | [`String!`](#string) | Desired state of the created workspace. |
| <a id="mutationworkspacecreatedevfilepath"></a>`devfilePath` | [`String`](#string) | Project path containing the devfile used to configure the workspace. If not provided, the GitLab default devfile is used. |
| <a id="mutationworkspacecreatedevfileref"></a>`devfileRef` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated:** Argument is renamed to project_ref. Deprecated in GitLab 17.8. |
| <a id="mutationworkspacecreateeditor"></a>`editor` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated:** Argument is not used. Deprecated in GitLab 17.5. |
| <a id="mutationworkspacecreatemaxhoursbeforetermination"></a>`maxHoursBeforeTermination` {{< icon name="warning-solid" >}} | [`Int`](#int) | **Deprecated:** Field is not used. Deprecated in GitLab 17.9. |
| <a id="mutationworkspacecreatedevfileref"></a>`devfileRef` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated**: Argument is renamed to project_ref. Deprecated in GitLab 17.8. |
| <a id="mutationworkspacecreateeditor"></a>`editor` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated**: Argument is not used. Deprecated in GitLab 17.5. |
| <a id="mutationworkspacecreatemaxhoursbeforetermination"></a>`maxHoursBeforeTermination` {{< icon name="warning-solid" >}} | [`Int`](#int) | **Deprecated**: Field is not used. Deprecated in GitLab 17.9. |
| <a id="mutationworkspacecreateprojectid"></a>`projectId` | [`ProjectID!`](#projectid) | ID of the project that will provide the Devfile for the created workspace. |
| <a id="mutationworkspacecreateprojectref"></a>`projectRef` | [`String`](#string) | Project repo git ref. |
| <a id="mutationworkspacecreatevariables"></a>`variables` {{< icon name="warning-solid" >}} | [`[WorkspaceVariableInput!]`](#workspacevariableinput) | **Deprecated:** Argument is renamed to workspace_variables. Deprecated in GitLab 18.0. |
| <a id="mutationworkspacecreateworkspacevariables"></a>`workspaceVariables` {{< icon name="warning-solid" >}} | [`[WorkspaceVariableInput!]`](#workspacevariableinput) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 18.0. |
| <a id="mutationworkspacecreatevariables"></a>`variables` {{< icon name="warning-solid" >}} | [`[WorkspaceVariableInput!]`](#workspacevariableinput) | **Deprecated**: Argument is renamed to workspace_variables. Deprecated in GitLab 18.0. |
| <a id="mutationworkspacecreateworkspacevariables"></a>`workspaceVariables` {{< icon name="warning-solid" >}} | [`[WorkspaceVariableInput!]`](#workspacevariableinput) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 18.0. |
#### Fields
@ -35411,7 +35411,6 @@ Project-level settings for product analytics provider.
| <a id="projectciupstreamprojectsubscriptions"></a>`ciUpstreamProjectSubscriptions` {{< icon name="warning-solid" >}} | [`CiProjectSubscriptionConnection`](#ciprojectsubscriptionconnection) | **Introduced** in GitLab 17.6. **Status**: Experiment. Pipeline subscriptions where this project is the downstream project.When an upstream project's pipeline completes, a pipeline is triggered in the downstream project (this project). |
| <a id="projectcodecoveragesummary"></a>`codeCoverageSummary` | [`CodeCoverageSummary`](#codecoveragesummary) | Code coverage summary associated with the project. |
| <a id="projectcomplianceframeworks"></a>`complianceFrameworks` | [`ComplianceFrameworkConnection`](#complianceframeworkconnection) | Compliance frameworks associated with the project. (see [Connections](#connections)) |
| <a id="projectcompliancerequirementstatuses"></a>`complianceRequirementStatuses` {{< icon name="warning-solid" >}} | [`ProjectComplianceRequirementStatusConnection`](#projectcompliancerequirementstatusconnection) | **Introduced** in GitLab 18.0. **Status**: Experiment. Compliance requirement statuses for a project. |
| <a id="projectcomponentusages"></a>`componentUsages` | [`CiCatalogResourceComponentUsageConnection`](#cicatalogresourcecomponentusageconnection) | Component(s) used by the project. (see [Connections](#connections)) |
| <a id="projectcontainerexpirationpolicy"></a>`containerExpirationPolicy` {{< icon name="warning-solid" >}} | [`ContainerExpirationPolicy`](#containerexpirationpolicy) | **Deprecated** in GitLab 17.5. Use `container_tags_expiration_policy`. |
| <a id="projectcontainerprotectionrepositoryrules"></a>`containerProtectionRepositoryRules` {{< icon name="warning-solid" >}} | [`ContainerProtectionRepositoryRuleConnection`](#containerprotectionrepositoryruleconnection) | **Introduced** in GitLab 16.10. **Status**: Experiment. Container protection rules for the project. |
@ -35931,6 +35930,28 @@ four standard [pagination arguments](#pagination-arguments):
| ---- | ---- | ----------- |
| <a id="projectcompliancecontrolstatusfilters"></a>`filters` | [`ProjectComplianceControlStatusInput`](#projectcompliancecontrolstatusinput) | Filters applied when retrieving compliance control statuses for the project. |
##### `Project.complianceRequirementStatuses`
Compliance requirement statuses for a project.
{{< details >}}
**Introduced** in GitLab 18.0.
**Status**: Experiment.
{{< /details >}}
Returns [`ProjectComplianceRequirementStatusConnection`](#projectcompliancerequirementstatusconnection).
This field returns a [connection](#connections). It accepts the
four standard [pagination arguments](#pagination-arguments):
`before: String`, `after: String`, `first: Int`, and `last: Int`.
###### Arguments
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="projectcompliancerequirementstatusesfilters"></a>`filters` | [`ProjectRequirementComplianceStatusInput`](#projectrequirementcompliancestatusinput) | Filters applied when retrieving compliance requirement statuses. |
| <a id="projectcompliancerequirementstatusesorderby"></a>`orderBy` | [`ProjectComplianceRequirementStatusOrderBy`](#projectcompliancerequirementstatusorderby) | Field used to sort compliance requirement statuses. |
##### `Project.complianceStandardsAdherence`
Compliance standards adherence for the project.
@ -49661,8 +49682,8 @@ Field that are available while modifying the custom mapping attributes for an HT
| <a id="boardissueinputassigneewildcardid"></a>`assigneeWildcardId` | [`AssigneeWildcardId`](#assigneewildcardid) | Filter by assignee wildcard. Incompatible with assigneeUsername and assigneeUsernames. |
| <a id="boardissueinputauthorusername"></a>`authorUsername` | [`String`](#string) | Filter by author username. |
| <a id="boardissueinputconfidential"></a>`confidential` | [`Boolean`](#boolean) | Filter by confidentiality. |
| <a id="boardissueinputcustomfield"></a>`customField` {{< icon name="warning-solid" >}} | [`[WorkItemWidgetCustomFieldFilterInputType!]`](#workitemwidgetcustomfieldfilterinputtype) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="boardissueinputepicid"></a>`epicId` {{< icon name="warning-solid" >}} | [`EpicID`](#epicid) | **Deprecated:** This will be replaced by WorkItem hierarchyWidget. Deprecated in GitLab 17.5. |
| <a id="boardissueinputcustomfield"></a>`customField` {{< icon name="warning-solid" >}} | [`[WorkItemWidgetCustomFieldFilterInputType!]`](#workitemwidgetcustomfieldfilterinputtype) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="boardissueinputepicid"></a>`epicId` {{< icon name="warning-solid" >}} | [`EpicID`](#epicid) | **Deprecated**: This will be replaced by WorkItem hierarchyWidget. Deprecated in GitLab 17.5. |
| <a id="boardissueinputepicwildcardid"></a>`epicWildcardId` | [`EpicWildcardId`](#epicwildcardid) | Filter by epic ID wildcard. Incompatible with epicId. |
| <a id="boardissueinputhealthstatusfilter"></a>`healthStatusFilter` | [`HealthStatusFilter`](#healthstatusfilter) | Health status of the issue, "none" and "any" values are supported. |
| <a id="boardissueinputiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of issues. For example `["1", "2"]`. |
@ -49678,7 +49699,7 @@ Field that are available while modifying the custom mapping attributes for an HT
| <a id="boardissueinputor"></a>`or` | [`UnionedIssueFilterInput`](#unionedissuefilterinput) | List of arguments with inclusive OR. |
| <a id="boardissueinputreleasetag"></a>`releaseTag` | [`String`](#string) | Filter by release tag. |
| <a id="boardissueinputsearch"></a>`search` | [`String`](#string) | Search query for issue title or description. |
| <a id="boardissueinputstatus"></a>`status` {{< icon name="warning-solid" >}} | [`WorkItemWidgetStatusFilterInput`](#workitemwidgetstatusfilterinput) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 18.0. |
| <a id="boardissueinputstatus"></a>`status` {{< icon name="warning-solid" >}} | [`WorkItemWidgetStatusFilterInput`](#workitemwidgetstatusfilterinput) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 18.0. |
| <a id="boardissueinputtypes"></a>`types` | [`[IssueType!]`](#issuetype) | Filter by the given issue types. |
| <a id="boardissueinputweight"></a>`weight` | [`String`](#string) | Filter by weight. |
| <a id="boardissueinputweightwildcardid"></a>`weightWildcardId` | [`WeightWildcardId`](#weightwildcardid) | Filter by weight ID wildcard. Incompatible with weight. |
@ -49753,7 +49774,7 @@ Attributes for defining a CI/CD variable.
| <a id="complianceframeworkinputdefault"></a>`default` | [`Boolean`](#boolean) | Set the compliance framework as the default framework for the group. |
| <a id="complianceframeworkinputdescription"></a>`description` | [`String`](#string) | New description for the compliance framework. |
| <a id="complianceframeworkinputname"></a>`name` | [`String`](#string) | New name for the compliance framework. |
| <a id="complianceframeworkinputpipelineconfigurationfullpath"></a>`pipelineConfigurationFullPath` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated:** Use pipeline execution policies instead. Deprecated in GitLab 17.4. |
| <a id="complianceframeworkinputpipelineconfigurationfullpath"></a>`pipelineConfigurationFullPath` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated**: Use pipeline execution policies instead. Deprecated in GitLab 17.4. |
| <a id="complianceframeworkinputprojects"></a>`projects` | [`ComplianceFrameworkProjectInput`](#complianceframeworkprojectinput) | Projects to add or remove from the compliance framework. |
### `ComplianceFrameworkProjectInput`
@ -49945,7 +49966,7 @@ Filter parameters for projects to be aggregated for DORA metrics.
| ---- | ---- | ----------- |
| <a id="epicfiltersauthorusername"></a>`authorUsername` | [`String`](#string) | Filter by author username. |
| <a id="epicfiltersconfidential"></a>`confidential` | [`Boolean`](#boolean) | Filter by confidentiality. |
| <a id="epicfilterscustomfield"></a>`customField` {{< icon name="warning-solid" >}} | [`[WorkItemWidgetCustomFieldFilterInputType!]`](#workitemwidgetcustomfieldfilterinputtype) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="epicfilterscustomfield"></a>`customField` {{< icon name="warning-solid" >}} | [`[WorkItemWidgetCustomFieldFilterInputType!]`](#workitemwidgetcustomfieldfilterinputtype) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.10. |
| <a id="epicfilterslabelname"></a>`labelName` | [`[String]`](#string) | Filter by label name. |
| <a id="epicfiltersmyreactionemoji"></a>`myReactionEmoji` | [`String`](#string) | Filter by reaction emoji applied by the current user. Wildcard values "NONE" and "ANY" are supported. |
| <a id="epicfiltersnot"></a>`not` | [`NegatedEpicBoardIssueInput`](#negatedepicboardissueinput) | Negated epic arguments. |
@ -50044,12 +50065,12 @@ Defines which user roles, users, or groups can merge into a protected branch.
| <a id="mergerequestsresolvernegatedparamsassigneeusernames"></a>`assigneeUsernames` | [`[String!]`](#string) | Filters merge requests to exclude any that are assigned to the usernames in the given array. |
| <a id="mergerequestsresolvernegatedparamsauthorusername"></a>`authorUsername` | [`String`](#string) | Filters merge requests to exclude any that are authored by the given user. |
| <a id="mergerequestsresolvernegatedparamslabelname"></a>`labelName` | [`[String!]`](#string) | Filters merge requests to exclude any that have the labels provided in the given array. |
| <a id="mergerequestsresolvernegatedparamslabels"></a>`labels` {{< icon name="warning-solid" >}} | [`[String!]`](#string) | **Deprecated:** Use `labelName`. Deprecated in GitLab 17.7. |
| <a id="mergerequestsresolvernegatedparamslabels"></a>`labels` {{< icon name="warning-solid" >}} | [`[String!]`](#string) | **Deprecated**: Use `labelName`. Deprecated in GitLab 17.7. |
| <a id="mergerequestsresolvernegatedparamsmilestonetitle"></a>`milestoneTitle` | [`String`](#string) | Filters merge requests to those not in the given milestone. |
| <a id="mergerequestsresolvernegatedparamsmyreactionemoji"></a>`myReactionEmoji` | [`String`](#string) | Filters merge requests to those without the given reaction from the authenticated user. |
| <a id="mergerequestsresolvernegatedparamsonlyreviewer"></a>`onlyReviewer` {{< icon name="warning-solid" >}} | [`Boolean`](#boolean) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.11. |
| <a id="mergerequestsresolvernegatedparamsonlyreviewer"></a>`onlyReviewer` {{< icon name="warning-solid" >}} | [`Boolean`](#boolean) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.11. |
| <a id="mergerequestsresolvernegatedparamsreleasetag"></a>`releaseTag` | [`String`](#string) | Filters merge requests to those without the given release tag. |
| <a id="mergerequestsresolvernegatedparamsreviewstates"></a>`reviewStates` {{< icon name="warning-solid" >}} | [`[MergeRequestReviewState!]`](#mergerequestreviewstate) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.9. |
| <a id="mergerequestsresolvernegatedparamsreviewstates"></a>`reviewStates` {{< icon name="warning-solid" >}} | [`[MergeRequestReviewState!]`](#mergerequestreviewstate) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.9. |
| <a id="mergerequestsresolvernegatedparamsreviewerusername"></a>`reviewerUsername` | [`String`](#string) | Filters merge requests to those not reviewed by the given user. |
| <a id="mergerequestsresolvernegatedparamssourcebranches"></a>`sourceBranches` | [`[String!]`](#string) | Filters merge requests to exclude the source branch names provided in the given array. |
| <a id="mergerequestsresolvernegatedparamstargetbranches"></a>`targetBranches` | [`[String!]`](#string) | Filters merge requests to exclude the target branch names provided in the given array. |
@ -50073,7 +50094,7 @@ A year and month input for querying product analytics usage data.
| ---- | ---- | ----------- |
| <a id="negatedboardissueinputassigneeusername"></a>`assigneeUsername` | [`[String]`](#string) | Filter by assignee username. |
| <a id="negatedboardissueinputauthorusername"></a>`authorUsername` | [`String`](#string) | Filter by author username. |
| <a id="negatedboardissueinputepicid"></a>`epicId` {{< icon name="warning-solid" >}} | [`EpicID`](#epicid) | **Deprecated:** This will be replaced by WorkItem hierarchyWidget. Deprecated in GitLab 17.5. |
| <a id="negatedboardissueinputepicid"></a>`epicId` {{< icon name="warning-solid" >}} | [`EpicID`](#epicid) | **Deprecated**: This will be replaced by WorkItem hierarchyWidget. Deprecated in GitLab 17.5. |
| <a id="negatedboardissueinputhealthstatusfilter"></a>`healthStatusFilter` | [`HealthStatus`](#healthstatus) | Health status not applied to the issue. Includes issues where health status is not set. |
| <a id="negatedboardissueinputiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of issues. For example `["1", "2"]`. |
| <a id="negatedboardissueinputiterationid"></a>`iterationId` | [`[IterationID!]`](#iterationid) | Filter by a list of iteration IDs. Incompatible with iterationWildcardId. |
@ -50245,6 +50266,15 @@ Representation of who is provided access to. For eg: User/Role/MemberRole/Group.
| ---- | ---- | ----------- |
| <a id="projectcompliancecontrolstatusinputcompliancerequirementid"></a>`complianceRequirementId` | [`ComplianceManagementComplianceFrameworkComplianceRequirementID`](#compliancemanagementcomplianceframeworkcompliancerequirementid) | Compliance requirement id of the statuses. |
### `ProjectRequirementComplianceStatusInput`
#### Arguments
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="projectrequirementcompliancestatusinputframeworkid"></a>`frameworkId` | [`ComplianceManagementFrameworkID`](#compliancemanagementframeworkid) | Filter compliance requirement statuses by compliance framework. |
| <a id="projectrequirementcompliancestatusinputrequirementid"></a>`requirementId` | [`ComplianceManagementComplianceFrameworkComplianceRequirementID`](#compliancemanagementcomplianceframeworkcompliancerequirementid) | Filter compliance requirement statuses by compliance requirement. |
### `PushAccessLevelInput`
Defines which user roles, users, deploy keys, or groups can push to a protected branch.
@ -50370,9 +50400,9 @@ Attributes for defining a tracking event.
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="unionedepicfilterinputauthorusername"></a>`authorUsername` {{< icon name="warning-solid" >}} | [`[String!]`](#string) | **Deprecated:** Use authorUsernames instead. Deprecated in GitLab 16.6. |
| <a id="unionedepicfilterinputauthorusername"></a>`authorUsername` {{< icon name="warning-solid" >}} | [`[String!]`](#string) | **Deprecated**: Use authorUsernames instead. Deprecated in GitLab 16.6. |
| <a id="unionedepicfilterinputauthorusernames"></a>`authorUsernames` | [`[String!]`](#string) | Filters epics that are authored by one of the given users. |
| <a id="unionedepicfilterinputlabelname"></a>`labelName` {{< icon name="warning-solid" >}} | [`[String!]`](#string) | **Deprecated:** Use labelNames instead. Deprecated in GitLab 16.6. |
| <a id="unionedepicfilterinputlabelname"></a>`labelName` {{< icon name="warning-solid" >}} | [`[String!]`](#string) | **Deprecated**: Use labelNames instead. Deprecated in GitLab 16.6. |
| <a id="unionedepicfilterinputlabelnames"></a>`labelNames` | [`[String!]`](#string) | Filters epics that have at least one of the given labels. |
### `UnionedIssueFilterInput`
@ -50392,9 +50422,9 @@ Attributes for defining a tracking event.
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="unionedmergerequestfilterinputassigneeusernames"></a>`assigneeUsernames` | [`[String!]`](#string) | Filters MRs that are assigned to at least one of the given users. |
| <a id="unionedmergerequestfilterinputonlyreviewerusername"></a>`onlyReviewerUsername` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.11. |
| <a id="unionedmergerequestfilterinputreviewstates"></a>`reviewStates` {{< icon name="warning-solid" >}} | [`[MergeRequestReviewState!]`](#mergerequestreviewstate) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 18.0. |
| <a id="unionedmergerequestfilterinputreviewerwildcard"></a>`reviewerWildcard` {{< icon name="warning-solid" >}} | [`ReviewerWildcardId`](#reviewerwildcardid) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 17.11. |
| <a id="unionedmergerequestfilterinputonlyreviewerusername"></a>`onlyReviewerUsername` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.11. |
| <a id="unionedmergerequestfilterinputreviewstates"></a>`reviewStates` {{< icon name="warning-solid" >}} | [`[MergeRequestReviewState!]`](#mergerequestreviewstate) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 18.0. |
| <a id="unionedmergerequestfilterinputreviewerwildcard"></a>`reviewerWildcard` {{< icon name="warning-solid" >}} | [`ReviewerWildcardId`](#reviewerwildcardid) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 17.11. |
### `UnionedWorkItemFilterInput`
@ -50757,6 +50787,6 @@ Attributes for defining a variable to be injected in a workspace.
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="workspacevariableinputkey"></a>`key` | [`String!`](#string) | Name of the workspace variable. |
| <a id="workspacevariableinputtype"></a>`type` {{< icon name="warning-solid" >}} | [`WorkspaceVariableInputType`](#workspacevariableinputtype) | **Deprecated:** Use `variableType` instead. Deprecated in GitLab 17.9. |
| <a id="workspacevariableinputtype"></a>`type` {{< icon name="warning-solid" >}} | [`WorkspaceVariableInputType`](#workspacevariableinputtype) | **Deprecated**: Use `variableType` instead. Deprecated in GitLab 17.9. |
| <a id="workspacevariableinputvalue"></a>`value` | [`String!`](#string) | Value of the variable. |
| <a id="workspacevariableinputvariabletype"></a>`variableType` | [`WorkspaceVariableType`](#workspacevariabletype) | Type of the variable to be injected in a workspace. |

View File

@ -17,6 +17,14 @@ should be based on your specific testing requirements.
{{< /alert >}}
{{< alert type="warning" >}}
When adding a Duo Addon license to your local GDK, by default only the root account gets
a subscription seat to use GitLab Duo features. If you want to test with other users, make
sure to [assign them a seat](../../subscriptions/subscription-add-ons.md#assign-gitlab-duo-seats).
{{< /alert >}}
## Overview
GitLab Duo features require either Duo Pro or Duo Enterprise licensing. When developing locally, there are multiple approaches to set up licensing, each serving different development needs.

View File

@ -185,7 +185,11 @@ Internally, our database load balancer classifies the queries based on their mai
After the above queries are executed, GitLab
[sticks to the primary](../../administration/postgresql/database_load_balancing.md#primary-sticking).
To make the inside queries prefer using the replicas,
When writing custom read-only SQL queries, use `select_all` instead of `execute` so that the query can use read-only replicas when possible.
Using `select_all` also prevents the query cache from being cleared.
To make transactions and other ambiguous queries prefer using the replicas,
[merge request 59086](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/59086) introduced
`fallback_to_replicas_for_ambiguous_queries`. This MR is also an example of how we redirected a
costly, time-consuming query to the replicas.

View File

@ -51,7 +51,7 @@ Before you can use the Maven virtual registry:
When using the Maven virtual registry, remember the following restrictions:
- You can create only one Maven virtual registry per top-level group.
- You can create up to `20` Maven virtual registries per top-level group.
- You can set only `20` upstreams to a given Maven virtual registry.
- For technical reasons, the `proxy_download` setting is force enabled, no matter what the value in the [object storage configuration](../../../../administration/object_storage.md#proxy-download) is configured to.
- Geo support is not implemented. You can follow its development in [issue 473033](https://gitlab.com/gitlab-org/gitlab/-/issues/473033).

View File

@ -823,6 +823,9 @@ msgid_plural "%{count} projects have access"
msgstr[0] ""
msgstr[1] ""
msgid "%{count} registries is the maximum allowed per group."
msgstr ""
msgid "%{count} related %{pluralized_subject}: %{links}"
msgstr ""
@ -39502,9 +39505,6 @@ msgstr ""
msgid "Model registry"
msgstr ""
msgid "Model selection is only available for top-level namespaces."
msgstr ""
msgid "Model version not found"
msgstr ""
@ -54826,6 +54826,12 @@ msgstr ""
msgid "SecurityExclusions|ex: spec/**/*.rb"
msgstr ""
msgid "SecurityInventoryFilter|Search for project name"
msgstr ""
msgid "SecurityInventoryFilter|Search projects…"
msgstr ""
msgid "SecurityInventory|Add projects to this group to start tracking their security posture."
msgstr ""
@ -55121,6 +55127,9 @@ msgstr ""
msgid "SecurityOrchestration|Automate %{strongStart}vulnerability management%{strongEnd} workflows."
msgstr ""
msgid "SecurityOrchestration|Automatically configures scans to run only where needed for MR approval policies"
msgstr ""
msgid "SecurityOrchestration|Automatically selected runners"
msgstr ""
@ -55178,6 +55187,9 @@ msgstr ""
msgid "SecurityOrchestration|Configuration"
msgstr ""
msgid "SecurityOrchestration|Configure exactly when and where scans should run"
msgstr ""
msgid "SecurityOrchestration|Configure policies to control whether individual users or service accounts can use %{linkStart}skip_ci%{linkEnd} to skip pipelines."
msgstr ""
@ -55199,6 +55211,9 @@ msgstr ""
msgid "SecurityOrchestration|Create security policy"
msgstr ""
msgid "SecurityOrchestration|Custom configuration"
msgstr ""
msgid "SecurityOrchestration|Custom roles"
msgstr ""
@ -55472,6 +55487,9 @@ msgstr ""
msgid "SecurityOrchestration|Merge request pipeline"
msgstr ""
msgid "SecurityOrchestration|Merge request security"
msgstr ""
msgid "SecurityOrchestration|Never"
msgstr ""
@ -55732,6 +55750,9 @@ msgstr ""
msgid "SecurityOrchestration|Security policy projects store your organization's security policies. They are identified when policies are created, or when a project is linked as a security policy project. %{linkStart}Learn more%{linkEnd}."
msgstr ""
msgid "SecurityOrchestration|Security scans to execute"
msgstr ""
msgid "SecurityOrchestration|Select a cadence"
msgstr ""

View File

@ -129,7 +129,7 @@ module QA
# set to 'false' to have the browser run visibly instead of headless
def webdriver_headless?
if ENV.key?('CHROME_HEADLESS')
ActiveSupport::Deprecation.warn("CHROME_HEADLESS is deprecated. Use WEBDRIVER_HEADLESS instead.")
Rails.application.deprecators[:qa].warn("CHROME_HEADLESS is deprecated. Use WEBDRIVER_HEADLESS instead.")
end
return enabled?(ENV['WEBDRIVER_HEADLESS']) unless ENV['WEBDRIVER_HEADLESS'].nil?

68
scripts/ai-context-migration Executable file
View File

@ -0,0 +1,68 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
# Generate an AI Context migration file and spec with the current timestamp.
require_relative 'lib/migration_creator'
module GitLab
module MigrationTools
class AIContextMigrationCreator < BaseMigrationCreator
protected
def create_options_struct
Struct.new(
:name,
:milestone,
:feature_category
)
end
def collect_input
options.name = read_name
options.milestone = current_milestone
options.feature_category = read_variable('feature_category', 'The feature category, like: `code_suggestions`')
end
def file_path
"ee/db/active_context/migrate/#{file_name}.rb"
end
def spec_file_path
"ee/spec/db/active_context/migrate/#{file_name}_spec.rb"
end
def file_contents
<<~RUBY
# frozen_string_literal: true
class #{options.name} < ActiveContext::Migration[1.0]
milestone '#{options.milestone}'
def migrate!
# TODO: Implement migration logic
end
end
RUBY
end
def spec_contents
<<~RUBY
# frozen_string_literal: true
require 'spec_helper'
require File.expand_path('#{file_path}')
RSpec.describe #{options.name}, feature_category: :#{options.feature_category.parameterize.underscore} do
let(:version) { #{timestamp} }
let(:migration) { ::ActiveContext::Migration::Dictionary.instance.find_by_version(version) }
subject(:migrate) { migration.new.migrate! }
end
RUBY
end
end
end
end
GitLab::MigrationTools::AIContextMigrationCreator.new.execute if $PROGRAM_NAME == __FILE__

View File

@ -4,165 +4,110 @@
# Generate an Elastic migration file, spec and dictionary record with the current timestamp.
require 'yaml'
require 'fileutils'
require 'uri'
require 'readline'
require 'active_support'
require 'active_support/core_ext/string'
require_relative 'lib/migration_creator'
class ElasticMigrationCreator
attr_reader :options
module GitLab
module MigrationTools
class ElasticMigrationCreator < BaseMigrationCreator
protected
Options = Struct.new(
:name,
:description,
:group,
:introduced_by_url,
:milestone,
:obsolete,
:marked_obsolete_by_url,
:marked_obsolete_in_milestone
)
def create_options_struct
Struct.new(
:name,
:description,
:group,
:introduced_by_url,
:milestone,
:obsolete,
:marked_obsolete_by_url,
:marked_obsolete_in_milestone
)
end
def initialize
@options = Options.new
end
def collect_input
options.name = read_name.camelize
options.description = read_variable('description', 'Description of what the migration does')
options.group = read_variable('group', 'The group introducing the migration, like: `global search`')
options.introduced_by_url = read_url('URL of the MR introducing the migration')
options.milestone = current_milestone
options.obsolete = false
options.marked_obsolete_by_url = nil
options.marked_obsolete_in_milestone = nil
end
def execute
options.name = read_name
options.description = read_description
options.group = read_group
options.introduced_by_url = read_introduced_by_url
options.milestone = read_milestone
def write
super
write_file(dictionary_file_path, dictionary_contents)
end
$stdout.puts "\e[32mcreated\e[0m #{file_path}"
$stdout.puts "\e[32mcreated\e[0m #{spec_file_path}"
$stdout.puts "\e[32mcreated\e[0m #{dictionary_file_path}"
def display_success_message
super
$stdout.puts "\e[32mcreated\e[0m #{dictionary_file_path}"
end
write
$stdout.puts "\n=> Please consult the documentation for Advanced Search Migrations: #{documentation_reference}"
end
def display_additional_info
$stdout.puts "\n=> Please consult the documentation for Advanced Search Migrations: #{documentation_reference}"
end
private
def file_path
"ee/elastic/migrate/#{file_name}.rb"
end
def read_name
read_variable('name', 'Name of the migration in CamelCase').camelize
end
def spec_file_path
"ee/spec/elastic/migrate/#{file_name}_spec.rb"
end
def read_description
read_variable('description', 'Description of what the migration does')
end
def dictionary_file_path
"ee/elastic/docs/#{file_name}.yml"
end
def read_group
read_variable('group', 'The group introducing a feature flag, like: `global search`')
end
def file_contents
<<~RUBY
# frozen_string_literal: true
def read_milestone
milestone = File.read('VERSION')
milestone.gsub(/^(\d+\.\d+).*$/, '\1').chomp
end
class #{options.name} < Elastic::Migration
end
RUBY
end
def read_variable(name, description)
$stdout.puts "\n>> #{description}:"
def spec_contents
<<~RUBY
# frozen_string_literal: true
loop do
variable = Readline.readline('?> ', false)&.strip
return variable unless variable.empty?
require 'spec_helper'
require File.expand_path('#{file_path}')
warn "Error: #{name} is required."
# See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#elasticsearch-specs
# for more information on how to write search migration specs for GitLab.
RSpec.describe #{options.name}, feature_category: :#{options.group.parameterize.underscore} do
let(:version) { #{timestamp} }
end
RUBY
end
def dictionary_contents
dictionary_config_hash.to_yaml
end
def dictionary_config_hash
{
'name' => options.name,
'version' => timestamp,
'description' => options.description,
'group' => "group::#{options.group}",
'milestone' => options.milestone.to_s,
'introduced_by_url' => options.introduced_by_url,
'obsolete' => options.obsolete,
'marked_obsolete_by_url' => options.marked_obsolete_by_url,
'marked_obsolete_in_milestone' => options.marked_obsolete_in_milestone
}
end
def documentation_reference
'https://docs.gitlab.com/ee/development/search/advanced_search_migration_styleguide.html'
end
end
end
def read_introduced_by_url
$stdout.puts
$stdout.puts ">> URL of the MR introducing the migration (enter to skip):"
loop do
introduced_by_url = Readline.readline('?> ', false)&.strip
introduced_by_url = nil if introduced_by_url.empty?
return introduced_by_url if introduced_by_url.nil? || introduced_by_url.start_with?('https://')
warn 'Error: URL needs to start with https://'
end
end
def write
# create migration file
FileUtils.mkdir_p(File.dirname(file_path))
File.write(file_path, file_contents)
# create spec
FileUtils.mkdir_p(File.dirname(spec_file_path))
File.write(spec_file_path, spec_contents)
# create dictionary file
FileUtils.mkdir_p(File.dirname(dictionary_file_path))
File.write(dictionary_file_path, dictionary_contents)
end
def timestamp
@timestamp ||= Time.now.strftime('%Y%m%d%H%M%S')
end
def file_name
@file_name ||= "#{timestamp}_#{options.name.dup.underscore}"
end
def file_path
"ee/elastic/migrate/#{file_name}.rb"
end
def spec_file_path
"ee/spec/elastic/migrate/#{file_name}_spec.rb"
end
def dictionary_file_path
"ee/elastic/docs/#{file_name}.yml"
end
def file_contents
"# frozen_string_literal: true
class #{options.name} < Elastic::Migration
end
"
end
def spec_contents
"# frozen_string_literal: true
require 'spec_helper'
require File.expand_path('#{file_path}')
# See https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#elasticsearch-specs
# for more information on how to write search migration specs for GitLab.
RSpec.describe #{options.name}, feature_category: :#{options.group.parameterize.underscore} do
let(:version) { #{timestamp} }
end
"
end
def dictionary_contents
dictionary_config_hash.to_yaml
end
def dictionary_config_hash
{
'name' => options.name,
'version' => timestamp,
'description' => options.description,
'group' => "group::#{options.group}",
'milestone' => options.milestone.to_s,
'introduced_by_url' => options.introduced_by_url,
'obsolete' => false,
'marked_obsolete_by_url' => nil,
'marked_obsolete_in_milestone' => nil
}
end
def documentation_reference
'https://docs.gitlab.com/ee/development/search/advanced_search_migration_styleguide.html'
end
end
ElasticMigrationCreator.new.execute if $PROGRAM_NAME == __FILE__
GitLab::MigrationTools::ElasticMigrationCreator.new.execute if $PROGRAM_NAME == __FILE__

109
scripts/lib/migration_creator.rb Executable file
View File

@ -0,0 +1,109 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'fileutils'
require 'readline'
require 'active_support'
require 'active_support/core_ext/string'
module GitLab
module MigrationTools
class BaseMigrationCreator
attr_reader :options
def initialize
@options = create_options_struct.new
end
def execute
collect_input
write
display_success_message
display_additional_info
end
protected
def create_options_struct
raise NotImplementedError
end
def collect_input
raise NotImplementedError
end
def file_path
raise NotImplementedError, "Subclasses must implement #file_path"
end
def file_contents
raise NotImplementedError, "Subclasses must implement #file_contents"
end
def spec_file_path
raise NotImplementedError, "Subclasses must implement #spec_file_path"
end
def spec_contents
raise NotImplementedError, "Subclasses must implement #spec_contents"
end
def timestamp
@timestamp ||= Time.now.strftime('%Y%m%d%H%M%S')
end
def file_name
@file_name ||= "#{timestamp}_#{options.name.dup.underscore}"
end
def write
write_file(file_path, file_contents)
write_file(spec_file_path, spec_contents)
end
def display_success_message
$stdout.puts "\e[32mcreated\e[0m #{file_path}"
$stdout.puts "\e[32mcreated\e[0m #{spec_file_path}"
end
def display_additional_info; end
def read_name
read_variable('name', 'Name of the migration in CamelCase')
end
def read_url(description)
$stdout.puts "\n>> #{description} (enter to skip):"
loop do
url = Readline.readline('?> ', false)&.strip
url = nil if url.empty?
return url if url.nil? || url.start_with?('https://')
warn 'Error: URL needs to start with https://'
end
end
def current_milestone
milestone = File.read('VERSION')
milestone.gsub(/^(\d+\.\d+).*$/, '\1').chomp
end
def read_variable(name, description, optional: false)
$stdout.puts "\n>> #{description}:"
loop do
variable = Readline.readline('?> ', false)&.strip
return variable if !variable.empty? || optional
warn "Error: #{name} is required."
end
end
def write_file(path, contents)
FileUtils.mkdir_p(File.dirname(path))
File.write(path, contents)
end
end
end
end

View File

@ -186,8 +186,8 @@ module RapidDiffs
::Gitlab::Git::Diff.new(
{
diff: hunk,
new_path: new_path(hunk),
old_path: old_path(hunk),
new_path: new_path(hunk) || old_path(hunk),
old_path: old_path(hunk) || new_path(hunk),
a_mode: '0',
b_mode: '100644',
new_file: true,

View File

@ -2,3 +2,4 @@ title,type
Invalid issue,isssue
Invalid Issue,issue!!
Missing type,
Not project level type,Epic

1 title type
2 Invalid issue isssue
3 Invalid Issue issue!!
4 Missing type
5 Not project level type Epic

View File

@ -298,6 +298,7 @@ export const rawIssue = {
blockedByCount: 0,
iteration: null,
healthStatus: null,
status: null,
type: 'ISSUE',
linkedWorkItems: {
__typename: 'LinkedWorkItemTypeConnection',
@ -351,6 +352,7 @@ export const mockIssue = {
blockedByCount: 0,
iteration: null,
healthStatus: null,
status: null,
type: 'ISSUE',
__typename: 'Issue',
linkedWorkItems: {

View File

@ -4,6 +4,7 @@ import { shallowMount } from '@vue/test-utils';
import { GlButton } from '@gitlab/ui';
import createMockApollo from 'helpers/mock_apollo_helper';
import waitForPromises from 'helpers/wait_for_promises';
import { createMockDirective, getBinding } from 'helpers/vue_mock_directive';
import RunnerToggleAssignButton from '~/ci/runner/project_runners_settings/components/runner_toggle_assign_button.vue';
import runnerAssignToProjectMutation from '~/ci/runner/graphql/list/runner_assign_to_project.mutation.graphql';
@ -28,6 +29,7 @@ describe('RunnerToggleAssignButton', () => {
const projectFullPath = 'group/project';
const findButton = () => wrapper.findComponent(GlButton);
const getTooltipValue = () => getBinding(wrapper.element, 'gl-tooltip').value;
const createComponent = ({ props } = {}) => {
const mockApollo = createMockApollo([
@ -41,6 +43,9 @@ describe('RunnerToggleAssignButton', () => {
runner: mockRunner,
...props,
},
directives: {
GlTooltip: createMockDirective('gl-tooltip'),
},
apolloProvider: mockApollo,
});
};
@ -56,10 +61,10 @@ describe('RunnerToggleAssignButton', () => {
});
describe.each`
case | assigns | buttonText | handler | doneMessage | errorMessage
${'when assigning a runner'} | ${true} | ${'Assign to project'} | ${() => assignMutationHandler} | ${'Runner #1 (abc123) was assigned to this project.'} | ${'Failed to assign runner to project.'}
${'when unassigning a runner'} | ${false} | ${'Unassign from project'} | ${() => unassignMutationHandler} | ${'Runner #1 (abc123) was unassigned from this project.'} | ${'Failed to unassign runner from project.'}
`('$case', ({ assigns, buttonText, handler, doneMessage, errorMessage }) => {
case | assigns | icon | tooltip | handler | doneMessage | errorMessage
${'when assigning a runner'} | ${true} | ${'link'} | ${'Assign to project'} | ${() => assignMutationHandler} | ${'Runner #1 (abc123) was assigned to this project.'} | ${'Failed to assign runner to project.'}
${'when unassigning a runner'} | ${false} | ${'unlink'} | ${'Unassign from project'} | ${() => unassignMutationHandler} | ${'Runner #1 (abc123) was unassigned from this project.'} | ${'Failed to unassign runner from project.'}
`('$case', ({ assigns, icon, tooltip, handler, doneMessage, errorMessage }) => {
beforeEach(() => {
createComponent({
props: { assigns },
@ -68,7 +73,8 @@ describe('RunnerToggleAssignButton', () => {
it('renders button', () => {
expect(findButton().props('loading')).toBe(false);
expect(findButton().text()).toBe(buttonText);
expect(findButton().props('icon')).toBe(icon);
expect(getTooltipValue()).toBe(tooltip);
});
it('calls assign mutation when clicked', () => {

View File

@ -20,7 +20,7 @@ RSpec.describe '00_deprecations', feature_category: :shared do
setup_other_deprecations
ActiveSupport::Deprecation.disallowed_warnings = nil
Rails.application.deprecators.disallowed_warnings = []
ActiveSupport::Notifications.unsubscribe('deprecation.rails')
load_initializer
@ -94,7 +94,7 @@ RSpec.describe '00_deprecations', feature_category: :shared do
describe 'Rails deprecations' do
context 'when catching deprecation warnings' do
subject { ActiveSupport::Deprecation.warn('ABC will be removed') }
subject { Rails.application.deprecators[:active_record].warn('ABC will be removed') }
include_examples 'logs to Gitlab::DeprecationJsonLogger', 'DEPRECATION WARNING: ABC will be removed', 'rails'
include_examples 'logs to stderr', 'DEPRECATION WARNING: ABC will be removed'
@ -115,11 +115,11 @@ RSpec.describe '00_deprecations', feature_category: :shared do
end
context 'when catching disallowed warnings' do
before do
ActiveSupport::Deprecation.disallowed_warnings << /disallowed warning 1/
end
subject { Rails.application.deprecators[:active_record].warn('This is disallowed warning 1.') }
subject { ActiveSupport::Deprecation.warn('This is disallowed warning 1.') }
before do
Rails.application.deprecators.disallowed_warnings = [/disallowed warning 1/]
end
it 'raises Exception and warns on stderr' do
expect { subject }
@ -147,23 +147,5 @@ RSpec.describe '00_deprecations', feature_category: :shared do
end
end
end
describe 'configuring ActiveSupport::Deprecation.disallowed_warnings' do
subject(:disallowed_warnings) { ActiveSupport::Deprecation.disallowed_warnings }
it { is_expected.to be_empty }
context 'when in production environment' do
let(:rails_env) { 'production' }
it { is_expected.to be_empty }
context 'when GITLAB_LOG_DEPRECATIONS is set' do
let(:gitlab_log_deprecations) { '1' }
it { is_expected.to be_empty }
end
end
end
end
end

View File

@ -6483,7 +6483,7 @@ RSpec.describe User, feature_category: :user_profile do
it 'invalidates cache for Merge Request counter' do
cache_mock = double
expect(cache_mock).to receive(:delete).with(['users', user.id, 'assigned_open_merge_requests_count', false])
expect(cache_mock).to receive(:delete).with(['users', user.id, 'assigned_open_merge_requests_count', false, true])
expect(cache_mock).to receive(:delete).with(['users', user.id, 'review_requested_open_merge_requests_count', false])
allow(Rails).to receive(:cache).and_return(cache_mock)
@ -6580,6 +6580,7 @@ RSpec.describe User, feature_category: :user_profile do
context 'when merge_request_dashboard feature flag is enabled' do
before do
stub_feature_flags(merge_request_dashboard: true)
stub_feature_flags(merge_request_dashboard_author_or_assignee: false)
end
it 'returns number of open merge requests from non-archived projects where there are no reviewers' do
@ -6592,7 +6593,38 @@ RSpec.describe User, feature_category: :user_profile do
create(:merge_request, :closed, source_project: project, author: user, assignees: [user])
create(:merge_request, source_project: archived_project, author: user, assignees: [user])
expect(user.assigned_open_merge_requests_count(force: true)).to eq 1
mr = create(:merge_request, :unique_branches, source_project: project, author: user, assignees: [user], reviewers: [user])
mr2 = create(:merge_request, :unique_branches, source_project: project, author: user, assignees: [user], reviewers: [user])
mr.merge_request_reviewers.update_all(state: :reviewed)
mr2.merge_request_reviewers.update_all(state: :requested_changes)
expect(user.assigned_open_merge_requests_count(force: true)).to eq 3
end
context 'when merge_request_dashboard_author_or_assignee is enabed' do
before do
stub_feature_flags(merge_request_dashboard_author_or_assignee: true)
end
it 'returns number of open merge requests assigned or author by the user, that have no review or a review' do
user = create(:user)
project = create(:project, :public)
archived_project = create(:project, :public, :archived)
create(:merge_request, source_project: project, author: user, reviewers: [user])
create(:merge_request, source_project: project, source_branch: 'feature_conflict', author: user, assignees: [user])
create(:merge_request, :closed, source_project: project, author: user, assignees: [user])
create(:merge_request, source_project: archived_project, author: user, assignees: [user])
mr = create(:merge_request, :unique_branches, source_project: project, author: user, assignees: [user], reviewers: [user])
mr2 = create(:merge_request, :unique_branches, source_project: project, author: user, assignees: [user], reviewers: [user])
mr.merge_request_reviewers.update_all(state: :reviewed)
mr2.merge_request_reviewers.update_all(state: :requested_changes)
expect(user.assigned_open_merge_requests_count(force: true)).to eq 3
end
end
end
end
@ -6621,14 +6653,14 @@ RSpec.describe User, feature_category: :user_profile do
archived_project = create(:project, :public, :archived)
mr = create(:merge_request, source_project: project, author: user, reviewers: [user])
mr2 = create(:merge_request, source_project: project, source_branch: 'feature_conflict', author: user, assignees: [user], reviewers: create_list(:user, 2))
mr2 = create(:merge_request, :unique_branches, source_project: project, author: user, reviewers: [user])
create(:merge_request, :closed, source_project: project, author: user, reviewers: [user])
create(:merge_request, source_project: archived_project, author: user, reviewers: [user])
mr.merge_request_reviewers.update_all(state: :unreviewed)
mr2.merge_request_reviewers.update_all(state: :requested_changes)
expect(user.review_requested_open_merge_requests_count(force: true)).to eq 2
expect(user.review_requested_open_merge_requests_count(force: true)).to eq 1
end
end
end

View File

@ -71,7 +71,7 @@ RSpec.describe WorkItems::ImportCsvService, feature_category: :team_planning do
expect(result[:parse_error]).to eq(false)
expect(result[:type_errors]).to match({
blank: [4],
disallowed: {}, # tested in the EE version
disallowed: { "epic" => [5] }, # tested in the EE version
missing: {
"isssue" => [2],
"issue!!" => [3]

View File

@ -12,7 +12,7 @@ module Support
def before_check(policy, ability, user, subject, opts)
return super if Checker.ok?(policy, ability)
ActiveSupport::Deprecation.warn(<<~WARNING)
warn(<<~WARNING)
Ability #{ability.inspect} in #{policy.class} not found.
user=#{user.inspect}, subject=#{subject}, opts=#{opts.inspect}"

View File

@ -24,7 +24,7 @@ module LiveDebugger
end
def is_headless_disabled?
ActiveSupport::Deprecation.warn("CHROME_HEADLESS is deprecated. Use WEBDRIVER_HEADLESS instead.") if ENV.key?('CHROME_HEADLESS')
Rails.application.deprecators[:qa].warn("CHROME_HEADLESS is deprecated. Use WEBDRIVER_HEADLESS instead.") if ENV.key?('CHROME_HEADLESS')
ENV['WEBDRIVER_HEADLESS'] =~ /^(false|no|0)$/i || ENV['CHROME_HEADLESS'] =~ /^(false|no|0)$/i
end

View File

@ -47,9 +47,7 @@ module StubFeatureFlags
# Enable `ci_live_trace` feature flag only on the specified projects.
def stub_feature_flags(features)
features.each do |feature_name, actors|
unless Feature::Definition.get(feature_name)
ActiveSupport::Deprecation.warn "Invalid Feature Flag #{feature_name} stubbed"
end
warn("Invalid Feature Flag #{feature_name} stubbed") unless Feature::Definition.get(feature_name)
# Remove feature flag overwrite
feature = Feature.get(feature_name) # rubocop:disable Gitlab/AvoidFeatureGet

View File

@ -61,20 +61,4 @@ RSpec.shared_examples 'creating scan execution policy with invalid properties' d
expect(page).to have_content('Policy cannot be enabled without branch information')
expect(page).to have_current_path(path_to_scan_execution_policy_editor)
end
it "fails to create a policy with exceeding amount of actions and conditions" do
fill_in _('Name'), with: 'Exceeding actions and conditions'
limit.times do
click_button _('Add new action')
click_button _('Add new condition')
end
expect(page).to have_button _('Add new action'), disabled: true
click_button _('Configure with a merge request')
expect(page).to have_content("Policy exceeds the maximum of #{limit} actions")
expect(page).to have_current_path(path_to_scan_execution_policy_editor)
end
end

View File

@ -42,7 +42,7 @@ RSpec.describe Support::AbilityCheck, feature_category: :system_access do # rubo
def expect_deprecation_warning(policy_class, ability, &block)
expect(&block)
.to output(/DEPRECATION WARNING: Ability :#{ability} in #{policy_class} not found./)
.to output(/Ability :#{ability} in #{policy_class} not found./)
.to_stderr
end

View File

@ -617,7 +617,7 @@ RSpec.describe Tooling::Graphql::Docs::Renderer do
| ---- | ---- | ----------- |
| <a id="mutationmakeitprettyclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationmakeitprettyprettinessfactor"></a>`prettinessFactor` | [`Float!`](#float) | How much prettier?. |
| <a id="mutationmakeitprettypulchritude"></a>`pulchritude` {{< icon name="warning-solid" >}} | [`Float`](#float) | **Deprecated:** This was renamed. Please use `prettinessFactor`. Deprecated in GitLab 72.34. |
| <a id="mutationmakeitprettypulchritude"></a>`pulchritude` {{< icon name="warning-solid" >}} | [`Float`](#float) | **Deprecated**: This was renamed. Please use `prettinessFactor`. Deprecated in GitLab 72.34. |
#### Fields
@ -626,7 +626,7 @@ RSpec.describe Tooling::Graphql::Docs::Renderer do
| <a id="mutationmakeitprettyclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationmakeitprettyerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
| <a id="mutationmakeitprettyeverything"></a>`everything` | [`String`](#string) | What we made prettier. |
| <a id="mutationmakeitprettyomnis"></a>`omnis` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated:** This was renamed. Please use `everything`. Deprecated in GitLab 72.34. |
| <a id="mutationmakeitprettyomnis"></a>`omnis` {{< icon name="warning-solid" >}} | [`String`](#string) | **Deprecated**: This was renamed. Please use `everything`. Deprecated in GitLab 72.34. |
DOC
end
end

View File

@ -326,7 +326,7 @@ module Tooling
buff << if deprecation
deprecation.markdown(context: context)
else
"**Deprecated:** #{object[:deprecation_reason]}"
"**Deprecated**: #{object[:deprecation_reason]}"
end
buff << original_description if context == :inline && deprecation&.experiment?