diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index 834e97e9eb0..5ac339bdce0 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -213,7 +213,7 @@ if: '$CI_PROJECT_PATH == "gitlab-org/gitlab-foss" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH' .if-not-dot-com-gitlab-org-and-not-jihulab: &if-not-dot-com-gitlab-org-and-not-jihulab - if: '($CI_SERVER_HOST != "gitlab.com" || $CI_PROJECT_ROOT_NAMESPACE != "gitlab-org") && ($CI_SERVER_HOST != "jihulab.com" || $CI_PROJECT_NAMESPACE != "gitlab-cn")' + if: '($CI_SERVER_HOST != "gitlab.com" || $CI_PROJECT_NAMESPACE != "gitlab-org") && ($CI_SERVER_HOST != "jihulab.com" || $CI_PROJECT_NAMESPACE != "gitlab-cn")' .if-dot-com-gitlab-org-schedule: &if-dot-com-gitlab-org-schedule if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_PIPELINE_SOURCE == "schedule"' diff --git a/CHANGELOG.md b/CHANGELOG.md index c554cb6d832..be9a9182f9f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,30 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. +## 18.1.2 (2025-07-09) + +### Fixed (5 changes) + +- [Rake Doctor Secrets: Fix WebHook error](https://gitlab.com/gitlab-org/security/gitlab/-/commit/ce02068cccff230ffbef2f88b169902fe7f43bbf) +- [Fix title on empty projects](https://gitlab.com/gitlab-org/security/gitlab/-/commit/3ea74609f662c78433afcfe160a028a5bbbdf2fc) +- [Show both author and committer in last commit](https://gitlab.com/gitlab-org/security/gitlab/-/commit/52ba3c0f90dd0ebc4f6a27beab60588f091068af) +- [Remove Sidekiq shutdown delay in ConcurrencyLimitSampler](https://gitlab.com/gitlab-org/security/gitlab/-/commit/03315bd4f35d87ff58220bf581158698ce163b72) +- [Fix code owner validation for roles](https://gitlab.com/gitlab-org/security/gitlab/-/commit/e797849679b80d660a34b65f11dd7506e9fdf35b) **GitLab Enterprise Edition** + +### Changed (2 changes) + +- [Fix the owner for sequence ci_builds_id_seq](https://gitlab.com/gitlab-org/security/gitlab/-/commit/d594b6dc14fc5b2ed52f49e7d97d1a2363397185) +- [Enable using glab for CI release](https://gitlab.com/gitlab-org/security/gitlab/-/commit/b91e1226900cbdbb1dfd53efd65c9cb2b6d2f64a) + +### Security (6 changes) + +- [Revert "Merge branch..." from 18.1](https://gitlab.com/gitlab-org/security/gitlab/-/commit/5384ab91a8eaaa1cfe253eb093277f76cde48d09) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5126)) +- [Enforces invite_group_members permission when creating group members](https://gitlab.com/gitlab-org/security/gitlab/-/commit/e3f78357e039d70c0eaf67d86f46cced28c8ce3b) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5105)) +- [Enforces invite_project_members permission when creating project members](https://gitlab.com/gitlab-org/security/gitlab/-/commit/064d8e2a0ce7a9c0191c9ec3ef7f43d1f25e8f29) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5108)) +- [Fix XSS via blob rich viewer](https://gitlab.com/gitlab-org/security/gitlab/-/commit/2cd8baa02ea37d89d2f7c67749947da520cb4ea1) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5119)) +- [Fix CI ID Token claims for forked project MR jobs](https://gitlab.com/gitlab-org/security/gitlab/-/commit/1a79ece45035eec1d5daee10f89363be089ff069) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5114)) +- [Prevent linking fork if target group disallows external forks](https://gitlab.com/gitlab-org/security/gitlab/-/commit/3ccce42e662ce3849c8dde62975e21146d6ef0fa) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5102)) + ## 18.1.1 (2025-06-24) ### Security (5 changes) @@ -922,6 +946,28 @@ entry. - [Change users_preferences.organization_groups_projects_display defaults](https://gitlab.com/gitlab-org/gitlab/-/commit/c0bed48fc7a755413edf1090c86a33a798771d37) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/190331)) - [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/06fdc6c5fb9a7490c5fe8e6b1eb3a8b0f065f950) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/189248)) +## 18.0.4 (2025-07-09) + +### Fixed (8 changes) + +- [Fix incorrect redirect when branch doesn't include files](https://gitlab.com/gitlab-org/security/gitlab/-/commit/3e7fb0bdef7ebc8ac321646a94305eacfd93acc0) +- [Fix title on empty projects](https://gitlab.com/gitlab-org/security/gitlab/-/commit/573d6691721b83db8122876d77397212646b251a) +- [Show both author and committer in last commit](https://gitlab.com/gitlab-org/security/gitlab/-/commit/5c73962ffc8aab22c863062a62efc269b6dbc996) +- [Backport "Add a spinner for a loading elipsis menu" to 18.0](https://gitlab.com/gitlab-org/security/gitlab/-/commit/c90dda26bce7b97e65c92308308b8cd77d7c7c73) +- [Refactor blob commit info section](https://gitlab.com/gitlab-org/security/gitlab/-/commit/ee9fbe3f711dfc7b2b51c492e8f24de2253ed698) +- [Remove Sidekiq shutdown delay in ConcurrencyLimitSampler](https://gitlab.com/gitlab-org/security/gitlab/-/commit/5c7648701f92856c839eb8d8dbf760fda8c2eac4) +- [Fix code owner validation for roles](https://gitlab.com/gitlab-org/security/gitlab/-/commit/2512b4869c9ba658e1c35246843c42aec2ddf555) **GitLab Enterprise Edition** +- [Fix Protected Tags show page](https://gitlab.com/gitlab-org/security/gitlab/-/commit/aca613193dbda73c149411055c1bf46fae3447b6) + +### Security (6 changes) + +- [Revert "Merge branch..." from 18.0](https://gitlab.com/gitlab-org/security/gitlab/-/commit/d6168858300ceeac41e4c824198e6a92146a205c) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5127)) +- [Enforces invite_group_members permission when creating group members](https://gitlab.com/gitlab-org/security/gitlab/-/commit/1f301202958e3cc830ffa5682ae2f852de69a11b) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5106)) +- [Enforces invite_project_members permission when creating project members](https://gitlab.com/gitlab-org/security/gitlab/-/commit/cf62ff2ceaafae0229005adc818a0a094458e128) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5109)) +- [Fix XSS via blob rich viewer](https://gitlab.com/gitlab-org/security/gitlab/-/commit/2638ec4db071db9862fad4e7d46d43cf9363d9c4) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5120)) +- [Fix CI ID Token claims for forked project MR jobs](https://gitlab.com/gitlab-org/security/gitlab/-/commit/37d0e88ffaa631795f9ef1a37294f9b2a4ff7e36) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5116)) +- [Prevent linking fork if target group disallows external forks](https://gitlab.com/gitlab-org/security/gitlab/-/commit/48d6c2e6c4022e134d3074ed3de36788ce18175e) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5103)) + ## 18.0.3 (2025-06-24) ### Fixed (1 change) @@ -1816,6 +1862,21 @@ entry. - [Finalize migration BackfillContainerRepositoryStatesProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/78f333c76a39d0a85938318b3be49905c19074e6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/185869)) - [Finalize migration BackfillPackagesRpmMetadataProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/d066d88be1fff7cfcf64017124af797e085a4b4f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184553)) +## 17.11.6 (2025-07-09) + +### Fixed (3 changes) + +- [Fix incorrect redirect when branch doesn't include files](https://gitlab.com/gitlab-org/security/gitlab/-/commit/5261940b88db1ba0078f8d5a68f8d553022e5cb7) +- [Fix incompatible Rails cache version from 7.1 to 6.1](https://gitlab.com/gitlab-org/security/gitlab/-/commit/91a9adeec53343019e505416607f9c4606a26aec) +- [Fix code owner validation for roles](https://gitlab.com/gitlab-org/security/gitlab/-/commit/b5760803cdee7196c74726887b3fbad541af6a3a) **GitLab Enterprise Edition** + +### Security (4 changes) + +- [Revert "Merge branch..." from 17.11](https://gitlab.com/gitlab-org/security/gitlab/-/commit/5f7dded039c6a95d0cad4e80950730e6600ae096) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5128)) +- [Fix XSS via blob rich viewer](https://gitlab.com/gitlab-org/security/gitlab/-/commit/ad8aefc5d97748a36211e673de10d4ea3c3528d7) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5121)) +- [Fix CI ID Token claims for forked project MR jobs](https://gitlab.com/gitlab-org/security/gitlab/-/commit/ed3b2358908fdf6a6cad1bab226a5d08de1ce926) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5117)) +- [Prevent linking fork if target group disallows external forks](https://gitlab.com/gitlab-org/security/gitlab/-/commit/8d2fe458b23e72778561d1dbb31d13fae68224f4) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5104)) + ## 17.11.5 (2025-06-24) ### Changed (2 changes) diff --git a/GITLAB_SHELL_VERSION b/GITLAB_SHELL_VERSION index 68779e98d90..e7d355aaa29 100644 --- a/GITLAB_SHELL_VERSION +++ b/GITLAB_SHELL_VERSION @@ -1 +1 @@ -14.42.0 +14.43.0 diff --git a/Gemfile.checksum b/Gemfile.checksum index 8a3237b0caa..1a4f45f24db 100644 --- a/Gemfile.checksum +++ b/Gemfile.checksum @@ -549,7 +549,7 @@ {"name":"raabro","version":"1.4.0","platform":"ruby","checksum":"d4fa9ff5172391edb92b242eed8be802d1934b1464061ae5e70d80962c5da882"}, {"name":"racc","version":"1.8.1","platform":"java","checksum":"54f2e6d1e1b91c154013277d986f52a90e5ececbe91465d29172e49342732b98"}, {"name":"racc","version":"1.8.1","platform":"ruby","checksum":"4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f"}, -{"name":"rack","version":"2.2.13","platform":"ruby","checksum":"ccee101719696a5da12ee9da6fb3b1d20cb329939e089e0e458be6e93667f0fb"}, +{"name":"rack","version":"2.2.17","platform":"ruby","checksum":"5fe02a1ca80d6fb2271dba00985ee2962d6f5620b6f46dfed89f5301ac4699dd"}, {"name":"rack-accept","version":"0.4.5","platform":"ruby","checksum":"66247b5449db64ebb93ae2ec4af4764b87d1ae8a7463c7c68893ac13fa8d4da2"}, {"name":"rack-attack","version":"6.7.0","platform":"ruby","checksum":"3ca47e8f66cd33b2c96af53ea4754525cd928ed3fa8da10ee6dad0277791d77c"}, {"name":"rack-cors","version":"2.0.2","platform":"ruby","checksum":"415d4e1599891760c5dc9ef0349c7fecdf94f7c6a03e75b2e7c2b54b82adda1b"}, diff --git a/Gemfile.lock b/Gemfile.lock index 94be2819e99..b65917a5f97 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1517,7 +1517,7 @@ GEM pyu-ruby-sasl (0.0.3.3) raabro (1.4.0) racc (1.8.1) - rack (2.2.13) + rack (2.2.17) rack-accept (0.4.5) rack (>= 0.4) rack-attack (6.7.0) diff --git a/Gemfile.next.checksum b/Gemfile.next.checksum index e800ef91d99..98483921c7f 100644 --- a/Gemfile.next.checksum +++ b/Gemfile.next.checksum @@ -549,7 +549,7 @@ {"name":"raabro","version":"1.4.0","platform":"ruby","checksum":"d4fa9ff5172391edb92b242eed8be802d1934b1464061ae5e70d80962c5da882"}, {"name":"racc","version":"1.8.1","platform":"java","checksum":"54f2e6d1e1b91c154013277d986f52a90e5ececbe91465d29172e49342732b98"}, {"name":"racc","version":"1.8.1","platform":"ruby","checksum":"4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f"}, -{"name":"rack","version":"2.2.13","platform":"ruby","checksum":"ccee101719696a5da12ee9da6fb3b1d20cb329939e089e0e458be6e93667f0fb"}, +{"name":"rack","version":"2.2.17","platform":"ruby","checksum":"5fe02a1ca80d6fb2271dba00985ee2962d6f5620b6f46dfed89f5301ac4699dd"}, {"name":"rack-accept","version":"0.4.5","platform":"ruby","checksum":"66247b5449db64ebb93ae2ec4af4764b87d1ae8a7463c7c68893ac13fa8d4da2"}, {"name":"rack-attack","version":"6.7.0","platform":"ruby","checksum":"3ca47e8f66cd33b2c96af53ea4754525cd928ed3fa8da10ee6dad0277791d77c"}, {"name":"rack-cors","version":"2.0.2","platform":"ruby","checksum":"415d4e1599891760c5dc9ef0349c7fecdf94f7c6a03e75b2e7c2b54b82adda1b"}, diff --git a/Gemfile.next.lock b/Gemfile.next.lock index a4935d3c08e..3d1d266f5af 100644 --- a/Gemfile.next.lock +++ b/Gemfile.next.lock @@ -1511,7 +1511,7 @@ GEM pyu-ruby-sasl (0.0.3.3) raabro (1.4.0) racc (1.8.1) - rack (2.2.13) + rack (2.2.17) rack-accept (0.4.5) rack (>= 0.4) rack-attack (6.7.0) diff --git a/app/assets/javascripts/graphql_shared/possible_types.json b/app/assets/javascripts/graphql_shared/possible_types.json index 449d0784457..42c78146158 100644 --- a/app/assets/javascripts/graphql_shared/possible_types.json +++ b/app/assets/javascripts/graphql_shared/possible_types.json @@ -4,10 +4,12 @@ "ContainerProtectionTagRule" ], "AiCatalogItem": [ - "AiCatalogAgent" + "AiCatalogAgent", + "AiCatalogFlow" ], "AiCatalogItemVersion": [ - "AiCatalogAgentVersion" + "AiCatalogAgentVersion", + "AiCatalogFlowVersion" ], "AlertManagementIntegration": [ "AlertManagementHttpIntegration", diff --git a/app/assets/javascripts/repository/components/blob_content_viewer.vue b/app/assets/javascripts/repository/components/blob_content_viewer.vue index 867d7900be4..c81c3d71cee 100644 --- a/app/assets/javascripts/repository/components/blob_content_viewer.vue +++ b/app/assets/javascripts/repository/components/blob_content_viewer.vue @@ -314,7 +314,9 @@ export default { await this.$nextTick(); handleLocationHash(); // Ensures that we scroll to the hash when async content is loaded - eventHub.$emit('showBlobInteractionZones', this.blobInfo.path); + if (type === SIMPLE_BLOB_VIEWER) { + eventHub.$emit('showBlobInteractionZones', this.blobInfo.path); + } }) .catch(() => this.displayError()) .finally(() => { diff --git a/app/assets/javascripts/repository/file_tree_browser/file_tree_browser.vue b/app/assets/javascripts/repository/file_tree_browser/file_tree_browser.vue index 7afad167993..194b1cf7401 100644 --- a/app/assets/javascripts/repository/file_tree_browser/file_tree_browser.vue +++ b/app/assets/javascripts/repository/file_tree_browser/file_tree_browser.vue @@ -1,14 +1,18 @@ diff --git a/app/assets/javascripts/vue_merge_request_widget/components/checks/constants.js b/app/assets/javascripts/vue_merge_request_widget/components/checks/constants.js index 6077b0b8879..6e4cc4ed1d0 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/checks/constants.js +++ b/app/assets/javascripts/vue_merge_request_widget/components/checks/constants.js @@ -34,7 +34,7 @@ export const FAILURE_REASONS = { merge_request_blocked: __('Merge request dependencies must be merged.'), status_checks_must_pass: __('Status checks must pass.'), jira_association_missing: __('Either the title or description must reference a Jira issue.'), - requested_changes: __('The change requests must be completed or resolved.'), + requested_changes: __('Change requests must be approved by the requesting user.'), approvals_syncing: __('The merge request approvals are currently syncing.'), locked_paths: __('All paths must be unlocked'), locked_lfs_files: __('All LFS files must be unlocked.'), diff --git a/app/assets/javascripts/wikis/wiki_notes/components/wiki_note.vue b/app/assets/javascripts/wikis/wiki_notes/components/wiki_note.vue index 64839cfcd11..3e49d6a51e9 100644 --- a/app/assets/javascripts/wikis/wiki_notes/components/wiki_note.vue +++ b/app/assets/javascripts/wikis/wiki_notes/components/wiki_note.vue @@ -6,6 +6,7 @@ import DeleteNoteMutation from '~/wikis/graphql/notes/delete_wiki_page_note.muta import { clearDraft, getDraft } from '~/lib/utils/autosave'; import { __ } from '~/locale'; import { confirmAction } from '~/lib/utils/confirm_via_gl_modal/confirm_action'; +import { getLocationHash } from '~/lib/utils/url_utility'; import { TYPENAME_USER } from '~/graphql_shared/constants'; import { createAlert } from '~/alert'; import AwardsList from '~/vue_shared/components/awards_list.vue'; @@ -101,18 +102,24 @@ export default { noteAnchorId() { return `note_${this.noteId}`; }, + isTarget() { + return getLocationHash() === this.noteAnchorId; + }, canAwardEmoji() { return this.note.userPermissions?.awardEmoji; }, dynamicClasses() { return { timeLineEntryItem: { + 'note note-wrapper note-comment': true, [`note-row-${this.noteId}`]: true, 'gl-opacity-5 gl-pointer-events-none': this.isUpdating || this.isDeleting, 'is-editable': this.canEdit, 'internal-note': this.note.internal, + target: this.isTarget, }, noteParent: { + 'timeline-content': true, 'gl-rounded-lg gl-border gl-border-section': !this.replyNote, 'gl-ml-7': this.replyNote, 'gl-bg-section gl-ml-8': !this.replyNote, @@ -255,7 +262,6 @@ export default { :id="noteAnchorId" :class="dynamicClasses.timeLineEntryItem" :data-note-id="noteId" - class="note note-wrapper note-comment" data-testid="noteable-note-container" >
diff --git a/app/assets/stylesheets/page_bundles/tree.scss b/app/assets/stylesheets/page_bundles/tree.scss index 4b6ba9b2080..a5ef41616d1 100644 --- a/app/assets/stylesheets/page_bundles/tree.scss +++ b/app/assets/stylesheets/page_bundles/tree.scss @@ -26,6 +26,14 @@ $bottom-padding: $gl-spacing-scale-6; } } +.repository-tree-list-responsive { + width: var(--tree-width); + + @include media-breakpoint-down(md) { + width: 250px; + } +} + .tree-holder { .nav-block { margin: $gl-spacing-scale-2 0 $gl-spacing-scale-5; diff --git a/app/graphql/mutations/work_items/bulk_update.rb b/app/graphql/mutations/work_items/bulk_update.rb index e7320696a80..e85c593e8c4 100644 --- a/app/graphql/mutations/work_items/bulk_update.rb +++ b/app/graphql/mutations/work_items/bulk_update.rb @@ -23,7 +23,7 @@ module Mutations experiment: { milestone: '18.2' } argument :ids, [::Types::GlobalIDType[::WorkItem]], required: true, - description: 'Global ID array of the issues that will be updated. ' \ + description: 'Global ID array of the work items that will be updated. ' \ "IDs that the user can\'t update will be ignored. A max of #{MAX_WORK_ITEMS} can be provided." argument :milestone_widget, ::Types::WorkItems::Widgets::MilestoneInputType, diff --git a/app/graphql/resolvers/work_items/widgets_resolver.rb b/app/graphql/resolvers/work_items/widgets_resolver.rb new file mode 100644 index 00000000000..3f7c3c32734 --- /dev/null +++ b/app/graphql/resolvers/work_items/widgets_resolver.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +module Resolvers + module WorkItems + class WidgetsResolver < BaseResolver + type [::GraphQL::Types::String], null: true + + MAX_TYPES = 100 + + argument :ids, [::Types::GlobalIDType[::WorkItems::Type]], + required: true, + description: <<~DESC.squish + Global ID array of work items types to fetch available widgets for. + A max of #{MAX_TYPES} IDs can be provided at a time. + DESC + + def ready?(**args) + if args[:ids].size > MAX_TYPES + raise Gitlab::Graphql::Errors::ArgumentError, + format( + _('No more than %{max_work_items} work items can be loaded at the same time'), + max_work_items: MAX_TYPES + ) + end + + super + end + + def resolve(ids:) + ::WorkItems::Type + .id_in(ids.map(&:model_id)) + .reduce(Set.new) do |result, type| + types = type.widgets(resource_parent).map { |widget| widget.widget_type.upcase } + result.union(types) + end + end + + private + + def resource_parent + object.respond_to?(:sync) ? object.sync : object + end + strong_memoize_attr :resource_parent + end + end +end diff --git a/app/graphql/types/namespace_type.rb b/app/graphql/types/namespace_type.rb index bc51d7f4947..590f13eb00c 100644 --- a/app/graphql/types/namespace_type.rb +++ b/app/graphql/types/namespace_type.rb @@ -113,6 +113,12 @@ module Types experiment: { milestone: '18.1' }, resolver: ::Resolvers::Namespaces::WorkItemsResolver + field :work_items_widgets, + null: true, + description: 'List of available widgets for the given work items.', + experiment: { milestone: '18.2' }, + resolver: ::Resolvers::WorkItems::WidgetsResolver + field :work_item_types, Types::WorkItems::TypeType.connection_type, resolver: Resolvers::WorkItems::TypesResolver, experiment: { milestone: '17.2' }, diff --git a/app/models/resource_state_event.rb b/app/models/resource_state_event.rb index 1d786cc024b..cb99ed0a221 100644 --- a/app/models/resource_state_event.rb +++ b/app/models/resource_state_event.rb @@ -71,4 +71,4 @@ class ResourceStateEvent < ResourceEvent end end -ResourceStateEvent.prepend_mod_with('ResourceStateEvent') +ResourceStateEvent.prepend_mod diff --git a/app/services/members/projects/creator_service.rb b/app/services/members/projects/creator_service.rb index fa3e0f968eb..fd967384728 100644 --- a/app/services/members/projects/creator_service.rb +++ b/app/services/members/projects/creator_service.rb @@ -46,3 +46,5 @@ module Members end end end + +Members::Projects::CreatorService.prepend_mod_with('Members::Projects::CreatorService') diff --git a/app/services/web_hooks/log_execution_service.rb b/app/services/web_hooks/log_execution_service.rb index 52ac45ae3ce..c68f00f1e0e 100644 --- a/app/services/web_hooks/log_execution_service.rb +++ b/app/services/web_hooks/log_execution_service.rb @@ -17,8 +17,8 @@ module WebHooks end def execute - update_hook_failure_state log_execution + update_hook_failure_state end private @@ -63,19 +63,20 @@ module WebHooks hook.parent.update_last_webhook_failure(hook) if hook.parent end rescue Gitlab::ExclusiveLeaseHelpers::FailedToObtainLockError - raise if raise_lock_error? + # In case the lock is not obtained due to numerous concurrent requests, + # we do not attempt to update the hook status. + # + # This should be fine as if the lock is not obtained, it is likely due + # to many concurrent job executions, and eventually one of these should + # successfully obtain the lease and update the hook status. + rescue StandardError => e + # To avoid WebHookLog being created twice in case an exception is raised + # when updating the hook status and the job retried. + Gitlab::ErrorTracking.track_exception(e, hook_id: hook.id) end def lock_name "web_hooks:update_hook_failure_state:#{hook.id}" end - - # Allow an error to be raised after failing to obtain a lease only if the hook - # is not already in the correct failure state. - def raise_lock_error? - hook.reset # Reload so properties are guaranteed to be current. - - hook.executable? != (response_category == :ok) - end end end diff --git a/app/views/projects/_files.html.haml b/app/views/projects/_files.html.haml index 5d05b7409e8..b2641ea6ab5 100644 --- a/app/views/projects/_files.html.haml +++ b/app/views/projects/_files.html.haml @@ -11,7 +11,6 @@ - if repository_file_tree_browser_enabled .gl-flex.navigation-root - #js-file-browser .gl-w-full.gl-min-w-0 #tree-holder.tree-holder.clearfix.js-per-page.gl-mt-5{ data: { blame_per_page: Gitlab::Git::BlamePagination::PAGINATION_PER_PAGE } } = render 'projects/tree_content', project: project, ref: ref, pipeline: pipeline, tree: @tree, ref_type: @ref_type diff --git a/app/views/projects/blob/show.html.haml b/app/views/projects/blob/show.html.haml index 74f7fab17b7..e2178a32025 100644 --- a/app/views/projects/blob/show.html.haml +++ b/app/views/projects/blob/show.html.haml @@ -15,7 +15,7 @@ - if repository_file_tree_browser_enabled .gl-flex.navigation-root #js-file-browser - #tree-holder.tree-holder.gl-pt-4.gl-w-full.gl-min-w-0 + #tree-holder.tree-holder.gl-pt-4.gl-pl-4.gl-w-full.gl-min-w-0 = render 'blob', blob: @blob - else #tree-holder.tree-holder.gl-pt-4 diff --git a/app/views/projects/tree/show.html.haml b/app/views/projects/tree/show.html.haml index 00553fb84ba..1309a76168b 100644 --- a/app/views/projects/tree/show.html.haml +++ b/app/views/projects/tree/show.html.haml @@ -17,7 +17,7 @@ - if repository_file_tree_browser_enabled .gl-flex.navigation-root #js-file-browser - .gl-w-full.gl-min-w-0 + .gl-w-full.gl-min-w-0.gl-pl-4 = render 'projects/files', commit: @last_commit, project: @project, ref: @ref, content_url: project_tree_path(@project, @id) - else = render 'projects/files', commit: @last_commit, project: @project, ref: @ref, content_url: project_tree_path(@project, @id) diff --git a/config/feature_flags/beta/container_registry_immutable_tags.yml b/config/feature_flags/beta/container_registry_immutable_tags.yml deleted file mode 100644 index 1178fab16ca..00000000000 --- a/config/feature_flags/beta/container_registry_immutable_tags.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -name: container_registry_immutable_tags -feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/515996 -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183135 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/505455 -milestone: '17.11' -group: group::container registry -type: beta -default_enabled: false diff --git a/doc/administration/gitlab_duo_self_hosted/_index.md b/doc/administration/gitlab_duo_self_hosted/_index.md index eb6fe08cf4a..710005a92fd 100644 --- a/doc/administration/gitlab_duo_self_hosted/_index.md +++ b/doc/administration/gitlab_duo_self_hosted/_index.md @@ -81,7 +81,7 @@ of whether you can use these features with Duo Core or Duo Pro when | [Refactor Code](../../user/gitlab_duo_chat/examples.md#refactor-code-in-the-ide) | {{< icon name="check-circle-filled" >}} Yes | GitLab 17.9 and later | Generally available | | [Fix Code](../../user/gitlab_duo_chat/examples.md#fix-code-in-the-ide) | {{< icon name="check-circle-filled" >}} Yes | GitLab 17.9 and later | Generally available | | [Root Cause Analysis](../../user/gitlab_duo_chat/examples.md#troubleshoot-failed-cicd-jobs-with-root-cause-analysis) | {{< icon name="check-circle-filled" >}} Yes | GitLab 17.10 and later | Beta | -| [Vulnerability Explanation](../../user/application_security/vulnerabilities/_index.md#explaining-a-vulnerability) | {{< icon name="check-circle-filled" >}} Yes | GitLab 18.1 and later | Beta | +| [Vulnerability Explanation](../../user/application_security/vulnerabilities/_index.md#vulnerability-explanation) | {{< icon name="check-circle-filled" >}} Yes | GitLab 18.1 and later | Beta | For more examples of a question you can ask, see [Ask about GitLab](../../user/gitlab_duo_chat/examples.md). diff --git a/doc/administration/gitlab_duo_self_hosted/support_engineer_playbook.md b/doc/administration/gitlab_duo_self_hosted/support_engineer_playbook.md new file mode 100644 index 00000000000..fd5cabeef4a --- /dev/null +++ b/doc/administration/gitlab_duo_self_hosted/support_engineer_playbook.md @@ -0,0 +1,319 @@ +--- +stage: AI-powered +group: Custom Models +info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments +description: Troubleshooting tips for GitLab Duo Self-Hosted +title: GitLab Duo Self-Hosted Support Engineer Playbook +--- + +{{< details >}} + +- Tier: Premium, Ultimate +- Add-on: GitLab Duo Enterprise +- Offering: GitLab Self-Managed + +{{< /details >}} + +{{< history >}} + +- [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/12972) in GitLab 17.1 [with a flag](../feature_flags/_index.md) named `ai_custom_model`. Disabled by default. +- [Enabled on GitLab Self-Managed](https://gitlab.com/groups/gitlab-org/-/epics/15176) in GitLab 17.6. +- Changed to require GitLab Duo add-on in GitLab 17.6 and later. +- Feature flag `ai_custom_model` removed in GitLab 17.8. +- Generally available in GitLab 17.9. +- Changed to include Premium in GitLab 18.0. + +{{< /history >}} + +## Support Engineer Playbook and Common Issues + +This section provides Support Engineers with essential commands and troubleshooting steps for debugging GitLab Duo Self-Hosted issues. + +## Essential Debugging Commands + +### Display AI Gateway Environment Variables + +Check all AI Gateway environment variables to verify configuration: + +```shell +docker exec -it env | grep AIGW +``` + +Key variables to verify: + +- `AIGW_CUSTOM_MODELS__ENABLED` - must be `true` +- `AIGW_GITLAB_URL` - should match your GitLab instance URL +- `AIGW_GITLAB_API_URL` - should be accessible from the container +- `AIGW_AUTH__BYPASS_EXTERNAL` - should only be `true` during troubleshooting + +### Verify User Permissions + +Check if a user has the correct permissions for Code Suggestions with self-hosted models: + +```ruby +# In GitLab Rails console +user = User.find_by_id("") +user.allowed_to_use?(:code_suggestions, service_name: :self_hosted_models) +``` + +### Examine AI Gateway Client Logs + +View AI Gateway client logs to identify connection issues: + +```shell +docker logs | grep "Gitlab::Llm::AiGateway::Client" +``` + +### View GitLab Logs for AI Gateway Requests + +To see the actual requests made to the AI Gateway, use: + +```shell +# View live logs +sudo gitlab-ctl tail | grep -E "(ai_gateway|llm\.log)" + +# View specific log file with JSON formatting +sudo cat /var/log/gitlab/gitlab-rails/llm.log | jq '.' + +# Filter for specific request types + sudo cat /var/log/gitlab/gitlab-rails/llm.log | jq 'select(.message)' + + sudo cat /var/log/gitlab/gitlab-rails/llm.log | grep Llm::CompletionWorker | jq '.' +``` + +### View AI Gateway Logs for Model Requests + +To see the actual requests sent to the model: + +```shell +# View AI Gateway container logs +docker logs 2>&1 | grep -E "(model|litellm|custom_openai)" + +# For structured logs, if available +docker logs 2>&1 | grep "model_endpoint" +``` + +## Common Configuration Issues and Solutions + +### Missing `/v1` Suffix in Model Endpoint + +**Symptom**: 404 errors when making requests to vLLM or OpenAI-compatible models + +**How to spot in logs**: + +```shell +# Look for 404 errors in AI Gateway logs +docker logs | grep "404" +``` + +**Solution**: Ensure the model endpoint includes the `/v1` suffix: + +- Incorrect: `http://localhost:4000` +- Correct: `http://localhost:4000/v1` + +### Certificate Validation Issues + +**Symptom**: SSL certificate errors or connection failures + +**How to spot in logs**: + +```shell +# Look for SSL/TLS errors +sudo cat /var/log/gitlab/gitlab-rails/llm.log | grep -i "ssl\|certificate\|tls" +``` + +**Validation**: Verify certificate status - GitLab server must use a trusted certificate, as self-signed certificates are not supported. + +**Solution**: + +- Use trusted certificates for GitLab instance +- If using self-signed certificates, configure proper certificate paths in the AI Gateway container + +### Network Connectivity Issues + +**Symptom**: Timeouts or connection refused errors + +**How to spot in logs**: + +```shell +# Look for network-related errors +docker logs | grep -E "(timeout|connection|refused|unreachable)" +``` + +**Validation commands**: + +```shell +# Test from AI Gateway container to GitLab +docker exec -it curl "$AIGW_GITLAB_API_URL/projects" + +# Test from AI Gateway container to model endpoint +docker exec -it curl "/health" +``` + +### Authentication and Authorization Issues + +**Symptom**: 401 Unauthorized or 403 Forbidden errors + +**How to spot in logs**: + +```shell +# Look for authentication errors +sudo cat /var/log/gitlab/gitlab-rails/llm.log | jq 'select(.status == 401 or .status == 403)' +``` + +**Common causes**: + +- User doesn't have GitLab Duo Enterprise seat assigned +- License issues +- Incorrect AI Gateway URL configuration + +### Model Configuration Issues + +**Symptom**: Model not responding or returning errors + +**How to spot in logs**: + +```shell +# Look for model-specific errors +docker logs | grep -E "(model_name|model_endpoint|litellm)" +``` + +**Validation**: + +```shell +# Test model directly from AI Gateway container +docker exec -it sh +curl --request POST "/v1/chat/completions" \ + --header 'Content-Type: application/json' \ + --data '{"model": "", "messages": [{"role": "user", "content": "Hello"}]}' +``` + +## Log Analysis Workflow + +### Step 1: Enable Verbose Logging + +Check if the `expanded_ai_logging` feature flag is enabled, in GitLab Rails console: + +```ruby +Feature.enabled?(:expanded_ai_logging) +``` + +If it returns `false`, enable the flag using: + +```ruby +Feature.enable(:expanded_ai_logging) +``` + +### Step 2: Reproduce the Issue + +Have the user reproduce the issue while monitoring logs: + +```shell +# Terminal 1: Monitor GitLab logs +sudo gitlab-ctl tail | grep -E "(ai_gateway|llm\.log)" + +# Terminal 2: Monitor AI Gateway logs +docker logs -f +``` + +### Step 3: Analyze Request Flow + +1. **GitLab to AI Gateway**: Check if request reaches AI Gateway +1. **AI Gateway to Model**: Verify model endpoint is called +1. **Response Path**: Ensure response is properly formatted and returned + +### Step 4: Common Error Patterns + +| Error Pattern | Location | Likely Cause | +|---------------|----------|--------------| +| `Connection refused` | GitLab logs | AI Gateway not accessible | +| `404 Not Found` | AI Gateway logs | Missing `/v1` in model endpoint | +| `401 Unauthorized` | GitLab logs | Authentication/license issues | +| `Timeout` | Either | Network or model performance issues | +| `SSL certificate verify failed` | GitLab logs | Certificate validation issues | + +## Quick Diagnostic Commands + +## **AI Gateway Instance Commands:** + +**1. Test AI Gateway health:** + +```shell +curl --silent --output /dev/null --write-out "%{http_code}" "/monitoring/healthz" +``` + +**2. Check AI Gateway environment variables:** + +```shell +docker exec env | grep AIGW +``` + +**3. Check AI Gateway logs for errors:** + +```shell +docker logs 2>&1 | grep --ignore-case error | tail --lines=20 +``` + +## **GitLab Self-Managed Instance Commands:** + +**4. Check user permissions (GitLab Rails console):** + +```shell +sudo gitlab-rails console +``` + +Then in the console: + +```ruby +User.find_by_id('').can?(:access_code_suggestions) +``` + +**5. Check GitLab LLM logs for errors:** + +```shell +sudo tail --lines=100 /var/log/gitlab/gitlab-rails/llm.log | grep --ignore-case error +``` + +**6. Check feature flags:** + +```shell +sudo gitlab-rails console +``` + +Then: + +```ruby +Feature.enabled?(:expanded_ai_logging) +``` + +**7. Test connectivity from GitLab to AI Gateway:** + +```shell +curl --verbose "/monitoring/healthz" +``` + +### Emergency Diagnostic One-liner + +For quick issue identification: + +```shell +# Check all critical components at once +docker exec env | grep AIGW_CUSTOM_MODELS__ENABLED && \ +curl --silent "/monitoring/healthz" && \ +sudo tail --lines=10 /var/log/gitlab/gitlab-rails/llm.log | jq '.level' +``` + +## Escalation Criteria + +Escalate to Custom Models team when: + +1. **All basic troubleshooting steps completed** without resolution +1. **Model integration issues** that require deep technical knowledge +1. **Feature not listed** in self-hosted models unit primitives +1. **Suspected GitLab Duo platform bugs** affecting multiple users +1. **Performance issues** with specific model configurations + +## Additional Resources + +- [AI Gateway Installation Guide](../../install/install_ai_gateway.md) +- [GitLab Duo Self-Hosted Troubleshooting](troubleshooting.md) diff --git a/doc/administration/gitlab_duo_self_hosted/troubleshooting.md b/doc/administration/gitlab_duo_self_hosted/troubleshooting.md index e00562a576b..2ca2ba994c1 100644 --- a/doc/administration/gitlab_duo_self_hosted/troubleshooting.md +++ b/doc/administration/gitlab_duo_self_hosted/troubleshooting.md @@ -515,3 +515,4 @@ If a feature is not working or a feature button (for example, **`/troubleshoot`* ## Related topics - [GitLab Duo troubleshooting](../../user/gitlab_duo_chat/troubleshooting.md) +- [Support Engineer Playbook and Common Issues](support_engineer_playbook.md) diff --git a/doc/api/graphql/reference/_index.md b/doc/api/graphql/reference/_index.md index c7571fd9f85..e15047dc920 100644 --- a/doc/api/graphql/reference/_index.md +++ b/doc/api/graphql/reference/_index.md @@ -13102,7 +13102,7 @@ Input type: `WorkItemBulkUpdateInput` | `confidential` {{< icon name="warning-solid" >}} | [`Boolean`](#boolean) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 18.2. | | `healthStatusWidget` {{< icon name="warning-solid" >}} | [`WorkItemWidgetHealthStatusInput`](#workitemwidgethealthstatusinput) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 18.2. | | `hierarchyWidget` {{< icon name="warning-solid" >}} | [`WorkItemWidgetHierarchyCreateInput`](#workitemwidgethierarchycreateinput) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 18.2. | -| `ids` | [`[WorkItemID!]!`](#workitemid) | Global ID array of the issues that will be updated. IDs that the user can't update will be ignored. A max of 100 can be provided. | +| `ids` | [`[WorkItemID!]!`](#workitemid) | Global ID array of the work items that will be updated. IDs that the user can't update will be ignored. A max of 100 can be provided. | | `iterationWidget` {{< icon name="warning-solid" >}} | [`WorkItemWidgetIterationInput`](#workitemwidgetiterationinput) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 18.2. | | `labelsWidget` | [`WorkItemWidgetLabelsUpdateInput`](#workitemwidgetlabelsupdateinput) | Input for labels widget. | | `milestoneWidget` {{< icon name="warning-solid" >}} | [`WorkItemWidgetMilestoneInput`](#workitemwidgetmilestoneinput) | **Deprecated**: **Status**: Experiment. Introduced in GitLab 18.2. | @@ -21887,6 +21887,36 @@ An AI catalog agent version. | `userPrompt` | [`String`](#string) | User prompt for the agent. | | `versionName` | [`String`](#string) | Version name of the item version. | +### `AiCatalogFlow` + +An AI catalog flow. + +#### Fields + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `createdAt` | [`Time!`](#time) | Date of creation. | +| `description` | [`String!`](#string) | Description of the item. | +| `id` | [`ID!`](#id) | ID of the item. | +| `itemType` | [`AiCatalogItemType!`](#aicatalogitemtype) | Type of the item. | +| `name` | [`String!`](#string) | Name of the item. | +| `project` | [`Project`](#project) | Project for the item. | +| `versions` | [`AiCatalogItemVersionConnection`](#aicatalogitemversionconnection) | Versions of the item. (see [Connections](#connections)) | + +### `AiCatalogFlowVersion` + +An AI catalog flow version. + +#### Fields + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `createdAt` | [`Time!`](#time) | Timestamp of when the item version was created. | +| `id` | [`ID!`](#id) | ID of the item version. | +| `publishedAt` | [`Time`](#time) | Timestamp of when the item version was published. | +| `updatedAt` | [`Time!`](#time) | Timestamp of when the item version was updated. | +| `versionName` | [`String`](#string) | Version name of the item version. | + ### `AiConversationsThread` Conversation thread of the AI feature. @@ -30654,6 +30684,23 @@ four standard [pagination arguments](#pagination-arguments): | `weight` | [`String`](#string) | Weight applied to the work item, "none" and "any" values are supported. | | `weightWildcardId` | [`WeightWildcardId`](#weightwildcardid) | Filter by weight ID wildcard. Incompatible with weight. | +##### `Group.workItemsWidgets` + +List of available widgets for the given work items. + +{{< details >}} +**Introduced** in GitLab 18.2. +**Status**: Experiment. +{{< /details >}} + +Returns [`[String!]`](#string). + +###### Arguments + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `ids` | [`[WorkItemsTypeID!]!`](#workitemstypeid) | Global ID array of work items types to fetch available widgets for. A max of 100 IDs can be provided at a time. | + ##### `Group.workspacesClusterAgents` Cluster agents in the namespace with workspaces capabilities. @@ -34954,6 +35001,23 @@ four standard [pagination arguments](#pagination-arguments): | `weight` | [`String`](#string) | Weight applied to the work item, "none" and "any" values are supported. | | `weightWildcardId` | [`WeightWildcardId`](#weightwildcardid) | Filter by weight ID wildcard. Incompatible with weight. | +##### `Namespace.workItemsWidgets` + +List of available widgets for the given work items. + +{{< details >}} +**Introduced** in GitLab 18.2. +**Status**: Experiment. +{{< /details >}} + +Returns [`[String!]`](#string). + +###### Arguments + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `ids` | [`[WorkItemsTypeID!]!`](#workitemstypeid) | Global ID array of work items types to fetch available widgets for. A max of 100 IDs can be provided at a time. | + ##### `Namespace.workspacesClusterAgents` Cluster agents in the namespace with workspaces capabilities. @@ -44316,6 +44380,7 @@ Possible item types for AI items. | Value | Description | | ----- | ----------- | | `AGENT` | Agent. | +| `FLOW` | Flow. | ### `AiConversationsThreadsConversationType` @@ -49880,6 +49945,7 @@ An AI catalog item. Implementations: - [`AiCatalogAgent`](#aicatalogagent) +- [`AiCatalogFlow`](#aicatalogflow) ##### Fields @@ -49900,6 +49966,7 @@ An AI catalog item version. Implementations: - [`AiCatalogAgentVersion`](#aicatalogagentversion) +- [`AiCatalogFlowVersion`](#aicatalogflowversion) ##### Fields diff --git a/doc/api/group_service_accounts.md b/doc/api/group_service_accounts.md index 3aecb92c941..21ed374de5a 100644 --- a/doc/api/group_service_accounts.md +++ b/doc/api/group_service_accounts.md @@ -68,7 +68,8 @@ Example response: "id": 58, "username": "service_account_group_346_", "name": "Service account user", - "email": "service_account_group_346_@noreply.gitlab.example.com" + "email": "service_account_group_346_@noreply.gitlab.example.com", + "unconfirmed_email": "custom_email@example.com" } ] ``` @@ -103,7 +104,7 @@ Supported attributes: | `id` | integer/string | yes | ID or [URL-encoded path](rest/_index.md#namespaced-paths) of a top-level group. | | `name` | string | no | User account name. If not specified, uses `Service account user`. | | `username` | string | no | User account username. If not specified, generates a name prepended with `service_account_group_`. | -| `email` | string | no | User account email. If not specified, generates an email prepended with `service_account_group_`. Custom email addresses require confirmation before the account is active, unless the group has a matching [verified domain](../user/enterprise_user/_index.md#verified-domains-for-groups). | +| `email` | string | no | Email of the user account. If not specified, generates an email prepended with `service_account_group_`. Custom email addresses require confirmation, unless the group has a matching [verified domain](../user/enterprise_user/_index.md#verified-domains-for-groups) or email confirmation settings are [turned off](../administration/settings/sign_up_restrictions.md#confirm-user-email). | Example request: @@ -127,6 +128,7 @@ Example response: {{< history >}} - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182607/) in GitLab 17.10. +- Add custom email address [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/196309) in GitLab 18.2. {{< /history >}} @@ -150,11 +152,12 @@ Parameters: | `user_id` | integer | yes | The ID of the service account. | | `name` | string | no | Name of the user. | | `username` | string | no | Username of the user. | +| `email` | string | no | Email of the user account. Custom email addresses require confirmation, unless the group has a matching [verified domain](../user/enterprise_user/_index.md#verified-domains-for-groups) or email confirmation settings are [turned off](../administration/settings/sign_up_restrictions.md#confirm-user-email). | Example request: ```shell -curl --request PATCH --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/groups/345/service_accounts/57" --data "name=Updated Service Account" +curl --request PATCH --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/groups/345/service_accounts/57" --data "name=Updated Service Account email=updated_email@example.com" ``` Example response: @@ -164,7 +167,8 @@ Example response: "id": 57, "username": "service_account_group_345_6018816a18e515214e0c34c2b33523fc", "name": "Updated Service Account", - "email": "service_account_group_345_@noreply.gitlab.example.com" + "email": "service_account_group_345_@noreply.gitlab.example.com", + "unconfirmed_email": "custom_email@example.com" } ``` diff --git a/doc/api/oauth2.md b/doc/api/oauth2.md index c76aa66a57a..3bcce257a3d 100644 --- a/doc/api/oauth2.md +++ b/doc/api/oauth2.md @@ -92,6 +92,12 @@ authorization with each flow. ### Authorization code with Proof Key for Code Exchange (PKCE) +{{< history >}} + +- Group SAML SSO support for OAuth applications [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/461212) in GitLab 18.2 [with a flag](../administration/feature_flags/_index.md) named `ff_oauth_redirect_to_sso_login`. Disabled by default. + +{{< /history >}} + The [PKCE RFC](https://www.rfc-editor.org/rfc/rfc7636#section-1.1) includes a detailed flow description, from authorization request through access token. The following steps describe our implementation of the flow. @@ -120,7 +126,7 @@ Before starting the flow, generate the `STATE`, the `CODE_VERIFIER` and the `COD `/oauth/authorize` page with the following query parameters: ```plaintext - https://gitlab.example.com/oauth/authorize?client_id=APP_ID&redirect_uri=REDIRECT_URI&response_type=code&state=STATE&scope=REQUESTED_SCOPES&code_challenge=CODE_CHALLENGE&code_challenge_method=S256 + https://gitlab.example.com/oauth/authorize?client_id=APP_ID&redirect_uri=REDIRECT_URI&response_type=code&state=STATE&scope=REQUESTED_SCOPES&code_challenge=CODE_CHALLENGE&code_challenge_method=S256&top_level_namespace_path=TOP_LEVEL_NAMESPACE ``` This page asks the user to approve the request from the app to access their @@ -128,6 +134,8 @@ Before starting the flow, generate the `STATE`, the `CODE_VERIFIER` and the `COD redirected back to the specified `REDIRECT_URI`. The [scope parameter](../integration/oauth_provider.md#view-all-authorized-applications) is a space-separated list of scopes associated with the user. For example,`scope=read_user+profile` requests the `read_user` and `profile` scopes. + The `top_level_namespace_path` is the top level namespace path associated with the project. This optional parameter + should be used when [SAML SSO](../user/group/saml_sso/_index.md) is configured for the associated group. The redirect includes the authorization `code`, for example: ```plaintext @@ -188,6 +196,12 @@ You can now make requests to the API with the access token. ### Authorization code flow +{{< history >}} + +- Group SAML SSO support for OAuth applications [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/461212) in GitLab 18.2 [with a flag](../administration/feature_flags/_index.md) named `ff_oauth_redirect_to_sso_login`. Disabled by default. + +{{< /history >}} + {{< alert type="note" >}} Check the [RFC spec](https://www.rfc-editor.org/rfc/rfc6749#section-4.1) for a @@ -206,7 +220,7 @@ be used as a CSRF token. `/oauth/authorize` page with the following query parameters: ```plaintext - https://gitlab.example.com/oauth/authorize?client_id=APP_ID&redirect_uri=REDIRECT_URI&response_type=code&state=STATE&scope=REQUESTED_SCOPES + https://gitlab.example.com/oauth/authorize?client_id=APP_ID&redirect_uri=REDIRECT_URI&response_type=code&state=STATE&scope=REQUESTED_SCOPES&top_level_namespace_path=TOP_LEVEL_NAMESPACE ``` This page asks the user to approve the request from the app to access their @@ -214,6 +228,8 @@ be used as a CSRF token. redirected back to the specified `REDIRECT_URI`. The [scope parameter](../integration/oauth_provider.md#view-all-authorized-applications) is a space-separated list of scopes associated with the user. For example,`scope=read_user+profile` requests the `read_user` and `profile` scopes. + The `top_level_namespace_path` is the top level namespace path associated with the project. This optional parameter + should be used when [SAML SSO](../user/group/saml_sso/_index.md) is configured for the associated group. The redirect includes the authorization `code`, for example: ```plaintext diff --git a/doc/api/openapi/openapi_v2.yaml.generated b/doc/api/openapi/openapi_v2.yaml.generated new file mode 100644 index 00000000000..ad7ed0b6d93 --- /dev/null +++ b/doc/api/openapi/openapi_v2.yaml.generated @@ -0,0 +1,67361 @@ +--- +info: + title: GitLab API + version: v4 +swagger: '2.0' +produces: +- application/json +securityDefinitions: + access_token_header: + type: apiKey + name: PRIVATE-TOKEN + in: header + access_token_query: + type: apiKey + name: private_token + in: query +host: gitlab.com +tags: +- name: award_emoji + description: Operations about award_emoji +- name: badges + description: Operations about badges +- name: groups + description: Operations about groups +- name: runners + description: Operations about runners +- name: group_avatar + description: Operations about group_avatars +- name: invitations + description: Operations about invitations +- name: members + description: Operations about members +- name: personal_access_tokens + description: Operations about personal_access_tokens +- name: wikis + description: Operations about wikis +- name: alert_management + description: Operations about alert_managements +- name: branches + description: Operations about branches +- name: secure_files + description: Operations about secure_files +- name: cargo_packages + description: Operations about cargo_packages +- name: commits + description: Operations about commits +- name: pages + description: Operations about pages +- name: pages_domains + description: Operations about pages_domains +- name: project_avatar + description: Operations about project_avatars +- name: projects_job_token_scope + description: Operations about projects_job_token_scopes +- name: project_snippets + description: Operations about project_snippets +- name: protected_tags + description: Operations about protected_tags +- name: remote_mirrors + description: Operations about remote_mirrors +- name: tags + description: Operations about tags +- name: batched_background_migrations + description: Operations about batched_background_migrations +- name: admin + description: Operations about admins +- name: migrations + description: Operations about migrations +- name: broadcast_messages + description: Operations about broadcast_messages +- name: applications + description: Operations about applications +- name: avatar + description: Operations about avatars +- name: bulk_imports + description: Operations about bulk_imports +- name: job + description: Operations about jobs +- name: jobs + description: Operations about jobs +- name: events + description: Operations about events +- name: keys + description: Operations about keys +- name: markdown + description: Operations about markdowns +- name: namespaces + description: Operations about namespaces +- name: organizations + description: Operations about organizations +- name: snippets + description: Operations about snippets +- name: hooks + description: Operations about hooks +- name: usage_data + description: Operations about usage_data +- name: metrics + description: Operations about metrics +- name: user_counts + description: Operations about user_counts +- name: user + description: Operations about users +- name: application + description: Operations about applications +- name: import + description: Operations about imports +- name: slack + description: Operations about slacks +- name: topics + description: Operations about topics +- name: web_commits + description: Operations about web_commits +- name: access_requests + description: Operations related to access requests +- name: ci_lint + description: Operations related to linting a CI config file +- name: ci_resource_groups + description: Operations to manage job concurrency with resource groups +- name: ci_variables + description: Operations related to CI/CD variables +- name: cluster_agents + description: Operations related to the GitLab agent for Kubernetes +- name: clusters + description: Operations related to clusters +- name: composer_packages + description: Operations related to Composer packages +- name: conan_packages + description: Operations related to Conan packages +- name: container_registry + description: Operations related to container registry +- name: container_registry_event + description: Operations related to container registry events +- name: debian_distribution + description: Operations related to Debian Linux distributions +- name: debian_packages + description: Operations related to Debian Linux packages +- name: dependency_proxy + description: Operations to manage dependency proxy for a groups +- name: deploy_keys + description: Operations related to deploy keys +- name: deploy_tokens + description: Operations related to deploy tokens +- name: deployments + description: Operations related to deployments +- name: dora_metrics + description: Operations related to DevOps Research and Assessment (DORA) key metrics +- name: environments + description: Operations related to environments +- name: error_tracking_client_keys + description: Operations related to error tracking client keys +- name: error_tracking_project_settings + description: Operations related to error tracking project settings +- name: feature_flags_user_lists + description: Operations related to accessing GitLab feature flag user lists +- name: feature_flags + description: Operations related to feature flags +- name: features + description: Operations related to managing Flipper-based feature flags +- name: freeze_periods + description: Operations related to deploy freeze periods +- name: generic_packages + description: Operations related to Generic packages +- name: geo + description: Operations related to Geo +- name: geo_nodes + description: Operations related Geo Nodes +- name: go_proxy + description: Operations related to Go Proxy +- name: group_export + description: Operations related to exporting groups +- name: group_import + description: Operations related to importing groups +- name: group_packages + description: Operations related to group packages +- name: helm_packages + description: Operations related to Helm packages +- name: integrations + description: Operations related to integrations +- name: issue_links + description: Operations related to issue links +- name: jira_connect_subscriptions + description: Operations related to JiraConnect subscriptions +- name: maven_packages + description: Operations related to Maven packages +- name: merge_requests + description: Operations related to merge requests +- name: metadata + description: Operations related to metadata of the GitLab instance +- name: ml_model_registry + description: Operations related to Model registry +- name: npm_packages + description: Operations related to NPM packages +- name: nuget_packages + description: Operations related to Nuget packages +- name: package_files + description: Operations about package files +- name: plan_limits + description: Operations related to plan limits +- name: project_export + description: Operations related to exporting projects +- name: project_hooks + description: Operations related to project hooks +- name: project_import + description: Operations related to importing projects +- name: project_import_bitbucket + description: Operations related to importing BitBucket projects +- name: project_import_github + description: Operations related to importing GitHub projects +- name: project_packages + description: Operations related to project packages +- name: projects + description: Operations related to projects +- name: protected environments + description: Operations related to protected environments +- name: pypi_packages + description: Operations related to PyPI packages +- name: release_links + description: Operations related to release assets (links) +- name: releases + description: Operations related to releases +- name: resource_milestone_events + description: Operations about resource milestone events +- name: rpm_packages + description: Operations related to RPM packages +- name: rubygem_packages + description: Operations related to RubyGems +- name: suggestions + description: Operations related to suggestions +- name: system_hooks + description: Operations related to system hooks +- name: terraform_state + description: Operations related to Terraform state files +- name: terraform_registry + description: Operations related to the Terraform module registry +- name: unleash_api + description: Operations related to Unleash API +paths: + "/api/v4/groups/{id}/access_requests": + get: + summary: Gets a list of access requests for a group. + description: This feature was introduced in GitLab 8.11. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Gets a list of access requests for a group. + schema: + "$ref": "#/definitions/API_Entities_AccessRequester" + tags: + - access_requests + operationId: getApiV4GroupsIdAccessRequests + post: + summary: Requests access for the authenticated user to a group. + description: This feature was introduced in GitLab 8.11. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user + type: string + required: true + responses: + '200': + description: successful operation + schema: + "$ref": "#/definitions/API_Entities_AccessRequester" + examples: + successfull_response: + id: 1 + username: raymond_smith + name: Raymond Smith + state: active + created_at: '2012-10-22T14:13:35Z' + access_level: 20 + tags: + - access_requests + operationId: postApiV4GroupsIdAccessRequests + "/api/v4/groups/{id}/access_requests/{user_id}/approve": + put: + summary: Approves an access request for the given user. + description: This feature was introduced in GitLab 8.11. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user + type: string + required: true + - in: path + name: user_id + description: The user ID of the access requester + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdAccessRequestsUserIdApprove + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdAccessRequestsUserIdApprove" + responses: + '200': + description: successful operation + schema: + "$ref": "#/definitions/API_Entities_AccessRequester" + examples: + successfull_response: + id: 1 + username: raymond_smith + name: Raymond Smith + state: active + created_at: '2012-10-22T14:13:35Z' + access_level: 20 + tags: + - access_requests + operationId: putApiV4GroupsIdAccessRequestsUserIdApprove + "/api/v4/groups/{id}/access_requests/{user_id}": + delete: + summary: Denies an access request for the given user. + description: This feature was introduced in GitLab 8.11. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user + type: string + required: true + - in: path + name: user_id + description: The user ID of the access requester + type: integer + format: int32 + required: true + responses: + '204': + description: Denies an access request for the given user. + tags: + - access_requests + operationId: deleteApiV4GroupsIdAccessRequestsUserId + "/api/v4/groups/{id}/epics/{epic_iid}/award_emoji": + get: + summary: List an awardable's emoji reactions for groups + description: Get a list of all emoji reactions for a specified awardable. This + feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group + type: string + required: true + - in: path + name: epic_iid + description: ID (`iid` for merge requests/issues/epics, `id` for snippets) + of an awardable. + type: integer + format: int32 + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List an awardable's emoji reactions for groups + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '404': + description: Not Found + tags: + - award_emoji + operationId: getApiV4GroupsIdEpicsEpicIidAwardEmoji + post: + summary: Add a new emoji reaction + description: Add an emoji reaction on the specified awardable. This feature + was introduced in 8.9 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: epic_iid + type: integer + format: int32 + required: true + - name: postApiV4GroupsIdEpicsEpicIidAwardEmoji + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdEpicsEpicIidAwardEmoji" + responses: + '201': + description: Add a new emoji reaction + schema: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '400': + description: Bad Request + '404': + description: Not Found + tags: + - award_emoji + operationId: postApiV4GroupsIdEpicsEpicIidAwardEmoji + "/api/v4/groups/{id}/epics/{epic_iid}/award_emoji/{award_id}": + get: + summary: Get a single emoji reaction + description: Get a single emoji reaction from an issue, snippet, or merge request. + This feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: award_id + description: ID of the emoji reaction. + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: epic_iid + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single emoji reaction + schema: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '404': + description: Not Found + tags: + - award_emoji + operationId: getApiV4GroupsIdEpicsEpicIidAwardEmojiAwardId + delete: + summary: Delete an emoji reaction + description: Only an administrator or the author of the reaction can delete + an emoji reaction. This feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: award_id + description: ID of an emoji reaction. + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: epic_iid + type: integer + format: int32 + required: true + responses: + '204': + description: Delete an emoji reaction + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - award_emoji + operationId: deleteApiV4GroupsIdEpicsEpicIidAwardEmojiAwardId + "/api/v4/groups/{id}/epics/{epic_iid}/notes/{note_id}/award_emoji": + get: + summary: List an awardable's emoji reactions for groups + description: Get a list of all emoji reactions for a specified awardable. This + feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: epic_iid + type: integer + format: int32 + required: true + - in: path + name: note_id + type: integer + format: int32 + required: true + responses: + '200': + description: List an awardable's emoji reactions for groups + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '404': + description: Not Found + tags: + - award_emoji + operationId: getApiV4GroupsIdEpicsEpicIidNotesNoteIdAwardEmoji + post: + summary: Add a new emoji reaction + description: Add an emoji reaction on the specified awardable. This feature + was introduced in 8.9 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: epic_iid + type: integer + format: int32 + required: true + - in: path + name: note_id + type: integer + format: int32 + required: true + - name: postApiV4GroupsIdEpicsEpicIidNotesNoteIdAwardEmoji + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdEpicsEpicIidNotesNoteIdAwardEmoji" + responses: + '201': + description: Add a new emoji reaction + schema: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '400': + description: Bad Request + '404': + description: Not Found + tags: + - award_emoji + operationId: postApiV4GroupsIdEpicsEpicIidNotesNoteIdAwardEmoji + "/api/v4/groups/{id}/epics/{epic_iid}/notes/{note_id}/award_emoji/{award_id}": + get: + summary: Get a single emoji reaction + description: Get a single emoji reaction from an issue, snippet, or merge request. + This feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: award_id + description: ID of the emoji reaction. + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: epic_iid + type: integer + format: int32 + required: true + - in: path + name: note_id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single emoji reaction + schema: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '404': + description: Not Found + tags: + - award_emoji + operationId: getApiV4GroupsIdEpicsEpicIidNotesNoteIdAwardEmojiAwardId + delete: + summary: Delete an emoji reaction + description: Only an administrator or the author of the reaction can delete + an emoji reaction. This feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: award_id + description: ID of an emoji reaction. + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: epic_iid + type: integer + format: int32 + required: true + - in: path + name: note_id + type: integer + format: int32 + required: true + responses: + '204': + description: Delete an emoji reaction + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - award_emoji + operationId: deleteApiV4GroupsIdEpicsEpicIidNotesNoteIdAwardEmojiAwardId + "/api/v4/groups/{id}/badges": + get: + summary: Gets a list of group badges viewable by the authenticated user. + description: This feature was introduced in GitLab 10.6. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user. + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: name + description: Name for the badge + type: string + required: false + responses: + '200': + description: Gets a list of group badges viewable by the authenticated user. + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Badge" + tags: + - badges + operationId: getApiV4GroupsIdBadges + post: + summary: Adds a badge to a group. + description: This feature was introduced in GitLab 10.6. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user. + type: string + required: true + - name: postApiV4GroupsIdBadges + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdBadges" + responses: + '201': + description: Adds a badge to a group. + schema: + "$ref": "#/definitions/API_Entities_Badge" + tags: + - badges + operationId: postApiV4GroupsIdBadges + "/api/v4/groups/{id}/badges/render": + get: + summary: Preview a badge from a group. + description: This feature was introduced in GitLab 10.6. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user. + type: string + required: true + - in: query + name: link_url + description: URL of the badge link + type: string + required: true + - in: query + name: image_url + description: URL of the badge image + type: string + required: true + responses: + '200': + description: Preview a badge from a group. + schema: + "$ref": "#/definitions/API_Entities_BasicBadgeDetails" + tags: + - badges + operationId: getApiV4GroupsIdBadgesRender + "/api/v4/groups/{id}/badges/{badge_id}": + get: + summary: Gets a badge of a group. + description: This feature was introduced in GitLab 10.6. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user. + type: string + required: true + - in: path + name: badge_id + description: The badge ID + type: integer + format: int32 + required: true + responses: + '200': + description: Gets a badge of a group. + schema: + "$ref": "#/definitions/API_Entities_Badge" + tags: + - badges + operationId: getApiV4GroupsIdBadgesBadgeId + put: + summary: Updates a badge of a group. + description: This feature was introduced in GitLab 10.6. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user. + type: string + required: true + - in: path + name: badge_id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdBadgesBadgeId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdBadgesBadgeId" + responses: + '200': + description: Updates a badge of a group. + schema: + "$ref": "#/definitions/API_Entities_Badge" + tags: + - badges + operationId: putApiV4GroupsIdBadgesBadgeId + delete: + summary: Removes a badge from the group. + description: This feature was introduced in GitLab 10.6. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user. + type: string + required: true + - in: path + name: badge_id + description: The badge ID + type: integer + format: int32 + required: true + responses: + '204': + description: Removes a badge from the group. + tags: + - badges + operationId: deleteApiV4GroupsIdBadgesBadgeId + "/api/v4/groups/{id}/custom_attributes": + get: + description: Get all custom attributes on a group + produces: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get all custom attributes on a group + schema: + "$ref": "#/definitions/API_Entities_CustomAttribute" + tags: + - groups + operationId: getApiV4GroupsIdCustomAttributes + "/api/v4/groups/{id}/custom_attributes/{key}": + get: + description: Get a custom attribute on a group + produces: + - application/json + parameters: + - in: path + name: key + description: The key of the custom attribute + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a custom attribute on a group + schema: + "$ref": "#/definitions/API_Entities_CustomAttribute" + tags: + - groups + operationId: getApiV4GroupsIdCustomAttributesKey + put: + description: Set a custom attribute on a group + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: key + description: The key of the custom attribute + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdCustomAttributesKey + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdCustomAttributesKey" + responses: + '200': + description: Set a custom attribute on a group + tags: + - groups + operationId: putApiV4GroupsIdCustomAttributesKey + delete: + description: Delete a custom attribute on a group + produces: + - application/json + parameters: + - in: path + name: key + description: The key of the custom attribute + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a custom attribute on a group + tags: + - groups + operationId: deleteApiV4GroupsIdCustomAttributesKey + "/api/v4/groups": + get: + description: Get a groups list + produces: + - application/json + parameters: + - in: query + name: statistics + description: Include project statistics + type: boolean + default: false + required: false + - in: query + name: archived + description: Limit by archived status + type: boolean + required: false + - in: query + name: skip_groups + description: Array of group ids to exclude from list + type: array + items: + type: integer + format: int32 + required: false + - in: query + name: all_available + description: When `true`, returns all accessible groups. When `false`, returns + only groups where the user is a member. + type: boolean + required: false + - in: query + name: visibility + description: Limit by visibility + type: string + enum: + - private + - internal + - public + required: false + - in: query + name: search + description: Search for a specific group + type: string + required: false + - in: query + name: owned + description: Limit by owned by authenticated user + type: boolean + default: false + required: false + - in: query + name: order_by + description: Order by name, path, id or similarity if searching + type: string + default: name + enum: + - name + - path + - id + - similarity + required: false + - in: query + name: sort + description: Sort by asc (ascending) or desc (descending) + type: string + default: asc + enum: + - asc + - desc + required: false + - in: query + name: min_access_level + description: Minimum access level of authenticated user + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + required: false + - in: query + name: top_level_only + description: Only include top-level groups + type: boolean + required: false + - in: query + name: marked_for_deletion_on + description: Return groups that are marked for deletion on this date + type: string + format: date + required: false + - in: query + name: active + description: Limit by groups that are not archived and not marked for deletion + type: boolean + required: false + - in: query + name: repository_storage + description: Filter by repository storage used by the group + type: string + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: with_custom_attributes + description: Include custom attributes in the response + type: boolean + default: false + required: false + responses: + '200': + description: Get a groups list + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Group" + tags: + - groups + operationId: getApiV4Groups + post: + description: Create a group. Available only for users who can create groups. + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4Groups + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4Groups" + responses: + '201': + description: Create a group. Available only for users who can create groups. + schema: + "$ref": "#/definitions/API_Entities_Group" + tags: + - groups + operationId: postApiV4Groups + "/api/v4/groups/{id}": + put: + description: Update a group. Available only for users who can administrate groups. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - name: putApiV4GroupsId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsId" + responses: + '200': + description: Update a group. Available only for users who can administrate + groups. + schema: + "$ref": "#/definitions/API_Entities_Group" + tags: + - groups + operationId: putApiV4GroupsId + get: + description: Get a single group, with containing projects. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: query + name: with_custom_attributes + description: Include custom attributes in the response + type: boolean + default: false + required: false + - in: query + name: with_projects + description: Omit project details + type: boolean + default: true + required: false + responses: + '200': + description: Get a single group, with containing projects. + schema: + "$ref": "#/definitions/API_Entities_GroupDetail" + tags: + - groups + operationId: getApiV4GroupsId + delete: + description: Remove a group. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + responses: + '204': + description: Remove a group. + tags: + - groups + operationId: deleteApiV4GroupsId + "/api/v4/groups/{id}/archive": + post: + description: Archive a group + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + responses: + '200': + description: Archive a group + schema: + "$ref": "#/definitions/API_Entities_Group" + '403': + description: Unauthenticated + tags: + - groups + operationId: postApiV4GroupsIdArchive + "/api/v4/groups/{id}/unarchive": + post: + description: Unarchive a group + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + responses: + '200': + description: Unarchive a group + schema: + "$ref": "#/definitions/API_Entities_Group" + '403': + description: Unauthenticated + tags: + - groups + operationId: postApiV4GroupsIdUnarchive + "/api/v4/groups/{id}/restore": + post: + description: Restore a group. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + responses: + '201': + description: Restore a group. + tags: + - groups + operationId: postApiV4GroupsIdRestore + "/api/v4/groups/{id}/groups/shared": + get: + description: Get a list of shared groups this group was invited to + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: query + name: skip_groups + description: Array of group ids to exclude from list + type: array + items: + type: integer + format: int32 + required: false + - in: query + name: visibility + description: Limit by visibility + type: string + enum: + - private + - internal + - public + required: false + - in: query + name: search + description: Search for a specific group + type: string + required: false + - in: query + name: min_access_level + description: Minimum access level of authenticated user + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + required: false + - in: query + name: order_by + description: Order by name, path, id or similarity if searching + type: string + default: name + enum: + - name + - path + - id + - similarity + required: false + - in: query + name: sort + description: Sort by asc (ascending) or desc (descending) + type: string + default: asc + enum: + - asc + - desc + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: with_custom_attributes + description: Include custom attributes in the response + type: boolean + default: false + required: false + responses: + '200': + description: Get a list of shared groups this group was invited to + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Group" + tags: + - groups + operationId: getApiV4GroupsIdGroupsShared + "/api/v4/groups/{id}/invited_groups": + get: + description: Get a list of invited groups in this group + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: query + name: relation + description: Include group relations + type: array + items: + type: string + enum: + - direct + - inherited + required: false + - in: query + name: search + description: Search for a specific group + type: string + required: false + - in: query + name: min_access_level + description: Minimum access level of authenticated user + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: with_custom_attributes + description: Include custom attributes in the response + type: boolean + default: false + required: false + responses: + '200': + description: Get a list of invited groups in this group + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Group" + tags: + - groups + operationId: getApiV4GroupsIdInvitedGroups + "/api/v4/groups/{id}/projects": + get: + description: Get a list of projects in this group. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: query + name: archived + description: Limit by archived status + type: boolean + required: false + - in: query + name: visibility + description: Limit by visibility + type: string + enum: + - private + - internal + - public + required: false + - in: query + name: search + description: Return list of authorized projects matching the search criteria + type: string + required: false + - in: query + name: order_by + description: Return projects ordered by field + type: string + default: created_at + enum: + - id + - name + - path + - created_at + - updated_at + - last_activity_at + - similarity + - star_count + required: false + - in: query + name: sort + description: Return projects sorted in ascending and descending order + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: simple + description: Return only the ID, URL, name, and path of each project + type: boolean + default: false + required: false + - in: query + name: owned + description: Limit by owned by authenticated user + type: boolean + default: false + required: false + - in: query + name: starred + description: Limit by starred status + type: boolean + default: false + required: false + - in: query + name: with_issues_enabled + description: Limit by enabled issues feature + type: boolean + default: false + required: false + - in: query + name: with_merge_requests_enabled + description: Limit by enabled merge requests feature + type: boolean + default: false + required: false + - in: query + name: with_shared + description: Include projects shared to this group + type: boolean + default: true + required: false + - in: query + name: include_subgroups + description: Includes projects in subgroups of this group + type: boolean + default: false + required: false + - in: query + name: include_ancestor_groups + description: Includes projects in ancestors of this group + type: boolean + default: false + required: false + - in: query + name: min_access_level + description: Limit by minimum access level of authenticated user on projects + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: with_custom_attributes + description: Include custom attributes in the response + type: boolean + default: false + required: false + - in: query + name: with_security_reports + description: Return only projects having security report artifacts present + type: boolean + default: false + required: false + responses: + '200': + description: Get a list of projects in this group. + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Project" + tags: + - groups + operationId: getApiV4GroupsIdProjects + "/api/v4/groups/{id}/projects/shared": + get: + description: Get a list of shared projects in this group + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: query + name: archived + description: Limit by archived status + type: boolean + required: false + - in: query + name: visibility + description: Limit by visibility + type: string + enum: + - private + - internal + - public + required: false + - in: query + name: search + description: Return list of authorized projects matching the search criteria + type: string + required: false + - in: query + name: order_by + description: Return projects ordered by field + type: string + default: created_at + enum: + - id + - name + - path + - created_at + - updated_at + - last_activity_at + - star_count + required: false + - in: query + name: sort + description: Return projects sorted in ascending and descending order + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: simple + description: Return only the ID, URL, name, and path of each project + type: boolean + default: false + required: false + - in: query + name: starred + description: Limit by starred status + type: boolean + default: false + required: false + - in: query + name: with_issues_enabled + description: Limit by enabled issues feature + type: boolean + default: false + required: false + - in: query + name: with_merge_requests_enabled + description: Limit by enabled merge requests feature + type: boolean + default: false + required: false + - in: query + name: min_access_level + description: Limit by minimum access level of authenticated user on projects + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: with_custom_attributes + description: Include custom attributes in the response + type: boolean + default: false + required: false + responses: + '200': + description: Get a list of shared projects in this group + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Project" + tags: + - groups + operationId: getApiV4GroupsIdProjectsShared + "/api/v4/groups/{id}/subgroups": + get: + description: Get a list of subgroups in this group. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: query + name: statistics + description: Include project statistics + type: boolean + default: false + required: false + - in: query + name: archived + description: Limit by archived status + type: boolean + required: false + - in: query + name: skip_groups + description: Array of group ids to exclude from list + type: array + items: + type: integer + format: int32 + required: false + - in: query + name: all_available + description: When `true`, returns all accessible groups. When `false`, returns + only groups where the user is a member. + type: boolean + required: false + - in: query + name: visibility + description: Limit by visibility + type: string + enum: + - private + - internal + - public + required: false + - in: query + name: search + description: Search for a specific group + type: string + required: false + - in: query + name: owned + description: Limit by owned by authenticated user + type: boolean + default: false + required: false + - in: query + name: order_by + description: Order by name, path, id or similarity if searching + type: string + default: name + enum: + - name + - path + - id + - similarity + required: false + - in: query + name: sort + description: Sort by asc (ascending) or desc (descending) + type: string + default: asc + enum: + - asc + - desc + required: false + - in: query + name: min_access_level + description: Minimum access level of authenticated user + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + required: false + - in: query + name: top_level_only + description: Only include top-level groups + type: boolean + required: false + - in: query + name: marked_for_deletion_on + description: Return groups that are marked for deletion on this date + type: string + format: date + required: false + - in: query + name: active + description: Limit by groups that are not archived and not marked for deletion + type: boolean + required: false + - in: query + name: repository_storage + description: Filter by repository storage used by the group + type: string + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: with_custom_attributes + description: Include custom attributes in the response + type: boolean + default: false + required: false + responses: + '200': + description: Get a list of subgroups in this group. + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Group" + tags: + - groups + operationId: getApiV4GroupsIdSubgroups + "/api/v4/groups/{id}/descendant_groups": + get: + description: Get a list of descendant groups of this group. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: query + name: statistics + description: Include project statistics + type: boolean + default: false + required: false + - in: query + name: archived + description: Limit by archived status + type: boolean + required: false + - in: query + name: skip_groups + description: Array of group ids to exclude from list + type: array + items: + type: integer + format: int32 + required: false + - in: query + name: all_available + description: When `true`, returns all accessible groups. When `false`, returns + only groups where the user is a member. + type: boolean + required: false + - in: query + name: visibility + description: Limit by visibility + type: string + enum: + - private + - internal + - public + required: false + - in: query + name: search + description: Search for a specific group + type: string + required: false + - in: query + name: owned + description: Limit by owned by authenticated user + type: boolean + default: false + required: false + - in: query + name: order_by + description: Order by name, path, id or similarity if searching + type: string + default: name + enum: + - name + - path + - id + - similarity + required: false + - in: query + name: sort + description: Sort by asc (ascending) or desc (descending) + type: string + default: asc + enum: + - asc + - desc + required: false + - in: query + name: min_access_level + description: Minimum access level of authenticated user + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + required: false + - in: query + name: top_level_only + description: Only include top-level groups + type: boolean + required: false + - in: query + name: marked_for_deletion_on + description: Return groups that are marked for deletion on this date + type: string + format: date + required: false + - in: query + name: active + description: Limit by groups that are not archived and not marked for deletion + type: boolean + required: false + - in: query + name: repository_storage + description: Filter by repository storage used by the group + type: string + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: with_custom_attributes + description: Include custom attributes in the response + type: boolean + default: false + required: false + responses: + '200': + description: Get a list of descendant groups of this group. + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Group" + tags: + - groups + operationId: getApiV4GroupsIdDescendantGroups + "/api/v4/groups/{id}/projects/{project_id}": + post: + description: Transfer a project to the group namespace. Available only for admin. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: path + name: project_id + description: The ID or path of the project + type: string + required: true + responses: + '201': + description: Transfer a project to the group namespace. Available only for + admin. + schema: + "$ref": "#/definitions/API_Entities_GroupDetail" + tags: + - groups + operationId: postApiV4GroupsIdProjectsProjectId + "/api/v4/groups/{id}/transfer_locations": + get: + description: Get the groups to where the current group can be transferred to + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: query + name: search + description: Return list of namespaces matching the search criteria + type: string + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get the groups to where the current group can be transferred + to + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Group" + tags: + - groups + operationId: getApiV4GroupsIdTransferLocations + "/api/v4/groups/{id}/transfer": + post: + description: Transfer a group to a new parent group or promote a subgroup to + a top-level group + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - name: postApiV4GroupsIdTransfer + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdTransfer" + responses: + '201': + description: Transfer a group to a new parent group or promote a subgroup + to a top-level group + tags: + - groups + operationId: postApiV4GroupsIdTransfer + "/api/v4/groups/{id}/share": + post: + description: Share a group with a group + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - name: postApiV4GroupsIdShare + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdShare" + responses: + '201': + description: Share a group with a group + schema: + "$ref": "#/definitions/API_Entities_GroupDetail" + tags: + - groups + operationId: postApiV4GroupsIdShare + "/api/v4/groups/{id}/share/{group_id}": + delete: + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: path + name: group_id + description: The ID of the shared group + type: integer + format: int32 + required: true + responses: + '204': + description: deleted Share + tags: + - groups + operationId: deleteApiV4GroupsIdShareGroupId + "/api/v4/groups/{id}/tokens/revoke": + post: + summary: Revoke a single token + description: | + Revoke a token, if it has access to the group or any of its subgroups + and projects. If the token is revoked, or was already revoked, its + details are returned in the response. + + The following criteria must be met: + + - The group must be a top-level group. + - You must have Owner permission in the group. + - The token type is one of: + - Personal access token + - Group access token + - Project access token + - Group deploy token + - User feed token + + This feature is gated by the :group_agnostic_token_revocation feature flag. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a top-level group + type: string + required: true + - name: postApiV4GroupsIdTokensRevoke + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdTokensRevoke" + responses: + '201': + description: Revoke a single token + tags: + - groups + operationId: postApiV4GroupsIdTokensRevoke + "/api/v4/groups/{id}/ldap_sync": + post: + description: Sync a group with LDAP. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '201': + description: Sync a group with LDAP. + tags: + - groups + operationId: postApiV4GroupsIdLdapSync + "/api/v4/groups/{id}/audit_events": + get: + description: Get a list of audit events in this group. + produces: + - application/json + parameters: + - in: query + name: created_after + description: Return audit events created after the specified time + type: string + format: date-time + required: false + example: '2016-01-19T09:05:50.355Z' + - in: query + name: created_before + description: Return audit events created before the specified time + type: string + format: date-time + required: false + example: '2016-01-19T09:05:50.355Z' + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a list of audit events in this group. + schema: + type: array + items: + "$ref": "#/definitions/EE_API_Entities_AuditEvent" + tags: + - groups + operationId: getApiV4GroupsIdAuditEvents + "/api/v4/groups/{id}/audit_events/{audit_event_id}": + get: + description: Get a specific audit event in this group. + produces: + - application/json + parameters: + - in: path + name: audit_event_id + description: The ID of the audit event + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a specific audit event in this group. + schema: + "$ref": "#/definitions/EE_API_Entities_AuditEvent" + tags: + - groups + operationId: getApiV4GroupsIdAuditEventsAuditEventId + "/api/v4/groups/{id}/saml_users": + get: + description: Get a list of SAML users of the group + produces: + - application/json + parameters: + - in: query + name: username + description: Return single user with a specific username. + type: string + required: false + - in: query + name: search + description: Search users by name, email, username. + type: string + required: false + - in: query + name: active + description: Return only active users. + type: boolean + default: false + required: false + - in: query + name: blocked + description: Return only blocked users. + type: boolean + default: false + required: false + - in: query + name: created_after + description: Return users created after the specified time. + type: string + format: date-time + required: false + - in: query + name: created_before + description: Return users created before the specified time. + type: string + format: date-time + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a list of SAML users of the group + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_UserPublic" + tags: + - groups + operationId: getApiV4GroupsIdSamlUsers + "/api/v4/groups/{id}/provisioned_users": + get: + description: Get a list of users provisioned by the group + produces: + - application/json + parameters: + - in: query + name: username + description: Return a single user with a specific username + type: string + required: false + - in: query + name: search + description: Search users by name, email or username + type: string + required: false + - in: query + name: active + description: Return only active users + type: boolean + default: false + required: false + - in: query + name: blocked + description: Return only blocked users + type: boolean + default: false + required: false + - in: query + name: created_after + description: Return users created after the specified time + type: string + format: date-time + required: false + - in: query + name: created_before + description: Return users created before the specified time + type: string + format: date-time + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a list of users provisioned by the group + schema: + "$ref": "#/definitions/API_Entities_UserPublic" + tags: + - groups + operationId: getApiV4GroupsIdProvisionedUsers + "/api/v4/groups/{id}/users": + get: + description: Get a list of users for the group + produces: + - application/json + parameters: + - in: query + name: search + description: Search users by name, email or username + type: string + required: false + - in: query + name: active + description: Filters only active users + type: boolean + default: false + required: false + - in: query + name: include_saml_users + description: Return users with a SAML identity in this group + type: boolean + required: false + - in: query + name: include_service_accounts + description: Return service accounts owned by this group + type: boolean + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a list of users for the group + schema: + "$ref": "#/definitions/API_Entities_UserPublic" + '400': + description: Bad request + '403': + description: Forbidden + '404': + description: 404 Not Found + tags: + - groups + operationId: getApiV4GroupsIdUsers + "/api/v4/groups/{id}/ssh_certificates": + get: + summary: Get a list of Groups::SshCertificate for a Group. + description: Get a list of ssh certificates created for a group. + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a list of ssh certificates created for a group. + schema: + type: array + items: + "$ref": "#/definitions/EE_API_Entities_SshCertificate" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: 404 Not Found + tags: + - groups + operationId: getApiV4GroupsIdSshCertificates + post: + summary: Add a Groups::SshCertificate. + description: Create a ssh certificate for a group. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: postApiV4GroupsIdSshCertificates + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdSshCertificates" + responses: + '201': + description: Create a ssh certificate for a group. + schema: + "$ref": "#/definitions/EE_API_Entities_SshCertificate" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - groups + operationId: postApiV4GroupsIdSshCertificates + "/api/v4/groups/{id}/ssh_certificates/{ssh_certificates_id}": + delete: + summary: Removes an ssh certificate from a group. + description: Removes a Groups::SshCertificate + produces: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: ssh_certificates_id + type: integer + format: int32 + required: true + responses: + '204': + description: Removes an ssh certificate from a group. + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '422': + description: Unprocessable entity + tags: + - groups + operationId: deleteApiV4GroupsIdSshCertificatesSshCertificatesId + "/api/v4/groups/{id}/runners": + get: + summary: List group's runners + description: List all runners available in the group as well as its ancestor + groups, including any allowed shared runners. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: query + name: type + description: The type of runners to return + type: string + enum: + - instance_type + - group_type + - project_type + required: false + - in: query + name: paused + description: Whether to include only runners that are accepting or ignoring + new jobs + type: boolean + required: false + - in: query + name: status + description: The status of runners to return + type: string + enum: + - active + - paused + - online + - offline + - never_contacted + - stale + required: false + - in: query + name: tag_list + description: A list of runner tags + type: array + items: + type: string + required: false + example: "['macos', 'shell']" + - in: query + name: version_prefix + description: The version prefix of runners to return + type: string + required: false + example: "'15.1.' or '16.'" + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get runners available for group + schema: + "$ref": "#/definitions/API_Entities_Ci_Runner" + '400': + description: Scope contains invalid value + '403': + description: Forbidden + tags: + - runners + - groups + operationId: getApiV4GroupsIdRunners + "/api/v4/groups/{id}/runners/reset_registration_token": + post: + summary: Reset the runner registration token for a group + description: Reset runner registration token + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + responses: + '201': + description: Reset runner registration token + schema: + "$ref": "#/definitions/API_Entities_Ci_ResetTokenResult" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Group Not Found + tags: + - runners + - groups + operationId: postApiV4GroupsIdRunnersResetRegistrationToken + "/api/v4/groups/{id}/-/packages/debian/dists/*distribution/Release.gpg": + get: + summary: The Release file signature + description: This feature was introduced in GitLab 13.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID or full group path. + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + responses: + '200': + description: The Release file signature + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4GroupsIdPackagesDebianDists*distributionReleaseGpg + "/api/v4/groups/{id}/-/packages/debian/dists/*distribution/Release": + get: + summary: The unsigned Release file + description: This feature was introduced in GitLab 13.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID or full group path. + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + responses: + '200': + description: The unsigned Release file + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4GroupsIdPackagesDebianDists*distributionRelease + "/api/v4/groups/{id}/-/packages/debian/dists/*distribution/InRelease": + get: + summary: The signed Release file + description: This feature was introduced in GitLab 13.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID or full group path. + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + responses: + '200': + description: The signed Release file + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4GroupsIdPackagesDebianDists*distributionInrelease + "/api/v4/groups/{id}/-/packages/debian/dists/*distribution/{component}/debian-installer/binary-{architecture}/Packages": + get: + summary: The installer (udeb) binary files index + description: This feature was introduced in GitLab 15.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID or full group path. + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + - in: path + name: component + description: The Debian Component + type: string + required: true + example: main + - in: path + name: architecture + description: The Debian Architecture + type: string + required: true + example: binary-amd64 + responses: + '200': + description: The installer (udeb) binary files index + '202': + description: The installer (udeb) binary files index + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4GroupsIdPackagesDebianDists*distributionComponentDebianInstallerBinaryArchitecturePackages + ? "/api/v4/groups/{id}/-/packages/debian/dists/*distribution/{component}/debian-installer/binary-{architecture}/by-hash/SHA256/{file_sha256}" + : get: + summary: The installer (udeb) binary files index by hash + description: This feature was introduced in GitLab 15.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID or full group path. + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + - in: path + name: component + description: The Debian Component + type: string + required: true + example: main + - in: path + name: architecture + description: The Debian Architecture + type: string + required: true + example: binary-amd64 + - in: path + name: file_sha256 + type: integer + format: int32 + required: true + responses: + '200': + description: The installer (udeb) binary files index by hash + '202': + description: The installer (udeb) binary files index by hash + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4GroupsIdPackagesDebianDists*distributionComponentDebianInstallerBinaryArchitectureByHashSha256FileSha256 + "/api/v4/groups/{id}/-/packages/debian/dists/*distribution/{component}/source/Sources": + get: + summary: The source files index + description: This feature was introduced in GitLab 15.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID or full group path. + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + - in: path + name: component + description: The Debian Component + type: string + required: true + example: main + responses: + '200': + description: The source files index + '202': + description: The source files index + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4GroupsIdPackagesDebianDists*distributionComponentSourceSources + "/api/v4/groups/{id}/-/packages/debian/dists/*distribution/{component}/source/by-hash/SHA256/{file_sha256}": + get: + summary: The source files index by hash + description: This feature was introduced in GitLab 15.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID or full group path. + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + - in: path + name: component + description: The Debian Component + type: string + required: true + example: main + - in: path + name: file_sha256 + type: integer + format: int32 + required: true + responses: + '200': + description: The source files index by hash + '202': + description: The source files index by hash + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4GroupsIdPackagesDebianDists*distributionComponentSourceByHashSha256FileSha256 + "/api/v4/groups/{id}/-/packages/debian/dists/*distribution/{component}/binary-{architecture}/Packages": + get: + summary: The binary files index + description: This feature was introduced in GitLab 13.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID or full group path. + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + - in: path + name: component + description: The Debian Component + type: string + required: true + example: main + - in: path + name: architecture + description: The Debian Architecture + type: string + required: true + example: binary-amd64 + responses: + '200': + description: The binary files index + '202': + description: The binary files index + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4GroupsIdPackagesDebianDists*distributionComponentBinaryArchitecturePackages + "/api/v4/groups/{id}/-/packages/debian/dists/*distribution/{component}/binary-{architecture}/by-hash/SHA256/{file_sha256}": + get: + summary: The binary files index by hash + description: This feature was introduced in GitLab 15.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID or full group path. + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + - in: path + name: component + description: The Debian Component + type: string + required: true + example: main + - in: path + name: architecture + description: The Debian Architecture + type: string + required: true + example: binary-amd64 + - in: path + name: file_sha256 + type: integer + format: int32 + required: true + responses: + '200': + description: The binary files index by hash + '202': + description: The binary files index by hash + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4GroupsIdPackagesDebianDists*distributionComponentBinaryArchitectureByHashSha256FileSha256 + "/api/v4/groups/{id}/-/packages/debian/pool/{distribution}/{project_id}/{letter}/{package_name}/{package_version}/{file_name}": + get: + summary: Download Debian package + description: This feature was introduced in GitLab 14.2 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID or full group path. + type: string + required: true + - in: path + name: project_id + description: The Project Id + type: integer + format: int32 + required: true + - in: path + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + - in: path + name: letter + description: The Debian Classification (first-letter or lib-first-letter) + type: string + required: true + example: a + - in: path + name: package_name + description: The Debian Source Package Name + type: string + required: true + example: my-pkg + - in: path + name: package_version + description: The Debian Source Package Version + type: string + required: true + example: 1.0.0 + - in: path + name: file_name + description: The Debian File Name + type: string + required: true + example: example_1.0.0~alpha2_amd64.deb + responses: + '200': + description: Download Debian package + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4GroupsIdPackagesDebianPoolDistributionProjectIdLetterPackageNamePackageVersionFileName + "/api/v4/groups/{id}/dependency_proxy/cache": + delete: + summary: Purge the dependency proxy for a group + description: Schedules for deletion the cached manifests and blobs for a group.This + endpoint requires the Owner role for the group. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user + type: string + required: true + responses: + '202': + description: Purge the dependency proxy for a group + '401': + description: Unauthorized + tags: + - dependency_proxy + operationId: deleteApiV4GroupsIdDependencyProxyCache + "/api/v4/groups/{id}/deploy_tokens": + get: + summary: List group deploy tokens + description: Get a list of a group's deploy tokens. This feature was introduced + in GitLab 12.9. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user + type: integer + format: int32 + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: active + description: Limit by active status + type: boolean + required: false + responses: + '200': + description: List group deploy tokens + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_DeployToken" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - deploy_tokens + operationId: getApiV4GroupsIdDeployTokens + post: + summary: Create a group deploy token + description: Creates a new deploy token for a group. This feature was introduced + in GitLab 12.9. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user + type: integer + format: int32 + required: true + - name: postApiV4GroupsIdDeployTokens + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdDeployTokens" + responses: + '201': + description: Create a group deploy token + schema: + "$ref": "#/definitions/API_Entities_DeployTokenWithToken" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - deploy_tokens + operationId: postApiV4GroupsIdDeployTokens + "/api/v4/groups/{id}/deploy_tokens/{token_id}": + get: + summary: Get a group deploy token + description: 'Get a single group''s deploy token by ID. This feature was introduced + in GitLab 14.9. ' + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user + type: integer + format: int32 + required: true + - in: path + name: token_id + description: The ID of the deploy token + type: integer + format: int32 + required: true + responses: + '200': + description: Get a group deploy token + schema: + "$ref": "#/definitions/API_Entities_DeployToken" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - deploy_tokens + operationId: getApiV4GroupsIdDeployTokensTokenId + delete: + summary: Delete a group deploy token + description: Removes a deploy token from the group. This feature was introduced + in GitLab 12.9. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user + type: integer + format: int32 + required: true + - in: path + name: token_id + description: The ID of the deploy token + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a group deploy token + '401': + description: Unauthorized + '404': + description: Not found + tags: + - deploy_tokens + operationId: deleteApiV4GroupsIdDeployTokensTokenId + "/api/v4/groups/{id}/avatar": + get: + summary: Download the group avatar + description: This feature was introduced in GitLab 14.0 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of the group + type: string + required: true + responses: + '200': + description: Download the group avatar + tags: + - group_avatar + operationId: getApiV4GroupsIdAvatar + "/api/v4/groups/{id}/clusters": + get: + summary: List group clusters + description: This feature was introduced in GitLab 12.1. Returns a list of group + clusters. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of the group + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List group clusters + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Cluster" + '403': + description: Forbidden + tags: + - clusters + operationId: getApiV4GroupsIdClusters + "/api/v4/groups/{id}/clusters/{cluster_id}": + get: + summary: Get a single group cluster + description: This feature was introduced in GitLab 12.1. Gets a single group + cluster. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of the group + type: string + required: true + - in: path + name: cluster_id + description: The cluster ID + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single group cluster + schema: + "$ref": "#/definitions/API_Entities_ClusterGroup" + '403': + description: Forbidden + '404': + description: Not found + tags: + - clusters + operationId: getApiV4GroupsIdClustersClusterId + put: + summary: Edit group cluster + description: This feature was introduced in GitLab 12.1. Updates an existing + group cluster. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of the group + type: string + required: true + - in: path + name: cluster_id + description: The cluster ID + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdClustersClusterId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdClustersClusterId" + responses: + '200': + description: Edit group cluster + schema: + "$ref": "#/definitions/API_Entities_ClusterGroup" + '400': + description: Validation error + '403': + description: Forbidden + '404': + description: Not found + tags: + - clusters + operationId: putApiV4GroupsIdClustersClusterId + delete: + summary: Delete group cluster + description: This feature was introduced in GitLab 12.1. Deletes an existing + group cluster. Does not remove existing resources within the connected Kubernetes + cluster. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of the group + type: string + required: true + - in: path + name: cluster_id + description: The Cluster ID + type: integer + format: int32 + required: true + responses: + '403': + description: Forbidden + '204': + description: Delete group cluster + schema: + "$ref": "#/definitions/API_Entities_ClusterGroup" + '404': + description: Not found + tags: + - clusters + operationId: deleteApiV4GroupsIdClustersClusterId + "/api/v4/groups/{id}/clusters/user": + post: + summary: Add existing cluster to group + description: This feature was introduced in GitLab 12.1. Adds an existing Kubernetes + cluster to the group. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of the group + type: string + required: true + - name: postApiV4GroupsIdClustersUser + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdClustersUser" + responses: + '201': + description: Add existing cluster to group + schema: + "$ref": "#/definitions/API_Entities_ClusterGroup" + '400': + description: Validation error + '403': + description: Forbidden + '404': + description: Not found + tags: + - clusters + operationId: postApiV4GroupsIdClustersUser + "/api/v4/groups/{id}/registry/repositories": + get: + summary: List registry repositories within a group + description: Get a list of registry repositories in a group. This feature was + introduced in GitLab 12.2. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group accessible by the authenticated + user + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List registry repositories within a group + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_ContainerRegistry_Repository" + '401': + description: Unauthorized + '404': + description: Group Not Found + tags: + - container_registry + operationId: getApiV4GroupsIdRegistryRepositories + "/api/v4/groups/{id}/-/debian_distributions": + post: + summary: Create a Debian Distribution + description: This feature was introduced in 14.0 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group + type: string + required: true + - name: postApiV4GroupsIdDebianDistributions + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdDebianDistributions" + responses: + '201': + description: Create a Debian Distribution + schema: + "$ref": "#/definitions/API_Entities_Packages_Debian_Distribution" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_distribution + operationId: postApiV4GroupsIdDebianDistributions + get: + summary: Get a list of Debian Distributions + description: This feature was introduced in 14.0 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: codename + description: The Debian Codename + type: string + required: false + example: sid + - in: query + name: suite + description: The Debian Suite + type: string + required: false + example: unstable + - in: query + name: origin + description: The Debian Origin + type: string + required: false + example: Grep + - in: query + name: label + description: The Debian Label + type: string + required: false + example: grep.be + - in: query + name: version + description: The Debian Version + type: string + required: false + example: '12' + - in: query + name: description + description: The Debian Description + type: string + required: false + example: My description + - in: query + name: valid_time_duration_seconds + description: The duration before the Release file should be considered expired + by the client + type: integer + format: int32 + required: false + example: 604800 + - in: query + name: components + description: The list of Components + type: array + items: + type: string + required: false + example: main + - in: query + name: architectures + description: The list of Architectures + type: array + items: + type: string + required: false + example: amd64 + responses: + '200': + description: Get a list of Debian Distributions + schema: + "$ref": "#/definitions/API_Entities_Packages_Debian_Distribution" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_distribution + operationId: getApiV4GroupsIdDebianDistributions + "/api/v4/groups/{id}/-/debian_distributions/{codename}": + get: + summary: Get a Debian Distribution + description: This feature was introduced in 14.0 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group + type: string + required: true + - in: path + name: codename + description: The Debian Codename + type: string + required: true + example: sid + responses: + '200': + description: Get a Debian Distribution + schema: + "$ref": "#/definitions/API_Entities_Packages_Debian_Distribution" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_distribution + operationId: getApiV4GroupsIdDebianDistributionsCodename + put: + summary: Update a Debian Distribution + description: This feature was introduced in 14.0 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group + type: string + required: true + - in: path + name: codename + description: The Debian Codename + type: string + required: true + example: sid + - name: putApiV4GroupsIdDebianDistributionsCodename + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdDebianDistributionsCodename" + responses: + '200': + description: Update a Debian Distribution + schema: + "$ref": "#/definitions/API_Entities_Packages_Debian_Distribution" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_distribution + operationId: putApiV4GroupsIdDebianDistributionsCodename + delete: + summary: Delete a Debian Distribution + description: This feature was introduced in 14.0 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group + type: string + required: true + - in: path + name: codename + description: The Debian Codename + type: string + required: true + example: sid + - in: query + name: suite + description: The Debian Suite + type: string + required: false + example: unstable + - in: query + name: origin + description: The Debian Origin + type: string + required: false + example: Grep + - in: query + name: label + description: The Debian Label + type: string + required: false + example: grep.be + - in: query + name: version + description: The Debian Version + type: string + required: false + example: '12' + - in: query + name: description + description: The Debian Description + type: string + required: false + example: My description + - in: query + name: valid_time_duration_seconds + description: The duration before the Release file should be considered expired + by the client + type: integer + format: int32 + required: false + example: 604800 + - in: query + name: components + description: The list of Components + type: array + items: + type: string + required: false + example: main + - in: query + name: architectures + description: The list of Architectures + type: array + items: + type: string + required: false + example: amd64 + responses: + '202': + description: Delete a Debian Distribution + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_distribution + operationId: deleteApiV4GroupsIdDebianDistributionsCodename + "/api/v4/groups/{id}/-/debian_distributions/{codename}/key.asc": + get: + summary: Get a Debian Distribution Key + description: This feature was introduced in 14.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group + type: string + required: true + - in: path + name: codename + description: The Debian Codename + type: string + required: true + example: sid + responses: + '200': + description: Get a Debian Distribution Key + schema: + "$ref": "#/definitions/API_Entities_Packages_Debian_Distribution" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_distribution + operationId: getApiV4GroupsIdDebianDistributionsCodenameKeyAsc + "/api/v4/groups/{id}/export/download": + get: + summary: Download export + description: This feature was introduced in GitLab 12.5. + produces: + - application/octet-stream + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + responses: + '200': + description: Download export + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '503': + description: Service unavailable + tags: + - group_export + operationId: getApiV4GroupsIdExportDownload + "/api/v4/groups/{id}/export": + post: + summary: Start export + description: This feature was introduced in GitLab 12.5. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + responses: + '202': + description: Start export + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '429': + description: Too many requests + '503': + description: Service unavailable + tags: + - group_export + operationId: postApiV4GroupsIdExport + "/api/v4/groups/{id}/export_relations": + post: + summary: Start relations export + description: This feature was introduced in GitLab 13.12 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - name: postApiV4GroupsIdExportRelations + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdExportRelations" + responses: + '202': + description: Start relations export + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '503': + description: Service unavailable + tags: + - group_export + operationId: postApiV4GroupsIdExportRelations + "/api/v4/groups/{id}/export_relations/download": + get: + summary: Download relations export + description: This feature was introduced in GitLab 13.12 + produces: + - application/octet-stream + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: query + name: relation + description: Group relation name + type: string + required: true + - in: query + name: batched + description: Whether to download in batches + type: boolean + required: false + - in: query + name: batch_number + description: Batch number to download + type: integer + format: int32 + required: false + responses: + '200': + description: Download relations export + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '503': + description: Service unavailable + tags: + - group_export + operationId: getApiV4GroupsIdExportRelationsDownload + "/api/v4/groups/{id}/export_relations/status": + get: + summary: Relations export status + description: This feature was introduced in GitLab 13.12 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: query + name: relation + description: Group relation name + type: string + required: false + responses: + '200': + description: Relations export status + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_BulkImports_ExportStatus" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '503': + description: Service unavailable + tags: + - group_export + operationId: getApiV4GroupsIdExportRelationsStatus + "/api/v4/groups/import/authorize": + post: + summary: Workhorse authorize the group import upload + description: This feature was introduced in GitLab 12.8 + produces: + - application/json + consumes: + - application/json + responses: + '201': + description: Workhorse authorize the group import upload + tags: + - group_import + operationId: postApiV4GroupsImportAuthorize + "/api/v4/groups/import": + post: + summary: Create a new group import + description: This feature was introduced in GitLab 12.8 + produces: + - application/json + consumes: + - multipart/form-data + parameters: + - in: formData + name: path + description: Group path + type: string + required: true + - in: formData + name: name + description: Group name + type: string + required: true + - in: formData + name: file + description: The group export file to be imported + type: file + required: true + - in: formData + name: parent_id + description: The ID of the parent group that the group will be imported into. + Defaults to the current user's namespace. + type: integer + format: int32 + required: false + - in: formData + name: organization_id + description: 'The ID of the organization that the group will be part of. ' + type: integer + format: int32 + default: {} + required: false + responses: + '202': + description: Create a new group import + '401': + description: Unauthorized + '403': + description: Forbidden + '400': + description: Bad request + '503': + description: Service unavailable + tags: + - group_import + operationId: postApiV4GroupsImport + "/api/v4/groups/{id}/packages": + get: + summary: List packages within a group + description: Get a list of project packages at the group level. This feature + was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: id + description: ID or URL-encoded path of the group + type: string + required: true + - in: query + name: exclude_subgroups + description: Determines if subgroups should be excluded + type: boolean + default: false + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: order_by + description: Return packages ordered by `created_at`, `name`, `version` or + `type` fields. + type: string + default: created_at + enum: + - created_at + - name + - version + - type + - project_path + required: false + - in: query + name: sort + description: Return packages sorted in `asc` or `desc` order. + type: string + default: asc + enum: + - asc + - desc + required: false + - in: query + name: package_type + description: Return packages of a certain type + type: string + enum: + - maven + - npm + - conan + - nuget + - pypi + - composer + - generic + - golang + - debian + - rubygems + - helm + - terraform_module + - rpm + - ml_model + required: false + - in: query + name: package_name + description: Return packages with this name + type: string + required: false + - in: query + name: package_version + description: Return packages with this version + type: string + required: false + - in: query + name: include_versionless + description: Returns packages without a version + type: boolean + required: false + - in: query + name: status + description: Return packages with specified status + type: string + enum: + - default + - hidden + - processing + - error + - pending_destruction + - deprecated + required: false + responses: + '200': + description: List packages within a group + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Package" + '401': + description: Unauthorized + '404': + description: Group Not Found + tags: + - group_packages + operationId: getApiV4GroupsIdPackages + "/api/v4/groups/{id}/placeholder_reassignments": + get: + summary: Download the list of pending placeholder assignments for a group + description: This feature was added in GitLab 17.10 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + responses: + '200': + description: Download the list of pending placeholder assignments for a + group + tags: + - groups + operationId: getApiV4GroupsIdPlaceholderReassignments + post: + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - name: postApiV4GroupsIdPlaceholderReassignments + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdPlaceholderReassignments" + responses: + '201': + description: created PlaceholderReassignment + tags: + - groups + operationId: postApiV4GroupsIdPlaceholderReassignments + "/api/v4/groups/{id}/placeholder_reassignments/authorize": + post: + summary: Workhorse authorization for the reassignment CSV file + description: This feature was introduced in GitLab 17.10 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + responses: + '201': + description: Workhorse authorization for the reassignment CSV file + tags: + - groups + operationId: postApiV4GroupsIdPlaceholderReassignmentsAuthorize + "/api/v4/groups/{id}/variables": + get: + description: Get a list of group-level variables + produces: + - application/json + parameters: + - in: path + name: id + description: |- + The ID of a group or URL-encoded path of the group owned by the authenticated + user + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get a list of group-level variables + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + tags: + - ci_variables + operationId: getApiV4GroupsIdVariables + post: + description: Create a new variable in a group + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: |- + The ID of a group or URL-encoded path of the group owned by the authenticated + user + type: string + required: true + - name: postApiV4GroupsIdVariables + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdVariables" + responses: + '201': + description: Create a new variable in a group + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + '400': + description: 400 Bad Request + tags: + - ci_variables + operationId: postApiV4GroupsIdVariables + "/api/v4/groups/{id}/variables/{key}": + get: + description: Get the details of a group’s specific variable + produces: + - application/json + parameters: + - in: path + name: id + description: |- + The ID of a group or URL-encoded path of the group owned by the authenticated + user + type: string + required: true + - in: path + name: key + description: The key of the variable + type: string + required: true + responses: + '200': + description: Get the details of a group’s specific variable + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + '404': + description: Group Variable Not Found + tags: + - ci_variables + operationId: getApiV4GroupsIdVariablesKey + put: + description: Update an existing variable from a group + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: |- + The ID of a group or URL-encoded path of the group owned by the authenticated + user + type: string + required: true + - in: path + name: key + description: The key of a variable + type: string + required: true + - name: putApiV4GroupsIdVariablesKey + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdVariablesKey" + responses: + '200': + description: Update an existing variable from a group + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + '400': + description: 400 Bad Request + '404': + description: Group Variable Not Found + tags: + - ci_variables + operationId: putApiV4GroupsIdVariablesKey + delete: + description: Delete an existing variable from a group + produces: + - application/json + parameters: + - in: path + name: id + description: |- + The ID of a group or URL-encoded path of the group owned by the authenticated + user + type: string + required: true + - in: path + name: key + description: The key of a variable + type: string + required: true + responses: + '404': + description: Group Variable Not Found + '204': + description: Delete an existing variable from a group + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + tags: + - ci_variables + operationId: deleteApiV4GroupsIdVariablesKey + "/api/v4/groups/{id}/integrations": + get: + summary: List all active integrations + description: Get a list of all active integrations. + produces: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: List all active integrations + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - integrations + operationId: getApiV4GroupsIdIntegrations + "/api/v4/groups/{id}/integrations/apple-app-store": + put: + summary: Create/Edit Apple App Store integration + description: Set Apple App Store integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsAppleAppStore + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsAppleAppStore" + responses: + '200': + description: Create/Edit Apple App Store integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsAppleAppStore + "/api/v4/groups/{id}/integrations/asana": + put: + summary: Create/Edit Asana integration + description: Set Asana integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsAsana + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsAsana" + responses: + '200': + description: Create/Edit Asana integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsAsana + "/api/v4/groups/{id}/integrations/assembla": + put: + summary: Create/Edit Assembla integration + description: Set Assembla integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsAssembla + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsAssembla" + responses: + '200': + description: Create/Edit Assembla integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsAssembla + "/api/v4/groups/{id}/integrations/bamboo": + put: + summary: Create/Edit Bamboo integration + description: Set Bamboo integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsBamboo + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsBamboo" + responses: + '200': + description: Create/Edit Bamboo integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsBamboo + "/api/v4/groups/{id}/integrations/bugzilla": + put: + summary: Create/Edit Bugzilla integration + description: Set Bugzilla integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsBugzilla + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsBugzilla" + responses: + '200': + description: Create/Edit Bugzilla integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsBugzilla + "/api/v4/groups/{id}/integrations/buildkite": + put: + summary: Create/Edit Buildkite integration + description: Set Buildkite integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsBuildkite + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsBuildkite" + responses: + '200': + description: Create/Edit Buildkite integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsBuildkite + "/api/v4/groups/{id}/integrations/campfire": + put: + summary: Create/Edit Campfire integration + description: Set Campfire integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsCampfire + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsCampfire" + responses: + '200': + description: Create/Edit Campfire integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsCampfire + "/api/v4/groups/{id}/integrations/confluence": + put: + summary: Create/Edit Confluence integration + description: Set Confluence integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsConfluence + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsConfluence" + responses: + '200': + description: Create/Edit Confluence integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsConfluence + "/api/v4/groups/{id}/integrations/custom-issue-tracker": + put: + summary: Create/Edit Custom Issue Tracker integration + description: Set Custom Issue Tracker integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsCustomIssueTracker + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsCustomIssueTracker" + responses: + '200': + description: Create/Edit Custom Issue Tracker integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsCustomIssueTracker + "/api/v4/groups/{id}/integrations/datadog": + put: + summary: Create/Edit Datadog integration + description: Set Datadog integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsDatadog + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsDatadog" + responses: + '200': + description: Create/Edit Datadog integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsDatadog + "/api/v4/groups/{id}/integrations/diffblue-cover": + put: + summary: Create/Edit Diffblue Cover integration + description: Set Diffblue Cover integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsDiffblueCover + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsDiffblueCover" + responses: + '200': + description: Create/Edit Diffblue Cover integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsDiffblueCover + "/api/v4/groups/{id}/integrations/discord": + put: + summary: Create/Edit Discord integration + description: Set Discord integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsDiscord + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsDiscord" + responses: + '200': + description: Create/Edit Discord integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsDiscord + "/api/v4/groups/{id}/integrations/drone-ci": + put: + summary: Create/Edit Drone Ci integration + description: Set Drone Ci integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsDroneCi + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsDroneCi" + responses: + '200': + description: Create/Edit Drone Ci integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsDroneCi + "/api/v4/groups/{id}/integrations/emails-on-push": + put: + summary: Create/Edit Emails On Push integration + description: Set Emails On Push integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsEmailsOnPush + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsEmailsOnPush" + responses: + '200': + description: Create/Edit Emails On Push integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsEmailsOnPush + "/api/v4/groups/{id}/integrations/external-wiki": + put: + summary: Create/Edit External Wiki integration + description: Set External Wiki integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsExternalWiki + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsExternalWiki" + responses: + '200': + description: Create/Edit External Wiki integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsExternalWiki + "/api/v4/groups/{id}/integrations/gitlab-slack-application": + put: + summary: Create/Edit Gitlab Slack Application integration + description: Set Gitlab Slack Application integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsGitlabSlackApplication + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsGitlabSlackApplication" + responses: + '200': + description: Create/Edit Gitlab Slack Application integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsGitlabSlackApplication + "/api/v4/groups/{id}/integrations/google-play": + put: + summary: Create/Edit Google Play integration + description: Set Google Play integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsGooglePlay + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsGooglePlay" + responses: + '200': + description: Create/Edit Google Play integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsGooglePlay + "/api/v4/groups/{id}/integrations/hangouts-chat": + put: + summary: Create/Edit Hangouts Chat integration + description: Set Hangouts Chat integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsHangoutsChat + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsHangoutsChat" + responses: + '200': + description: Create/Edit Hangouts Chat integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsHangoutsChat + "/api/v4/groups/{id}/integrations/harbor": + put: + summary: Create/Edit Harbor integration + description: Set Harbor integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsHarbor + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsHarbor" + responses: + '200': + description: Create/Edit Harbor integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsHarbor + "/api/v4/groups/{id}/integrations/irker": + put: + summary: Create/Edit Irker integration + description: Set Irker integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsIrker + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsIrker" + responses: + '200': + description: Create/Edit Irker integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsIrker + "/api/v4/groups/{id}/integrations/jenkins": + put: + summary: Create/Edit Jenkins integration + description: Set Jenkins integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsJenkins + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsJenkins" + responses: + '200': + description: Create/Edit Jenkins integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsJenkins + "/api/v4/groups/{id}/integrations/jira": + put: + summary: Create/Edit Jira integration + description: Set Jira integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsJira + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsJira" + responses: + '200': + description: Create/Edit Jira integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsJira + "/api/v4/groups/{id}/integrations/jira-cloud-app": + put: + summary: Create/Edit Jira Cloud App integration + description: Set Jira Cloud App integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsJiraCloudApp + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsJiraCloudApp" + responses: + '200': + description: Create/Edit Jira Cloud App integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsJiraCloudApp + "/api/v4/groups/{id}/integrations/matrix": + put: + summary: Create/Edit Matrix integration + description: Set Matrix integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsMatrix + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsMatrix" + responses: + '200': + description: Create/Edit Matrix integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsMatrix + "/api/v4/groups/{id}/integrations/mattermost-slash-commands": + put: + summary: Create/Edit Mattermost Slash Commands integration + description: Set Mattermost Slash Commands integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsMattermostSlashCommands + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsMattermostSlashCommands" + responses: + '200': + description: Create/Edit Mattermost Slash Commands integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsMattermostSlashCommands + "/api/v4/groups/{id}/integrations/slack-slash-commands": + put: + summary: Create/Edit Slack Slash Commands integration + description: Set Slack Slash Commands integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsSlackSlashCommands + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsSlackSlashCommands" + responses: + '200': + description: Create/Edit Slack Slash Commands integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsSlackSlashCommands + "/api/v4/groups/{id}/integrations/packagist": + put: + summary: Create/Edit Packagist integration + description: Set Packagist integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsPackagist + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsPackagist" + responses: + '200': + description: Create/Edit Packagist integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsPackagist + "/api/v4/groups/{id}/integrations/phorge": + put: + summary: Create/Edit Phorge integration + description: Set Phorge integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsPhorge + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsPhorge" + responses: + '200': + description: Create/Edit Phorge integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsPhorge + "/api/v4/groups/{id}/integrations/pipelines-email": + put: + summary: Create/Edit Pipelines Email integration + description: Set Pipelines Email integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsPipelinesEmail + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsPipelinesEmail" + responses: + '200': + description: Create/Edit Pipelines Email integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsPipelinesEmail + "/api/v4/groups/{id}/integrations/pivotaltracker": + put: + summary: Create/Edit Pivotaltracker integration + description: Set Pivotaltracker integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsPivotaltracker + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsPivotaltracker" + responses: + '200': + description: Create/Edit Pivotaltracker integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsPivotaltracker + "/api/v4/groups/{id}/integrations/pumble": + put: + summary: Create/Edit Pumble integration + description: Set Pumble integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsPumble + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsPumble" + responses: + '200': + description: Create/Edit Pumble integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsPumble + "/api/v4/groups/{id}/integrations/pushover": + put: + summary: Create/Edit Pushover integration + description: Set Pushover integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsPushover + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsPushover" + responses: + '200': + description: Create/Edit Pushover integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsPushover + "/api/v4/groups/{id}/integrations/redmine": + put: + summary: Create/Edit Redmine integration + description: Set Redmine integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsRedmine + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsRedmine" + responses: + '200': + description: Create/Edit Redmine integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsRedmine + "/api/v4/groups/{id}/integrations/ewm": + put: + summary: Create/Edit Ewm integration + description: Set Ewm integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsEwm + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsEwm" + responses: + '200': + description: Create/Edit Ewm integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsEwm + "/api/v4/groups/{id}/integrations/youtrack": + put: + summary: Create/Edit Youtrack integration + description: Set Youtrack integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsYoutrack + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsYoutrack" + responses: + '200': + description: Create/Edit Youtrack integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsYoutrack + "/api/v4/groups/{id}/integrations/clickup": + put: + summary: Create/Edit Clickup integration + description: Set Clickup integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsClickup + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsClickup" + responses: + '200': + description: Create/Edit Clickup integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsClickup + "/api/v4/groups/{id}/integrations/slack": + put: + summary: Create/Edit Slack integration + description: Set Slack integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsSlack + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsSlack" + responses: + '200': + description: Create/Edit Slack integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsSlack + "/api/v4/groups/{id}/integrations/microsoft-teams": + put: + summary: Create/Edit Microsoft Teams integration + description: Set Microsoft Teams integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsMicrosoftTeams + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsMicrosoftTeams" + responses: + '200': + description: Create/Edit Microsoft Teams integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsMicrosoftTeams + "/api/v4/groups/{id}/integrations/mattermost": + put: + summary: Create/Edit Mattermost integration + description: Set Mattermost integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsMattermost + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsMattermost" + responses: + '200': + description: Create/Edit Mattermost integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsMattermost + "/api/v4/groups/{id}/integrations/teamcity": + put: + summary: Create/Edit Teamcity integration + description: Set Teamcity integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsTeamcity + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsTeamcity" + responses: + '200': + description: Create/Edit Teamcity integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsTeamcity + "/api/v4/groups/{id}/integrations/telegram": + put: + summary: Create/Edit Telegram integration + description: Set Telegram integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsTelegram + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsTelegram" + responses: + '200': + description: Create/Edit Telegram integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsTelegram + "/api/v4/groups/{id}/integrations/unify-circuit": + put: + summary: Create/Edit Unify Circuit integration + description: Set Unify Circuit integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsUnifyCircuit + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsUnifyCircuit" + responses: + '200': + description: Create/Edit Unify Circuit integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsUnifyCircuit + "/api/v4/groups/{id}/integrations/webex-teams": + put: + summary: Create/Edit Webex Teams integration + description: Set Webex Teams integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsWebexTeams + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsWebexTeams" + responses: + '200': + description: Create/Edit Webex Teams integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsWebexTeams + "/api/v4/groups/{id}/integrations/zentao": + put: + summary: Create/Edit Zentao integration + description: Set Zentao integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsZentao + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsZentao" + responses: + '200': + description: Create/Edit Zentao integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsZentao + "/api/v4/groups/{id}/integrations/squash-tm": + put: + summary: Create/Edit Squash Tm integration + description: Set Squash Tm integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsSquashTm + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsSquashTm" + responses: + '200': + description: Create/Edit Squash Tm integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsSquashTm + "/api/v4/groups/{id}/integrations/github": + put: + summary: Create/Edit Github integration + description: Set Github integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsGithub + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsGithub" + responses: + '200': + description: Create/Edit Github integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsGithub + "/api/v4/groups/{id}/integrations/git-guardian": + put: + summary: Create/Edit Git Guardian integration + description: Set Git Guardian integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsGitGuardian + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsGitGuardian" + responses: + '200': + description: Create/Edit Git Guardian integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsGitGuardian + "/api/v4/groups/{id}/integrations/google-cloud-platform-artifact-registry": + put: + summary: Create/Edit Google Cloud Platform Artifact Registry integration + description: Set Google Cloud Platform Artifact Registry integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsGoogleCloudPlatformArtifactRegistry + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsGoogleCloudPlatformArtifactRegistry" + responses: + '200': + description: Create/Edit Google Cloud Platform Artifact Registry integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsGoogleCloudPlatformArtifactRegistry + "/api/v4/groups/{id}/integrations/google-cloud-platform-workload-identity-federation": + put: + summary: Create/Edit Google Cloud Platform Workload Identity Federation integration + description: Set Google Cloud Platform Workload Identity Federation integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsGoogleCloudPlatformWorkloadIdentityFederation + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsGoogleCloudPlatformWorkloadIdentityFederation" + responses: + '200': + description: Create/Edit Google Cloud Platform Workload Identity Federation + integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsGoogleCloudPlatformWorkloadIdentityFederation + "/api/v4/groups/{id}/integrations/mock-ci": + put: + summary: Create/Edit Mock Ci integration + description: Set Mock Ci integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsMockCi + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsMockCi" + responses: + '200': + description: Create/Edit Mock Ci integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsMockCi + "/api/v4/groups/{id}/integrations/mock-monitoring": + put: + summary: Create/Edit Mock Monitoring integration + description: Set Mock Monitoring integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdIntegrationsMockMonitoring + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdIntegrationsMockMonitoring" + responses: + '200': + description: Create/Edit Mock Monitoring integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4GroupsIdIntegrationsMockMonitoring + "/api/v4/groups/{id}/integrations/{slug}": + delete: + summary: Disable an integration + description: Disable the integration. Integration settings are preserved. + produces: + - application/json + parameters: + - in: path + name: slug + description: The name of the integration + type: string + enum: + - apple-app-store + - asana + - assembla + - bamboo + - bugzilla + - buildkite + - campfire + - confluence + - custom-issue-tracker + - datadog + - diffblue-cover + - discord + - drone-ci + - emails-on-push + - external-wiki + - gitlab-slack-application + - google-play + - hangouts-chat + - harbor + - irker + - jenkins + - jira + - jira-cloud-app + - matrix + - mattermost-slash-commands + - slack-slash-commands + - packagist + - phorge + - pipelines-email + - pivotaltracker + - pumble + - pushover + - redmine + - ewm + - youtrack + - clickup + - slack + - microsoft-teams + - mattermost + - teamcity + - telegram + - unify-circuit + - webex-teams + - zentao + - squash-tm + - github + - git-guardian + - google-cloud-platform-artifact-registry + - google-cloud-platform-workload-identity-federation + - mock-ci + - mock-monitoring + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '204': + description: Disable an integration + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - integrations + operationId: deleteApiV4GroupsIdIntegrationsSlug + get: + summary: Get an integration settings + description: Get the integration settings. + produces: + - application/json + parameters: + - in: path + name: slug + description: The name of the integration + type: string + enum: + - apple-app-store + - asana + - assembla + - bamboo + - bugzilla + - buildkite + - campfire + - confluence + - custom-issue-tracker + - datadog + - diffblue-cover + - discord + - drone-ci + - emails-on-push + - external-wiki + - gitlab-slack-application + - google-play + - hangouts-chat + - harbor + - irker + - jenkins + - jira + - jira-cloud-app + - matrix + - mattermost-slash-commands + - slack-slash-commands + - packagist + - phorge + - pipelines-email + - pivotaltracker + - pumble + - pushover + - redmine + - ewm + - youtrack + - clickup + - slack + - microsoft-teams + - mattermost + - teamcity + - telegram + - unify-circuit + - webex-teams + - zentao + - squash-tm + - github + - git-guardian + - google-cloud-platform-artifact-registry + - google-cloud-platform-workload-identity-federation + - mock-ci + - mock-monitoring + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get an integration settings + schema: + "$ref": "#/definitions/API_Entities_Integration" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - integrations + operationId: getApiV4GroupsIdIntegrationsSlug + "/api/v4/groups/{id}/invitations": + post: + summary: Invite non-members by email address to a group or project. + description: This feature was introduced in GitLab 13.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The group ID + type: string + required: true + - name: postApiV4GroupsIdInvitations + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdInvitations" + responses: + '201': + description: Invite non-members by email address to a group or project. + schema: + "$ref": "#/definitions/API_Entities_Invitation" + tags: + - invitations + operationId: postApiV4GroupsIdInvitations + get: + summary: Get a list of group or project invitations viewable by the authenticated + user + description: This feature was introduced in GitLab 13.6 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: query + description: A query string to search for members + type: string + required: false + responses: + '200': + description: Get a list of group or project invitations viewable by the + authenticated user + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Invitation" + tags: + - invitations + operationId: getApiV4GroupsIdInvitations + "/api/v4/groups/{id}/invitations/{email}": + put: + description: Updates a group or project invitation. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The group ID + type: string + required: true + - in: path + name: email + description: The email address of the invitation + type: string + required: true + - name: putApiV4GroupsIdInvitationsEmail + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdInvitationsEmail" + responses: + '200': + description: Updates a group or project invitation. + schema: + "$ref": "#/definitions/API_Entities_Invitation" + tags: + - invitations + operationId: putApiV4GroupsIdInvitationsEmail + delete: + description: Removes an invitation from a group or project. + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID + type: string + required: true + - in: path + name: email + description: The email address of the invitation + type: string + required: true + responses: + '204': + description: Removes an invitation from a group or project. + '403': + description: Forbidden + '404': + description: Not found + '409': + description: Could not delete invitation + tags: + - invitations + operationId: deleteApiV4GroupsIdInvitationsEmail + "/api/v4/groups/{id}/uploads": + get: + description: Get the list of uploads of a group + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get the list of uploads of a group + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_MarkdownUploadAdmin" + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - groups + operationId: getApiV4GroupsIdUploads + "/api/v4/groups/{id}/uploads/{upload_id}": + get: + description: Download a single group upload by ID + produces: + - application/json + parameters: + - in: path + name: upload_id + description: The ID of a group upload + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Download a single group upload by ID + schema: + type: file + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - groups + operationId: getApiV4GroupsIdUploadsUploadId + delete: + description: Delete a single group upload + produces: + - application/json + parameters: + - in: path + name: upload_id + description: The ID of a group upload + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a single group upload + '400': + description: Bad request + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - groups + operationId: deleteApiV4GroupsIdUploadsUploadId + "/api/v4/groups/{id}/uploads/{secret}/{filename}": + get: + description: Download a single project upload by secret and filename + produces: + - application/json + parameters: + - in: path + name: secret + description: The 32-character secret of a group upload + type: string + required: true + - in: path + name: filename + description: The filename of a group upload + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Download a single project upload by secret and filename + schema: + type: file + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - groups + operationId: getApiV4GroupsIdUploadsSecretFilename + delete: + description: Delete a single group upload by secret and filename + produces: + - application/json + parameters: + - in: path + name: secret + description: The 32-character secret of a group upload + type: string + required: true + - in: path + name: filename + description: The filename of a group upload + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a single group upload by secret and filename + '400': + description: Bad request + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - groups + operationId: deleteApiV4GroupsIdUploadsSecretFilename + "/api/v4/groups/{id}/-/packages/maven/*path/{file_name}": + get: + summary: Download the maven package file at a group level + description: This feature was introduced in GitLab 11.7 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group + type: string + required: true + - in: query + name: path + description: Package path + type: string + required: true + example: foo/bar/mypkg/1.0-SNAPSHOT + - in: path + name: file_name + description: Package file name + type: string + required: true + example: mypkg-1.0-SNAPSHOT.jar + responses: + '200': + description: Download the maven package file at a group level + '302': + description: Download the maven package file at a group level + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - maven_packages + operationId: getApiV4GroupsIdPackagesMaven*pathFileName + "/api/v4/groups/{id}/members": + get: + description: Gets a list of group or project members viewable by the authenticated + user. + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID + type: string + required: true + - in: query + name: query + description: A query string to search for members + type: string + required: false + - in: query + name: user_ids + description: Array of user ids to look up for membership + type: array + items: + type: integer + format: int32 + required: false + - in: query + name: skip_users + description: Array of user ids to be skipped for membership + type: array + items: + type: integer + format: int32 + required: false + - in: query + name: show_seat_info + description: Show seat information for members + type: boolean + required: false + - in: query + name: with_saml_identity + description: List only members with linked SAML identity + type: boolean + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Gets a list of group or project members viewable by the authenticated + user. + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Member" + tags: + - members + operationId: getApiV4GroupsIdMembers + post: + description: Adds a member to a group or project. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The group ID + type: string + required: true + - name: postApiV4GroupsIdMembers + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdMembers" + responses: + '201': + description: Adds a member to a group or project. + schema: + "$ref": "#/definitions/API_Entities_Member" + tags: + - members + operationId: postApiV4GroupsIdMembers + "/api/v4/groups/{id}/members/all": + get: + description: Gets a list of group or project members viewable by the authenticated + user, including those who gained membership through ancestor group. + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID + type: string + required: true + - in: query + name: query + description: A query string to search for members + type: string + required: false + - in: query + name: user_ids + description: Array of user ids to look up for membership + type: array + items: + type: integer + format: int32 + required: false + - in: query + name: show_seat_info + description: Show seat information for members + type: boolean + required: false + - in: query + name: state + description: Filter results by member state + type: string + enum: + - awaiting + - active + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Gets a list of group or project members viewable by the authenticated + user, including those who gained membership through ancestor group. + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Member" + tags: + - members + operationId: getApiV4GroupsIdMembersAll + "/api/v4/groups/{id}/members/{user_id}": + get: + description: Gets a member of a group or project. + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID + type: string + required: true + - in: path + name: user_id + description: The user ID of the member + type: integer + format: int32 + required: true + responses: + '200': + description: Gets a member of a group or project. + schema: + "$ref": "#/definitions/API_Entities_Member" + tags: + - members + operationId: getApiV4GroupsIdMembersUserId + put: + description: Updates a member of a group or project. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The group ID + type: string + required: true + - in: path + name: user_id + description: The user ID of the new member + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdMembersUserId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdMembersUserId" + responses: + '200': + description: Updates a member of a group or project. + schema: + "$ref": "#/definitions/API_Entities_Member" + tags: + - members + operationId: putApiV4GroupsIdMembersUserId + delete: + description: Removes a user from a group or project. + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID + type: string + required: true + - in: path + name: user_id + description: The user ID of the member + type: integer + format: int32 + required: true + - in: query + name: skip_subresources + description: Flag indicating if the deletion of direct memberships of the + removed member in subgroups and projects should be skipped + type: boolean + default: false + required: false + - in: query + name: unassign_issuables + description: Flag indicating if the removed member should be unassigned from + any issues or merge requests within given group or project + type: boolean + default: false + required: false + responses: + '204': + description: Removes a user from a group or project. + tags: + - members + operationId: deleteApiV4GroupsIdMembersUserId + "/api/v4/groups/{id}/members/all/{user_id}": + get: + description: Gets a member of a group or project, including those who gained + membership through ancestor group + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID + type: string + required: true + - in: path + name: user_id + description: The user ID of the member + type: integer + format: int32 + required: true + responses: + '200': + description: Gets a member of a group or project, including those who gained + membership through ancestor group + schema: + "$ref": "#/definitions/API_Entities_Member" + tags: + - members + operationId: getApiV4GroupsIdMembersAllUserId + "/api/v4/groups/{id}/members/{user_id}/override": + post: + description: Overrides the access level of an LDAP group member. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: path + name: user_id + description: The user ID of the member + type: integer + format: int32 + required: true + responses: + '201': + description: Overrides the access level of an LDAP group member. + schema: + "$ref": "#/definitions/API_Entities_Member" + tags: + - groups + operationId: postApiV4GroupsIdMembersUserIdOverride + delete: + description: Remove an LDAP group member access level override. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: path + name: user_id + description: The user ID of the member + type: integer + format: int32 + required: true + responses: + '200': + description: Remove an LDAP group member access level override. + schema: + "$ref": "#/definitions/API_Entities_Member" + tags: + - groups + operationId: deleteApiV4GroupsIdMembersUserIdOverride + "/api/v4/groups/{id}/members/{member_id}/approve": + put: + description: Approves a pending member + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: path + name: member_id + description: The ID of the member requiring approval + type: integer + format: int32 + required: true + responses: + '200': + description: Approves a pending member + tags: + - groups + operationId: putApiV4GroupsIdMembersMemberIdApprove + "/api/v4/groups/{id}/members/approve_all": + post: + description: Approves all pending members + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + responses: + '201': + description: Approves all pending members + tags: + - groups + operationId: postApiV4GroupsIdMembersApproveAll + "/api/v4/groups/{id}/pending_members": + get: + description: Lists all pending members for a group including invited users + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Lists all pending members for a group including invited users + tags: + - groups + operationId: getApiV4GroupsIdPendingMembers + "/api/v4/groups/{id}/billable_members": + get: + description: Gets a list of billable users of top-level group. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: search + description: The exact name of the subscribed member + type: string + required: false + - in: query + name: sort + description: The sorting option + type: string + enum: + - access_level_asc + - access_level_desc + - last_joined + - name_asc + - name_desc + - oldest_joined + - oldest_sign_in + - recent_sign_in + - last_activity_on_asc + - last_activity_on_desc + required: false + responses: + '200': + description: Gets a list of billable users of top-level group. + schema: + "$ref": "#/definitions/API_Entities_Member" + tags: + - groups + operationId: getApiV4GroupsIdBillableMembers + "/api/v4/groups/{id}/members/{user_id}/state": + put: + description: Changes the state of the memberships of a user in the group + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: path + name: user_id + description: The user ID of the user + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdMembersUserIdState + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdMembersUserIdState" + responses: + '200': + description: Changes the state of the memberships of a user in the group + tags: + - groups + operationId: putApiV4GroupsIdMembersUserIdState + "/api/v4/groups/{id}/billable_members/{user_id}/memberships": + get: + description: Get the direct memberships of a billable user of a top-level group. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: path + name: user_id + description: The user ID of the member + type: integer + format: int32 + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get the direct memberships of a billable user of a top-level + group. + schema: + "$ref": "#/definitions/EE_API_Entities_BillableMembership" + tags: + - groups + operationId: getApiV4GroupsIdBillableMembersUserIdMemberships + "/api/v4/groups/{id}/billable_members/{user_id}/indirect": + get: + description: Get the indirect memberships of a billable user of a top-level + group. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: path + name: user_id + description: The user ID of the member + type: integer + format: int32 + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get the indirect memberships of a billable user of a top-level + group. + schema: + "$ref": "#/definitions/EE_API_Entities_BillableMembership" + tags: + - groups + operationId: getApiV4GroupsIdBillableMembersUserIdIndirect + "/api/v4/groups/{id}/billable_members/{user_id}": + delete: + description: Removes a billable member from a group or project. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a group + type: string + required: true + - in: path + name: user_id + description: The user ID of the member + type: integer + format: int32 + required: true + responses: + '204': + description: Removes a billable member from a group or project. + tags: + - groups + operationId: deleteApiV4GroupsIdBillableMembersUserId + "/api/v4/groups/{id}/merge_requests": + get: + summary: List group merge requests + description: Get all merge requests for this group and its subgroups. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user. + type: string + required: true + - in: query + name: author_id + description: Returns merge requests created by the given user `id`. Mutually + exclusive with `author_username`. Combine with `scope=all` or `scope=assigned_to_me`. + type: integer + format: int32 + required: false + - in: query + name: author_username + description: Returns merge requests created by the given `username`. Mutually + exclusive with `author_id`. + type: string + required: false + - in: query + name: assignee_id + description: Returns merge requests assigned to the given user `id`. `None` + returns unassigned merge requests. `Any` returns merge requests with an + assignee. + type: integer + format: int32 + required: false + - in: query + name: assignee_username + description: Returns merge requests created by the given `username`. Mutually + exclusive with `author_id`. + type: array + items: + type: string + required: false + - in: query + name: reviewer_username + description: Returns merge requests which have the user as a reviewer with + the given `username`. `None` returns merge requests with no reviewers. `Any` + returns merge requests with any reviewer. Mutually exclusive with `reviewer_id`. + Introduced in GitLab 13.8. + type: string + required: false + - in: query + name: labels + description: Returns merge requests matching a comma-separated list of labels. + `None` lists all merge requests with no labels. `Any` lists all merge requests + with at least one label. Predefined names are case-insensitive. + type: array + items: + type: string + required: false + - in: query + name: milestone + description: Returns merge requests for a specific milestone. `None` returns + merge requests with no milestone. `Any` returns merge requests that have + an assigned milestone. + type: string + required: false + - in: query + name: my_reaction_emoji + description: Returns merge requests reacted by the authenticated user by the + given `emoji`. `None` returns issues not given a reaction. `Any` returns + issues given at least one reaction. + type: string + required: false + - in: query + name: reviewer_id + description: Returns merge requests which have the user as a reviewer with + the given user `id`. `None` returns merge requests with no reviewers. `Any` + returns merge requests with any reviewer. Mutually exclusive with `reviewer_username`. + type: integer + format: int32 + required: false + - in: query + name: state + description: Returns `all` merge requests or just those that are `opened`, + `closed`, `locked`, or `merged`. + type: string + default: all + enum: + - opened + - closed + - locked + - merged + - all + required: false + - in: query + name: order_by + description: Returns merge requests ordered by `created_at`, `label_priority`, + `milestone_due`, `popularity`, `priority`, `title`, `updated_at` or `merged_at` + fields. Introduced in GitLab 14.8. + type: string + default: created_at + enum: + - created_at + - label_priority + - milestone_due + - popularity + - priority + - title + - updated_at + - merged_at + required: false + - in: query + name: sort + description: Returns merge requests sorted in `asc` or `desc` order. + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: with_labels_details + description: 'If `true`, response returns more details for each label in labels + field: `:name`,`:color`, `:description`, `:description_html`, `:text_color`' + type: boolean + default: false + required: false + - in: query + name: with_merge_status_recheck + description: If `true`, this projection requests (but does not guarantee) + that the `merge_status` field be recalculated asynchronously. Introduced + in GitLab 13.0. + type: boolean + default: false + required: false + - in: query + name: created_after + description: Returns merge requests created on or after the given time. Expected + in ISO 8601 format. + type: string + format: date-time + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: created_before + description: Returns merge requests created on or before the given time. Expected + in ISO 8601 format. + type: string + format: date-time + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: updated_after + description: Returns merge requests updated on or after the given time. Expected + in ISO 8601 format. + type: string + format: date-time + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: updated_before + description: Returns merge requests updated on or before the given time. Expected + in ISO 8601 format. + type: string + format: date-time + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: view + description: If simple, returns the `iid`, URL, title, description, and basic + state of merge request + type: string + enum: + - simple + required: false + - in: query + name: scope + description: 'Returns merge requests for the given scope: `created_by_me`, + `assigned_to_me` or `all`' + type: string + enum: + - created-by-me + - assigned-to-me + - created_by_me + - assigned_to_me + - all + required: false + - in: query + name: source_branch + description: Returns merge requests with the given source branch + type: string + required: false + - in: query + name: source_project_id + description: Returns merge requests with the given source project id + type: integer + format: int32 + required: false + - in: query + name: target_branch + description: Returns merge requests with the given target branch + type: string + required: false + - in: query + name: search + description: Search merge requests against their `title` and `description`. + type: string + required: false + - in: query + name: in + description: Modify the scope of the search attribute. `title`, `description`, + or a string joining them with comma. + type: string + required: false + example: title,description + - in: query + name: wip + description: Filter merge requests against their `wip` status. `yes` to return + only draft merge requests, `no` to return non-draft merge requests. + type: string + enum: + - 'yes' + - 'no' + required: false + - in: query + name: not[author_id] + description: "`` Returns merge requests created by the given user + `id`. Mutually exclusive with `author_username`. Combine with `scope=all` + or `scope=assigned_to_me`." + type: integer + format: int32 + required: false + - in: query + name: not[author_username] + description: "`` Returns merge requests created by the given `username`. + Mutually exclusive with `author_id`." + type: string + required: false + - in: query + name: not[assignee_id] + description: "`` Returns merge requests assigned to the given user + `id`. `None` returns unassigned merge requests. `Any` returns merge requests + with an assignee." + type: integer + format: int32 + required: false + - in: query + name: not[assignee_username] + description: "`` Returns merge requests created by the given `username`. + Mutually exclusive with `author_id`." + type: array + items: + type: string + required: false + - in: query + name: not[reviewer_username] + description: "`` Returns merge requests which have the user as a + reviewer with the given `username`. `None` returns merge requests with no + reviewers. `Any` returns merge requests with any reviewer. Mutually exclusive + with `reviewer_id`. Introduced in GitLab 13.8." + type: string + required: false + - in: query + name: not[labels] + description: "`` Returns merge requests matching a comma-separated + list of labels. `None` lists all merge requests with no labels. `Any` lists + all merge requests with at least one label. Predefined names are case-insensitive." + type: array + items: + type: string + required: false + - in: query + name: not[milestone] + description: "`` Returns merge requests for a specific milestone. + `None` returns merge requests with no milestone. `Any` returns merge requests + that have an assigned milestone." + type: string + required: false + - in: query + name: not[my_reaction_emoji] + description: "`` Returns merge requests reacted by the authenticated + user by the given `emoji`. `None` returns issues not given a reaction. `Any` + returns issues given at least one reaction." + type: string + required: false + - in: query + name: not[reviewer_id] + description: "`` Returns merge requests which have the user as a + reviewer with the given user `id`. `None` returns merge requests with no + reviewers. `Any` returns merge requests with any reviewer. Mutually exclusive + with `reviewer_username`." + type: integer + format: int32 + required: false + - in: query + name: deployed_before + description: Returns merge requests deployed before the given date/time. Expected + in ISO 8601 format. + type: string + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: deployed_after + description: Returns merge requests deployed after the given date/time. Expected + in ISO 8601 format + type: string + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: environment + description: Returns merge requests deployed to the given environment + type: string + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: approved + description: Filters merge requests by their `approved` status. `yes` returns + only approved merge requests. `no` returns only non-approved merge requests. + type: string + enum: + - 'yes' + - 'no' + required: false + - in: query + name: merge_user_id + description: Returns merge requests which have been merged by the user with + the given user `id`. Mutually exclusive with `merge_user_username`. + type: integer + format: int32 + required: false + - in: query + name: merge_user_username + description: Returns merge requests which have been merged by the user with + the given `username`. Mutually exclusive with `merge_user_id`. + type: string + required: false + - in: query + name: approver_ids + description: Return merge requests which have specified the users with the + given IDs as an individual approver + type: string + required: false + - in: query + name: approved_by_ids + description: Return merge requests which have been approved by the specified + users with the given IDs + type: string + required: false + - in: query + name: approved_by_usernames + description: |- + Return merge requests which have been approved by the specified users with the given + usernames + type: string + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: non_archived + description: Returns merge requests from non archived projects only. + type: boolean + default: true + required: false + responses: + '200': + description: List group merge requests + schema: + "$ref": "#/definitions/API_Entities_MergeRequestBasic" + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - merge_requests + operationId: getApiV4GroupsIdMergeRequests + "/api/v4/groups/{id}/-/packages/npm/-/package/*package_name/dist-tags": + get: + summary: Get all tags for a given an NPM package + description: This feature was introduced in GitLab 12.7 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group + type: string + required: true + - in: query + name: package_name + description: Package name + type: string + required: true + responses: + '200': + description: Get all tags for a given an NPM package + schema: + "$ref": "#/definitions/API_Entities_NpmPackageTag" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: getApiV4GroupsIdPackagesNpmPackage*packageNameDistTags + "/api/v4/groups/{id}/-/packages/npm/-/package/*package_name/dist-tags/{tag}": + put: + summary: Create or Update the given tag for the given NPM package and version + description: This feature was introduced in GitLab 12.7 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group + type: string + required: true + - in: path + name: tag + description: Package dist-tag + type: string + required: true + - name: putApiV4GroupsIdPackagesNpmPackage*packageNameDistTagsTag + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdPackagesNpmPackage*packageNameDistTagsTag" + responses: + '204': + description: Create or Update the given tag for the given NPM package and + version + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: putApiV4GroupsIdPackagesNpmPackage*packageNameDistTagsTag + delete: + summary: Deletes the given tag + description: This feature was introduced in GitLab 12.7 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group + type: string + required: true + - in: query + name: package_name + description: Package name + type: string + required: true + - in: path + name: tag + description: Package dist-tag + type: string + required: true + responses: + '204': + description: Deletes the given tag + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: deleteApiV4GroupsIdPackagesNpmPackage*packageNameDistTagsTag + "/api/v4/groups/{id}/-/packages/npm/-/npm/v1/security/advisories/bulk": + post: + summary: NPM registry bulk advisory endpoint + description: This feature was introduced in GitLab 15.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group + type: string + required: true + responses: + '200': + description: Ok + '307': + description: Temporary Redirect + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: postApiV4GroupsIdPackagesNpmNpmV1SecurityAdvisoriesBulk + "/api/v4/groups/{id}/-/packages/npm/-/npm/v1/security/audits/quick": + post: + summary: NPM registry quick audit endpoint + description: This feature was introduced in GitLab 15.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group + type: string + required: true + responses: + '200': + description: Ok + '307': + description: Temporary Redirect + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: postApiV4GroupsIdPackagesNpmNpmV1SecurityAuditsQuick + "/api/v4/groups/{id}/-/packages/npm/*package_name": + get: + summary: NPM registry metadata endpoint + description: This feature was introduced in GitLab 11.8 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group + type: string + required: true + - in: query + name: package_name + description: Package name + type: string + required: true + example: mypackage + responses: + '200': + description: Ok + schema: + "$ref": "#/definitions/API_Entities_NpmPackage" + '302': + description: Found (redirect) + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: getApiV4GroupsIdPackagesNpm*packageName + "/api/v4/groups/{id}/-/packages/nuget/index": + get: + summary: The NuGet V3 Feed Service Index + description: This feature was introduced in GitLab 12.6 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID or full group path. + type: integer + format: int32 + required: true + responses: + '200': + description: The NuGet V3 Feed Service Index + schema: + "$ref": "#/definitions/API_Entities_Nuget_ServiceIndex" + '404': + description: Not Found + tags: + - nuget_packages + operationId: getApiV4GroupsIdPackagesNugetIndex + "/api/v4/groups/{id}/-/packages/nuget/symbolfiles/*file_name/*signature/*same_file_name": + get: + summary: The NuGet Symbol File Download Endpoint + description: This feature was introduced in GitLab 16.7 + produces: + - application/json + parameters: + - in: header + name: Symbolchecksum + type: string + required: true + - in: path + name: id + description: The group ID or full group path. + type: integer + format: int32 + required: true + - in: query + name: file_name + description: The symbol file name + type: string + required: true + example: mynugetpkg.pdb + - in: query + name: signature + description: The symbol file signature + type: string + required: true + example: k813f89485474661234z7109cve5709eFFFFFFFF + - in: query + name: same_file_name + type: string + required: true + responses: + '200': + description: The NuGet Symbol File Download Endpoint + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: getApiV4GroupsIdPackagesNugetSymbolfiles*fileName*signature*sameFileName + "/api/v4/groups/{id}/-/packages/nuget/v2": + get: + summary: The NuGet V2 Feed Service Index + description: This feature was introduced in GitLab 16.2 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID or full group path. + type: integer + format: int32 + required: true + responses: + '200': + description: The NuGet V2 Feed Service Index + '404': + description: Not Found + tags: + - nuget_packages + operationId: getApiV4GroupsIdPackagesNugetV2 + "/api/v4/groups/{id}/-/packages/nuget/v2/$metadata": + get: + summary: The NuGet V2 Feed Package $metadata endpoint + description: This feature was introduced in GitLab 16.3 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID or full group path. + type: integer + format: int32 + required: true + responses: + '200': + description: The NuGet V2 Feed Package $metadata endpoint + tags: + - nuget_packages + operationId: getApiV4GroupsIdPackagesNugetV2$metadata + "/api/v4/groups/{id}/-/packages/nuget/metadata/*package_name/index": + get: + summary: The NuGet Metadata Service - Package name level + description: This feature was introduced in GitLab 12.8 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID or full group path. + type: integer + format: int32 + required: true + - in: query + name: package_name + description: The NuGet package name + type: string + required: true + example: MyNuGetPkg + responses: + '200': + description: The NuGet Metadata Service - Package name level + schema: + "$ref": "#/definitions/API_Entities_Nuget_PackagesMetadata" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: getApiV4GroupsIdPackagesNugetMetadata*packageNameIndex + "/api/v4/groups/{id}/-/packages/nuget/metadata/*package_name/*package_version": + get: + summary: The NuGet Metadata Service - Package name and version level + description: This feature was introduced in GitLab 12.8 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID or full group path. + type: integer + format: int32 + required: true + - in: query + name: package_name + description: The NuGet package name + type: string + required: true + example: MyNuGetPkg + - in: query + name: package_version + description: The NuGet package version + type: string + required: true + example: 1.0.0 + responses: + '200': + description: The NuGet Metadata Service - Package name and version level + schema: + "$ref": "#/definitions/API_Entities_Nuget_PackageMetadata" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: getApiV4GroupsIdPackagesNugetMetadata*packageName*packageVersion + "/api/v4/groups/{id}/-/packages/nuget/query": + get: + summary: The NuGet Search Service + description: This feature was introduced in GitLab 12.8 + produces: + - application/json + parameters: + - in: path + name: id + description: The group ID or full group path. + type: integer + format: int32 + required: true + - in: query + name: q + description: The search term + type: string + required: false + example: MyNuGet + - in: query + name: skip + description: The number of results to skip + type: integer + format: int32 + default: 0 + required: false + example: 1 + - in: query + name: take + description: The number of results to return + type: integer + format: int32 + default: 20 + required: false + example: 1 + - in: query + name: prerelease + description: Include prerelease versions + type: boolean + default: true + required: false + responses: + '200': + description: The NuGet Search Service + schema: + "$ref": "#/definitions/API_Entities_Nuget_SearchResults" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: getApiV4GroupsIdPackagesNugetQuery + "/api/v4/groups/{id}/-/packages/pypi/files/{sha256}/*file_identifier": + get: + summary: Download a package file from a group + description: This feature was introduced in GitLab 13.12 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or full path of the group. + type: integer + format: int32 + required: true + - in: query + name: file_identifier + description: The PyPi package file identifier + type: string + required: true + example: my.pypi.package-0.0.1.tar.gz + - in: path + name: sha256 + description: The PyPi package sha256 check sum + type: string + required: true + example: 5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff + responses: + '200': + description: Download a package file from a group + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - pypi_packages + operationId: getApiV4GroupsIdPackagesPypiFilesSha256*fileIdentifier + "/api/v4/groups/{id}/-/packages/pypi/simple": + get: + summary: The PyPi Simple Group Index Endpoint + description: This feature was introduced in GitLab 15.1 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or full path of the group. + type: integer + format: int32 + required: true + responses: + '200': + description: The PyPi Simple Group Index Endpoint + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - pypi_packages + operationId: getApiV4GroupsIdPackagesPypiSimple + "/api/v4/groups/{id}/-/packages/pypi/simple/*package_name": + get: + summary: The PyPi Simple Group Package Endpoint + description: This feature was introduced in GitLab 12.10 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or full path of the group. + type: integer + format: int32 + required: true + - in: query + name: package_name + description: The PyPi package name + type: string + required: true + example: my.pypi.package + responses: + '200': + description: The PyPi Simple Group Package Endpoint + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - pypi_packages + operationId: getApiV4GroupsIdPackagesPypiSimple*packageName + "/api/v4/groups/{id}/releases": + get: + summary: List group releases + description: Returns a list of group releases. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the group owned by the authenticated + user + type: string + required: true + - in: query + name: sort + description: The direction of the order. Either `desc` (default) for descending + order or `asc` for ascending order + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: simple + description: Return only limited fields for each release + type: boolean + default: false + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List group releases + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Release" + '400': + description: Bad request + '403': + description: Forbidden + '404': + description: Not found + tags: + - releases + operationId: getApiV4GroupsIdReleases + "/api/v4/groups/{id}/access_tokens/self/rotate": + post: + summary: Rotate a resource access token + description: Rotates a resource access token by passing it to the API in a header + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The group ID + type: string + required: true + - name: postApiV4GroupsIdAccessTokensSelfRotate + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdAccessTokensSelfRotate" + responses: + '200': + description: Rotate a resource access token + schema: + "$ref": "#/definitions/API_Entities_ResourceAccessTokenWithToken" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '405': + description: Method not allowed + tags: + - personal_access_tokens + operationId: postApiV4GroupsIdAccessTokensSelfRotate + "/api/v4/groups/{id}/wikis": + get: + description: Get a list of wiki pages + produces: + - application/json + parameters: + - in: query + name: with_content + description: Include pages' content + type: boolean + default: false + required: false + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a list of wiki pages + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_WikiPageBasic" + '404': + description: Not found + tags: + - wikis + operationId: getApiV4GroupsIdWikis + post: + description: Create a wiki page + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: postApiV4GroupsIdWikis + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdWikis" + responses: + '201': + description: Create a wiki page + schema: + "$ref": "#/definitions/API_Entities_WikiPage" + '400': + description: Validation error + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - wikis + operationId: postApiV4GroupsIdWikis + "/api/v4/groups/{id}/wikis/{slug}": + get: + description: Get a wiki page + produces: + - application/json + parameters: + - in: path + name: slug + description: The slug of a wiki page + type: string + required: true + - in: query + name: version + description: The version hash of a wiki page + type: string + required: false + - in: query + name: render_html + description: Render content to HTML + type: boolean + default: false + required: false + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a wiki page + schema: + "$ref": "#/definitions/API_Entities_WikiPage" + '404': + description: Not found + tags: + - wikis + operationId: getApiV4GroupsIdWikisSlug + put: + description: Update a wiki page + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: slug + type: integer + format: int32 + required: true + - name: putApiV4GroupsIdWikisSlug + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4GroupsIdWikisSlug" + responses: + '200': + description: Update a wiki page + schema: + "$ref": "#/definitions/API_Entities_WikiPage" + '400': + description: Validation error + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - wikis + operationId: putApiV4GroupsIdWikisSlug + delete: + description: Delete a wiki page + produces: + - application/json + parameters: + - in: path + name: slug + description: The slug of a wiki page + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a wiki page + '400': + description: Validation error + '404': + description: Not found + tags: + - wikis + operationId: deleteApiV4GroupsIdWikisSlug + "/api/v4/groups/{id}/wikis/attachments": + post: + summary: Upload an attachment to the wiki repository + description: This feature was introduced in GitLab 11.3. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: postApiV4GroupsIdWikisAttachments + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GroupsIdWikisAttachments" + responses: + '201': + description: Upload an attachment to the wiki repository + schema: + "$ref": "#/definitions/API_Entities_WikiAttachment" + '404': + description: Not found + tags: + - wikis + operationId: postApiV4GroupsIdWikisAttachments + "/api/v4/projects/{id}/access_requests": + get: + summary: Gets a list of access requests for a project. + description: This feature was introduced in GitLab 8.11. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Gets a list of access requests for a project. + schema: + "$ref": "#/definitions/API_Entities_AccessRequester" + tags: + - access_requests + operationId: getApiV4ProjectsIdAccessRequests + post: + summary: Requests access for the authenticated user to a project. + description: This feature was introduced in GitLab 8.11. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + responses: + '200': + description: successful operation + schema: + "$ref": "#/definitions/API_Entities_AccessRequester" + examples: + successfull_response: + id: 1 + username: raymond_smith + name: Raymond Smith + state: active + created_at: '2012-10-22T14:13:35Z' + access_level: 20 + tags: + - access_requests + operationId: postApiV4ProjectsIdAccessRequests + "/api/v4/projects/{id}/access_requests/{user_id}/approve": + put: + summary: Approves an access request for the given user. + description: This feature was introduced in GitLab 8.11. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: user_id + description: The user ID of the access requester + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdAccessRequestsUserIdApprove + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdAccessRequestsUserIdApprove" + responses: + '200': + description: successful operation + schema: + "$ref": "#/definitions/API_Entities_AccessRequester" + examples: + successfull_response: + id: 1 + username: raymond_smith + name: Raymond Smith + state: active + created_at: '2012-10-22T14:13:35Z' + access_level: 20 + tags: + - access_requests + operationId: putApiV4ProjectsIdAccessRequestsUserIdApprove + "/api/v4/projects/{id}/access_requests/{user_id}": + delete: + summary: Denies an access request for the given user. + description: This feature was introduced in GitLab 8.11. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: user_id + description: The user ID of the access requester + type: integer + format: int32 + required: true + responses: + '204': + description: Denies an access request for the given user. + tags: + - access_requests + operationId: deleteApiV4ProjectsIdAccessRequestsUserId + "/api/v4/projects/{id}/alert_management_alerts/{alert_iid}/metric_images/authorize": + post: + description: Workhorse authorize metric image file upload + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 17 + - in: path + name: alert_iid + description: The IID of the Alert + type: integer + format: int32 + required: true + example: 23 + responses: + '200': + description: Workhorse authorize metric image file upload + '403': + description: Forbidden + tags: + - alert_management + operationId: postApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImagesAuthorize + "/api/v4/projects/{id}/alert_management_alerts/{alert_iid}/metric_images": + post: + description: Upload a metric image for an alert + produces: + - application/json + consumes: + - multipart/form-data + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 17 + - in: path + name: alert_iid + description: The IID of the Alert + type: integer + format: int32 + required: true + example: 23 + - in: formData + name: file + description: The image file to be uploaded + type: file + required: true + - in: formData + name: url + description: The url to view more metric info + type: string + required: false + example: https://example.com/metric + - in: formData + name: url_text + description: A description of the image or URL + type: string + required: false + example: An example metric + responses: + '200': + description: Upload a metric image for an alert + schema: + "$ref": "#/definitions/API_Entities_MetricImage" + '403': + description: Forbidden + tags: + - alert_management + operationId: postApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImages + get: + description: Metric Images for alert + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 17 + - in: path + name: alert_iid + description: The IID of the Alert + type: integer + format: int32 + required: true + example: 23 + responses: + '200': + description: Metric Images for alert + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_MetricImage" + '404': + description: Not found + tags: + - alert_management + operationId: getApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImages + "/api/v4/projects/{id}/alert_management_alerts/{alert_iid}/metric_images/{metric_image_id}": + put: + description: Update a metric image for an alert + produces: + - application/json + consumes: + - multipart/form-data + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 17 + - in: path + name: alert_iid + description: The IID of the Alert + type: integer + format: int32 + required: true + example: 23 + - in: path + name: metric_image_id + description: The ID of metric image + type: integer + format: int32 + required: true + example: 42 + - in: formData + name: url + description: The url to view more metric info + type: string + required: false + example: https://example.com/metric + - in: formData + name: url_text + description: A description of the image or URL + type: string + required: false + example: An example metric + responses: + '200': + description: Update a metric image for an alert + schema: + "$ref": "#/definitions/API_Entities_MetricImage" + '403': + description: Forbidden + '422': + description: Unprocessable entity + tags: + - alert_management + operationId: putApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImagesMetricImageId + delete: + description: Remove a metric image for an alert + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 17 + - in: path + name: alert_iid + description: The IID of the Alert + type: integer + format: int32 + required: true + example: 23 + - in: path + name: metric_image_id + description: The ID of metric image + type: integer + format: int32 + required: true + example: 42 + responses: + '204': + description: Remove a metric image for an alert + schema: + "$ref": "#/definitions/API_Entities_MetricImage" + '403': + description: Forbidden + '422': + description: Unprocessable entity + tags: + - alert_management + operationId: deleteApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImagesMetricImageId + "/api/v4/projects/{id}/issues/{issue_iid}/award_emoji": + get: + summary: List an awardable's emoji reactions for projects + description: Get a list of all emoji reactions for a specified awardable. This + feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: issue_iid + description: ID (`iid` for merge requests/issues/epics, `id` for snippets) + of an awardable. + type: integer + format: int32 + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List an awardable's emoji reactions for projects + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '404': + description: Not Found + tags: + - award_emoji + operationId: getApiV4ProjectsIdIssuesIssueIidAwardEmoji + post: + summary: Add a new emoji reaction + description: Add an emoji reaction on the specified awardable. This feature + was introduced in 8.9 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: issue_iid + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdIssuesIssueIidAwardEmoji + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdIssuesIssueIidAwardEmoji" + responses: + '201': + description: Add a new emoji reaction + schema: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '400': + description: Bad Request + '404': + description: Not Found + tags: + - award_emoji + operationId: postApiV4ProjectsIdIssuesIssueIidAwardEmoji + "/api/v4/projects/{id}/issues/{issue_iid}/award_emoji/{award_id}": + get: + summary: Get a single emoji reaction + description: Get a single emoji reaction from an issue, snippet, or merge request. + This feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: award_id + description: ID of the emoji reaction. + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: issue_iid + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single emoji reaction + schema: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '404': + description: Not Found + tags: + - award_emoji + operationId: getApiV4ProjectsIdIssuesIssueIidAwardEmojiAwardId + delete: + summary: Delete an emoji reaction + description: Only an administrator or the author of the reaction can delete + an emoji reaction. This feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: award_id + description: ID of an emoji reaction. + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: issue_iid + type: integer + format: int32 + required: true + responses: + '204': + description: Delete an emoji reaction + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - award_emoji + operationId: deleteApiV4ProjectsIdIssuesIssueIidAwardEmojiAwardId + "/api/v4/projects/{id}/issues/{issue_iid}/notes/{note_id}/award_emoji": + get: + summary: List an awardable's emoji reactions for projects + description: Get a list of all emoji reactions for a specified awardable. This + feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: issue_iid + type: integer + format: int32 + required: true + - in: path + name: note_id + type: integer + format: int32 + required: true + responses: + '200': + description: List an awardable's emoji reactions for projects + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '404': + description: Not Found + tags: + - award_emoji + operationId: getApiV4ProjectsIdIssuesIssueIidNotesNoteIdAwardEmoji + post: + summary: Add a new emoji reaction + description: Add an emoji reaction on the specified awardable. This feature + was introduced in 8.9 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: issue_iid + type: integer + format: int32 + required: true + - in: path + name: note_id + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdIssuesIssueIidNotesNoteIdAwardEmoji + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdIssuesIssueIidNotesNoteIdAwardEmoji" + responses: + '201': + description: Add a new emoji reaction + schema: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '400': + description: Bad Request + '404': + description: Not Found + tags: + - award_emoji + operationId: postApiV4ProjectsIdIssuesIssueIidNotesNoteIdAwardEmoji + "/api/v4/projects/{id}/issues/{issue_iid}/notes/{note_id}/award_emoji/{award_id}": + get: + summary: Get a single emoji reaction + description: Get a single emoji reaction from an issue, snippet, or merge request. + This feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: award_id + description: ID of the emoji reaction. + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: issue_iid + type: integer + format: int32 + required: true + - in: path + name: note_id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single emoji reaction + schema: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '404': + description: Not Found + tags: + - award_emoji + operationId: getApiV4ProjectsIdIssuesIssueIidNotesNoteIdAwardEmojiAwardId + delete: + summary: Delete an emoji reaction + description: Only an administrator or the author of the reaction can delete + an emoji reaction. This feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: award_id + description: ID of an emoji reaction. + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: issue_iid + type: integer + format: int32 + required: true + - in: path + name: note_id + type: integer + format: int32 + required: true + responses: + '204': + description: Delete an emoji reaction + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - award_emoji + operationId: deleteApiV4ProjectsIdIssuesIssueIidNotesNoteIdAwardEmojiAwardId + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/award_emoji": + get: + summary: List an awardable's emoji reactions for projects + description: Get a list of all emoji reactions for a specified awardable. This + feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: merge_request_iid + description: ID (`iid` for merge requests/issues/epics, `id` for snippets) + of an awardable. + type: integer + format: int32 + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List an awardable's emoji reactions for projects + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '404': + description: Not Found + tags: + - award_emoji + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidAwardEmoji + post: + summary: Add a new emoji reaction + description: Add an emoji reaction on the specified awardable. This feature + was introduced in 8.9 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdMergeRequestsMergeRequestIidAwardEmoji + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdMergeRequestsMergeRequestIidAwardEmoji" + responses: + '201': + description: Add a new emoji reaction + schema: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '400': + description: Bad Request + '404': + description: Not Found + tags: + - award_emoji + operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidAwardEmoji + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/award_emoji/{award_id}": + get: + summary: Get a single emoji reaction + description: Get a single emoji reaction from an issue, snippet, or merge request. + This feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: award_id + description: ID of the emoji reaction. + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single emoji reaction + schema: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '404': + description: Not Found + tags: + - award_emoji + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidAwardEmojiAwardId + delete: + summary: Delete an emoji reaction + description: Only an administrator or the author of the reaction can delete + an emoji reaction. This feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: award_id + description: ID of an emoji reaction. + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '204': + description: Delete an emoji reaction + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - award_emoji + operationId: deleteApiV4ProjectsIdMergeRequestsMergeRequestIidAwardEmojiAwardId + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/notes/{note_id}/award_emoji": + get: + summary: List an awardable's emoji reactions for projects + description: Get a list of all emoji reactions for a specified awardable. This + feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + - in: path + name: note_id + type: integer + format: int32 + required: true + responses: + '200': + description: List an awardable's emoji reactions for projects + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '404': + description: Not Found + tags: + - award_emoji + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteIdAwardEmoji + post: + summary: Add a new emoji reaction + description: Add an emoji reaction on the specified awardable. This feature + was introduced in 8.9 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + - in: path + name: note_id + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteIdAwardEmoji + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteIdAwardEmoji" + responses: + '201': + description: Add a new emoji reaction + schema: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '400': + description: Bad Request + '404': + description: Not Found + tags: + - award_emoji + operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteIdAwardEmoji + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/notes/{note_id}/award_emoji/{award_id}": + get: + summary: Get a single emoji reaction + description: Get a single emoji reaction from an issue, snippet, or merge request. + This feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: award_id + description: ID of the emoji reaction. + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + - in: path + name: note_id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single emoji reaction + schema: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '404': + description: Not Found + tags: + - award_emoji + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteIdAwardEmojiAwardId + delete: + summary: Delete an emoji reaction + description: Only an administrator or the author of the reaction can delete + an emoji reaction. This feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: award_id + description: ID of an emoji reaction. + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + - in: path + name: note_id + type: integer + format: int32 + required: true + responses: + '204': + description: Delete an emoji reaction + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - award_emoji + operationId: deleteApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteIdAwardEmojiAwardId + "/api/v4/projects/{id}/snippets/{snippet_id}/award_emoji": + get: + summary: List an awardable's emoji reactions for projects + description: Get a list of all emoji reactions for a specified awardable. This + feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: snippet_id + description: ID (`iid` for merge requests/issues/epics, `id` for snippets) + of an awardable. + type: integer + format: int32 + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List an awardable's emoji reactions for projects + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '404': + description: Not Found + tags: + - award_emoji + operationId: getApiV4ProjectsIdSnippetsSnippetIdAwardEmoji + post: + summary: Add a new emoji reaction + description: Add an emoji reaction on the specified awardable. This feature + was introduced in 8.9 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: snippet_id + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdSnippetsSnippetIdAwardEmoji + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdSnippetsSnippetIdAwardEmoji" + responses: + '201': + description: Add a new emoji reaction + schema: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '400': + description: Bad Request + '404': + description: Not Found + tags: + - award_emoji + operationId: postApiV4ProjectsIdSnippetsSnippetIdAwardEmoji + "/api/v4/projects/{id}/snippets/{snippet_id}/award_emoji/{award_id}": + get: + summary: Get a single emoji reaction + description: Get a single emoji reaction from an issue, snippet, or merge request. + This feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: award_id + description: ID of the emoji reaction. + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: snippet_id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single emoji reaction + schema: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '404': + description: Not Found + tags: + - award_emoji + operationId: getApiV4ProjectsIdSnippetsSnippetIdAwardEmojiAwardId + delete: + summary: Delete an emoji reaction + description: Only an administrator or the author of the reaction can delete + an emoji reaction. This feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: award_id + description: ID of an emoji reaction. + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: snippet_id + type: integer + format: int32 + required: true + responses: + '204': + description: Delete an emoji reaction + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - award_emoji + operationId: deleteApiV4ProjectsIdSnippetsSnippetIdAwardEmojiAwardId + "/api/v4/projects/{id}/snippets/{snippet_id}/notes/{note_id}/award_emoji": + get: + summary: List an awardable's emoji reactions for projects + description: Get a list of all emoji reactions for a specified awardable. This + feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: snippet_id + type: integer + format: int32 + required: true + - in: path + name: note_id + type: integer + format: int32 + required: true + responses: + '200': + description: List an awardable's emoji reactions for projects + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '404': + description: Not Found + tags: + - award_emoji + operationId: getApiV4ProjectsIdSnippetsSnippetIdNotesNoteIdAwardEmoji + post: + summary: Add a new emoji reaction + description: Add an emoji reaction on the specified awardable. This feature + was introduced in 8.9 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: snippet_id + type: integer + format: int32 + required: true + - in: path + name: note_id + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdSnippetsSnippetIdNotesNoteIdAwardEmoji + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdSnippetsSnippetIdNotesNoteIdAwardEmoji" + responses: + '201': + description: Add a new emoji reaction + schema: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '400': + description: Bad Request + '404': + description: Not Found + tags: + - award_emoji + operationId: postApiV4ProjectsIdSnippetsSnippetIdNotesNoteIdAwardEmoji + "/api/v4/projects/{id}/snippets/{snippet_id}/notes/{note_id}/award_emoji/{award_id}": + get: + summary: Get a single emoji reaction + description: Get a single emoji reaction from an issue, snippet, or merge request. + This feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: award_id + description: ID of the emoji reaction. + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: snippet_id + type: integer + format: int32 + required: true + - in: path + name: note_id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single emoji reaction + schema: + "$ref": "#/definitions/API_Entities_AwardEmoji" + '404': + description: Not Found + tags: + - award_emoji + operationId: getApiV4ProjectsIdSnippetsSnippetIdNotesNoteIdAwardEmojiAwardId + delete: + summary: Delete an emoji reaction + description: Only an administrator or the author of the reaction can delete + an emoji reaction. This feature was introduced in 8.9 + produces: + - application/json + parameters: + - in: path + name: award_id + description: ID of an emoji reaction. + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: snippet_id + type: integer + format: int32 + required: true + - in: path + name: note_id + type: integer + format: int32 + required: true + responses: + '204': + description: Delete an emoji reaction + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - award_emoji + operationId: deleteApiV4ProjectsIdSnippetsSnippetIdNotesNoteIdAwardEmojiAwardId + "/api/v4/projects/{id}/badges": + get: + summary: Gets a list of project badges viewable by the authenticated user. + description: This feature was introduced in GitLab 10.6. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user. + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: name + description: Name for the badge + type: string + required: false + responses: + '200': + description: Gets a list of project badges viewable by the authenticated + user. + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Badge" + tags: + - badges + operationId: getApiV4ProjectsIdBadges + post: + summary: Adds a badge to a project. + description: This feature was introduced in GitLab 10.6. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user. + type: string + required: true + - name: postApiV4ProjectsIdBadges + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdBadges" + responses: + '201': + description: Adds a badge to a project. + schema: + "$ref": "#/definitions/API_Entities_Badge" + tags: + - badges + operationId: postApiV4ProjectsIdBadges + "/api/v4/projects/{id}/badges/render": + get: + summary: Preview a badge from a project. + description: This feature was introduced in GitLab 10.6. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user. + type: string + required: true + - in: query + name: link_url + description: URL of the badge link + type: string + required: true + - in: query + name: image_url + description: URL of the badge image + type: string + required: true + responses: + '200': + description: Preview a badge from a project. + schema: + "$ref": "#/definitions/API_Entities_BasicBadgeDetails" + tags: + - badges + operationId: getApiV4ProjectsIdBadgesRender + "/api/v4/projects/{id}/badges/{badge_id}": + get: + summary: Gets a badge of a project. + description: This feature was introduced in GitLab 10.6. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user. + type: string + required: true + - in: path + name: badge_id + description: The badge ID + type: integer + format: int32 + required: true + responses: + '200': + description: Gets a badge of a project. + schema: + "$ref": "#/definitions/API_Entities_Badge" + tags: + - badges + operationId: getApiV4ProjectsIdBadgesBadgeId + put: + summary: Updates a badge of a project. + description: This feature was introduced in GitLab 10.6. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user. + type: string + required: true + - in: path + name: badge_id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdBadgesBadgeId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdBadgesBadgeId" + responses: + '200': + description: Updates a badge of a project. + schema: + "$ref": "#/definitions/API_Entities_Badge" + tags: + - badges + operationId: putApiV4ProjectsIdBadgesBadgeId + delete: + summary: Removes a badge from the project. + description: This feature was introduced in GitLab 10.6. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user. + type: string + required: true + - in: path + name: badge_id + description: The badge ID + type: integer + format: int32 + required: true + responses: + '204': + description: Removes a badge from the project. + tags: + - badges + operationId: deleteApiV4ProjectsIdBadgesBadgeId + "/api/v4/projects/{id}/repository/branches": + get: + description: Get a project repository branches + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: search + description: Return list of branches matching the search criteria + type: string + required: false + - in: query + name: regex + description: Return list of branches matching the regex + type: string + required: false + - in: query + name: sort + description: Return list of branches sorted by the given field + type: string + enum: + - name_asc + - updated_asc + - updated_desc + required: false + - in: query + name: page_token + description: Name of branch to start the pagination from + type: string + required: false + responses: + '200': + description: Get a project repository branches + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Branch" + '404': + description: 404 Project Not Found + tags: + - branches + operationId: getApiV4ProjectsIdRepositoryBranches + post: + description: Create branch + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdRepositoryBranches + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdRepositoryBranches" + responses: + '201': + description: Create branch + schema: + "$ref": "#/definitions/API_Entities_Branch" + '400': + description: Failed to create branch + tags: + - branches + operationId: postApiV4ProjectsIdRepositoryBranches + "/api/v4/projects/{id}/repository/branches/{branch}": + head: + description: Check if a branch exists + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: branch + description: The name of the branch + type: string + required: true + responses: + '204': + description: No Content + '404': + description: Not Found + tags: + - branches + operationId: headApiV4ProjectsIdRepositoryBranchesBranch + get: + description: Get a single repository branch + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: branch + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single repository branch + schema: + "$ref": "#/definitions/API_Entities_Branch" + '404': + description: Branch Not Found + tags: + - branches + operationId: getApiV4ProjectsIdRepositoryBranchesBranch + delete: + description: Delete a branch + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: branch + description: The name of the branch + type: string + required: true + responses: + '204': + description: Delete a branch + '404': + description: Branch Not Found + tags: + - branches + operationId: deleteApiV4ProjectsIdRepositoryBranchesBranch + "/api/v4/projects/{id}/repository/branches/{branch}/protect": + put: + description: Protect a single branch + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: branch + description: The name of the branch + type: string + required: true + - name: putApiV4ProjectsIdRepositoryBranchesBranchProtect + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdRepositoryBranchesBranchProtect" + responses: + '200': + description: Protect a single branch + schema: + "$ref": "#/definitions/API_Entities_Branch" + '404': + description: 404 Branch Not Found + tags: + - branches + operationId: putApiV4ProjectsIdRepositoryBranchesBranchProtect + "/api/v4/projects/{id}/repository/branches/{branch}/unprotect": + put: + description: Unprotect a single branch + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: branch + description: The name of the branch + type: string + required: true + responses: + '200': + description: Unprotect a single branch + schema: + "$ref": "#/definitions/API_Entities_Branch" + '404': + description: 404 Project Not Found + tags: + - branches + operationId: putApiV4ProjectsIdRepositoryBranchesBranchUnprotect + "/api/v4/projects/{id}/repository/merged_branches": + delete: + description: Delete all merged branches + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '202': + description: 202 Accepted + '404': + description: 404 Project Not Found + tags: + - branches + operationId: deleteApiV4ProjectsIdRepositoryMergedBranches + "/api/v4/projects/{id}/catalog/publish": + post: + summary: Publish a new component project release as version to the CI/CD catalog + description: Publishes a release of a catalog resource as version to the CI/CD + catalog. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdCatalogPublish + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdCatalogPublish" + responses: + '201': + description: Publish a new component project release as version to the CI/CD + catalog + schema: + "$ref": "#/definitions/API_Entities_Ci_Catalog_Resources_Version" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - projects + operationId: postApiV4ProjectsIdCatalogPublish + "/api/v4/projects/{id}/jobs/artifacts/{ref_name}/download": + get: + summary: Download the artifacts archive from a job + description: This feature was introduced in GitLab 8.10 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: ref_name + description: Branch or tag name in repository. `HEAD` or `SHA` references + are not supported. + type: string + required: true + - in: query + name: job + description: The name of the job. + type: string + required: true + - in: query + name: job_token + description: To be used with triggers for multi-project pipelines, available + only on Premium and Ultimate tiers. + type: string + required: false + responses: + '200': + description: Download the artifacts archive from a job + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdJobsArtifactsRefNameDownload + "/api/v4/projects/{id}/jobs/artifacts/{ref_name}/raw/*artifact_path": + get: + summary: Download a specific file from artifacts archive from a ref + description: This feature was introduced in GitLab 11.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: ref_name + description: Branch or tag name in repository. `HEAD` or `SHA` references + are not supported. + type: string + required: true + - in: query + name: job + description: The name of the job. + type: string + required: true + - in: query + name: artifact_path + description: Path to a file inside the artifacts archive. + type: string + required: true + - in: query + name: job_token + description: To be used with triggers for multi-project pipelines, available + only on Premium and Ultimate tiers. + type: string + required: false + responses: + '200': + description: Download a specific file from artifacts archive from a ref + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdJobsArtifactsRefNameRaw*artifactPath + "/api/v4/projects/{id}/jobs/{job_id}/artifacts": + get: + summary: Download the artifacts archive from a job + description: This feature was introduced in GitLab 8.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: job_id + description: The ID of a job + type: integer + format: int32 + required: true + - in: query + name: job_token + description: To be used with triggers for multi-project pipelines, available + only on Premium and Ultimate tiers. + type: string + required: false + responses: + '200': + description: Download the artifacts archive from a job + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdJobsJobIdArtifacts + delete: + summary: Delete the artifacts files from a job + description: This feature was introduced in GitLab 11.9 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: job_id + description: The ID of a job + type: integer + format: int32 + required: true + responses: + '204': + description: Delete the artifacts files from a job + '401': + description: Unauthorized + '403': + description: Forbidden + '409': + description: Conflict + tags: + - projects + operationId: deleteApiV4ProjectsIdJobsJobIdArtifacts + "/api/v4/projects/{id}/jobs/{job_id}/artifacts/*artifact_path": + get: + summary: Download a specific file from artifacts archive + description: This feature was introduced in GitLab 10.0 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: job_id + description: The ID of a job + type: integer + format: int32 + required: true + - in: query + name: artifact_path + description: Path to a file inside the artifacts archive. + type: string + required: true + - in: query + name: job_token + description: To be used with triggers for multi-project pipelines, available + only on Premium and Ultimate tiers. + type: string + required: false + responses: + '200': + description: Download a specific file from artifacts archive + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdJobsJobIdArtifacts*artifactPath + "/api/v4/projects/{id}/jobs/{job_id}/artifacts/keep": + post: + description: Keep the artifacts to prevent them from being deleted + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: job_id + description: The ID of a job + type: integer + format: int32 + required: true + responses: + '201': + description: Keep the artifacts to prevent them from being deleted + schema: + "$ref": "#/definitions/API_Entities_Ci_Job" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdJobsJobIdArtifactsKeep + "/api/v4/projects/{id}/artifacts": + delete: + description: Expire the artifacts files from a project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '202': + description: Expire the artifacts files from a project + '401': + description: Unauthorized + '403': + description: Forbidden + '409': + description: Conflict + tags: + - projects + operationId: deleteApiV4ProjectsIdArtifacts + "/api/v4/projects/{id}/jobs": + get: + description: Get a projects jobs + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: scope + description: The scope of builds to show + type: array + items: + type: string + enum: + - created + - waiting_for_resource + - preparing + - waiting_for_callback + - pending + - running + - success + - failed + - canceling + - canceled + - skipped + - manual + - scheduled + required: false + example: + - pending + - running + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get a projects jobs + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Ci_Job" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdJobs + "/api/v4/projects/{id}/jobs/{job_id}": + get: + description: Get a specific job of a project + produces: + - application/json + parameters: + - in: path + name: job_id + description: The ID of a job + type: integer + format: int32 + required: true + example: 88 + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a specific job of a project + schema: + "$ref": "#/definitions/API_Entities_Ci_Job" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdJobsJobId + "/api/v4/projects/{id}/jobs/{job_id}/trace": + get: + description: Get a trace of a specific job of a project + produces: + - application/json + parameters: + - in: path + name: job_id + description: The ID of a job + type: integer + format: int32 + required: true + example: 88 + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a trace of a specific job of a project + schema: + "$ref": "#/definitions/API_Entities_Ci_Job" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdJobsJobIdTrace + "/api/v4/projects/{id}/jobs/{job_id}/cancel": + post: + description: Cancel a specific job of a project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: job_id + description: The ID of a job + type: integer + format: int32 + required: true + example: 88 + - in: path + name: id + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdJobsJobIdCancel + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdJobsJobIdCancel" + responses: + '201': + description: Cancel a specific job of a project + schema: + "$ref": "#/definitions/API_Entities_Ci_Job" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdJobsJobIdCancel + "/api/v4/projects/{id}/jobs/{job_id}/retry": + post: + description: Retry a specific job of a project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: job_id + description: The ID of a job + type: integer + format: int32 + required: true + example: 88 + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '201': + description: Retry a specific job of a project + schema: + "$ref": "#/definitions/API_Entities_Ci_Job" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdJobsJobIdRetry + "/api/v4/projects/{id}/jobs/{job_id}/erase": + post: + description: Erase job (remove artifacts and the trace) + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: job_id + description: The ID of a build + type: integer + format: int32 + required: true + example: 88 + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '201': + description: Erase job (remove artifacts and the trace) + schema: + "$ref": "#/definitions/API_Entities_Ci_Job" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '409': + description: Conflict + tags: + - projects + operationId: postApiV4ProjectsIdJobsJobIdErase + "/api/v4/projects/{id}/jobs/{job_id}/play": + post: + summary: Trigger an actionable job (manual, delayed, etc) + description: This feature was added in GitLab 8.11 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: job_id + description: The ID of a Job + type: integer + format: int32 + required: true + example: 88 + - in: path + name: id + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdJobsJobIdPlay + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdJobsJobIdPlay" + responses: + '200': + description: Trigger an actionable job (manual, delayed, etc) + schema: + "$ref": "#/definitions/API_Entities_Ci_JobBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdJobsJobIdPlay + "/api/v4/projects/{id}/resource_groups": + get: + description: Get all resource groups for a project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get all resource groups for a project + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Ci_ResourceGroup" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - ci_resource_groups + operationId: getApiV4ProjectsIdResourceGroups + "/api/v4/projects/{id}/resource_groups/{key}": + get: + description: Get a specific resource group + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: key + description: The key of the resource group + type: string + required: true + responses: + '200': + description: Get a specific resource group + schema: + "$ref": "#/definitions/API_Entities_Ci_ResourceGroup" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - ci_resource_groups + operationId: getApiV4ProjectsIdResourceGroupsKey + put: + summary: Edit an existing resource group + description: Updates an existing resource group's properties. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: key + description: The key of the resource group + type: string + required: true + - name: putApiV4ProjectsIdResourceGroupsKey + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdResourceGroupsKey" + responses: + '200': + description: Edit an existing resource group + schema: + "$ref": "#/definitions/API_Entities_Ci_ResourceGroup" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - ci_resource_groups + operationId: putApiV4ProjectsIdResourceGroupsKey + "/api/v4/projects/{id}/resource_groups/{key}/upcoming_jobs": + get: + description: List upcoming jobs for a specific resource group + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: key + description: The key of the resource group + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List upcoming jobs for a specific resource group + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Ci_JobBasic" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - ci_resource_groups + operationId: getApiV4ProjectsIdResourceGroupsKeyUpcomingJobs + "/api/v4/projects/{id}/runners": + get: + summary: List project's runners + description: List all runners available in the project, including from ancestor + groups and any allowed shared runners. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: query + name: scope + description: 'Deprecated: Use `type` or `status` instead. The scope of runners + to return' + type: string + enum: + - specific + - shared + - instance_type + - group_type + - project_type + - active + - paused + - online + - offline + - never_contacted + - stale + required: false + - in: query + name: type + description: The type of runners to return + type: string + enum: + - instance_type + - group_type + - project_type + required: false + - in: query + name: paused + description: Whether to include only runners that are accepting or ignoring + new jobs + type: boolean + required: false + - in: query + name: status + description: The status of runners to return + type: string + enum: + - active + - paused + - online + - offline + - never_contacted + - stale + required: false + - in: query + name: tag_list + description: A list of runner tags + type: array + items: + type: string + required: false + example: "['macos', 'shell']" + - in: query + name: version_prefix + description: The version prefix of runners to return + type: string + required: false + example: "'15.1.' or '16.'" + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get runners available for project + schema: + "$ref": "#/definitions/API_Entities_Ci_Runner" + '400': + description: Scope contains invalid value + '403': + description: No access granted + tags: + - runners + - projects + operationId: getApiV4ProjectsIdRunners + post: + summary: Assign a runner to project + description: Assign an available project runner to the project. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - name: postApiV4ProjectsIdRunners + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdRunners" + responses: + '201': + description: Assign a runner to project + schema: + "$ref": "#/definitions/API_Entities_Ci_Runner" + '400': + description: Bad Request + '403': + description: No access granted + '404': + description: Runner not found + tags: + - runners + - projects + operationId: postApiV4ProjectsIdRunners + "/api/v4/projects/{id}/runners/{runner_id}": + delete: + summary: Unassign a project runner from the project + description: It is not possible to unassign a runner from the owner project. + If so, an error is returned. Use the call to delete a runner instead. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: runner_id + description: The ID of a runner + type: integer + format: int32 + required: true + responses: + '400': + description: Bad Request + '204': + description: Unassign a runner from project + schema: + "$ref": "#/definitions/API_Entities_Ci_Runner" + '403': + description: You cannot unassign a runner from the owner project. Delete + the runner instead + '404': + description: Runner not found + '412': + description: Precondition Failed + tags: + - runners + - projects + operationId: deleteApiV4ProjectsIdRunnersRunnerId + "/api/v4/projects/{id}/runners/reset_registration_token": + post: + summary: Reset the runner registration token for a project + description: Reset runner registration token + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a project + type: string + required: true + responses: + '201': + description: Reset runner registration token + schema: + "$ref": "#/definitions/API_Entities_Ci_ResetTokenResult" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Project Not Found + tags: + - runners + - projects + operationId: postApiV4ProjectsIdRunnersResetRegistrationToken + "/api/v4/projects/{id}/secure_files": + get: + description: Get list of secure files in a project + produces: + - application/json + parameters: + - in: path + name: id + description: |- + The ID or URL-encoded path of the project owned by the + authenticated user + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get list of secure files in a project + schema: + "$ref": "#/definitions/API_Entities_Ci_SecureFile" + tags: + - secure_files + operationId: getApiV4ProjectsIdSecureFiles + post: + description: Create a secure file + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: |- + The ID or URL-encoded path of the project owned by the + authenticated user + type: string + required: true + - name: postApiV4ProjectsIdSecureFiles + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdSecureFiles" + responses: + '201': + description: Create a secure file + schema: + "$ref": "#/definitions/API_Entities_Ci_SecureFile" + '400': + description: 400 Bad Request + tags: + - secure_files + operationId: postApiV4ProjectsIdSecureFiles + "/api/v4/projects/{id}/secure_files/{secure_file_id}": + get: + description: Get the details of a specific secure file in a project + produces: + - application/json + parameters: + - in: path + name: id + description: |- + The ID or URL-encoded path of the project owned by the + authenticated user + type: string + required: true + - in: path + name: secure_file_id + description: The ID of a secure file + type: integer + format: int32 + required: true + responses: + '200': + description: Get the details of a specific secure file in a project + schema: + "$ref": "#/definitions/API_Entities_Ci_SecureFile" + '404': + description: 404 Not found + tags: + - secure_files + operationId: getApiV4ProjectsIdSecureFilesSecureFileId + delete: + description: Remove a secure file + produces: + - application/json + parameters: + - in: path + name: id + description: |- + The ID or URL-encoded path of the project owned by the + authenticated user + type: string + required: true + - in: path + name: secure_file_id + type: integer + format: int32 + required: true + responses: + '204': + description: Remove a secure file + '404': + description: 404 Not found + tags: + - secure_files + operationId: deleteApiV4ProjectsIdSecureFilesSecureFileId + "/api/v4/projects/{id}/secure_files/{secure_file_id}/download": + get: + description: Download secure file + produces: + - application/json + parameters: + - in: path + name: id + description: |- + The ID or URL-encoded path of the project owned by the + authenticated user + type: string + required: true + - in: path + name: secure_file_id + description: The ID of a secure file + type: integer + format: int32 + required: true + responses: + '200': + description: Download secure file + '404': + description: 404 Not found + tags: + - secure_files + operationId: getApiV4ProjectsIdSecureFilesSecureFileIdDownload + "/api/v4/projects/{id}/pipelines": + get: + summary: Get all Pipelines of the project + description: This feature was introduced in GitLab 8.11. + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID or URL-encoded path + type: string + required: true + example: 11 + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: scope + description: The scope of pipelines + type: string + enum: + - running + - pending + - finished + - branches + - tags + required: false + example: pending + - in: query + name: status + description: The status of pipelines + type: string + enum: + - created + - waiting_for_resource + - preparing + - waiting_for_callback + - pending + - running + - success + - failed + - canceling + - canceled + - skipped + - manual + - scheduled + required: false + example: pending + - in: query + name: ref + description: The ref of pipelines + type: string + required: false + example: develop + - in: query + name: sha + description: The sha of pipelines + type: string + required: false + example: a91957a858320c0e17f3a0eca7cfacbff50ea29a + - in: query + name: yaml_errors + description: Returns pipelines with invalid configurations + type: boolean + required: false + - in: query + name: username + description: The username of the user who triggered pipelines + type: string + required: false + example: root + - in: query + name: updated_before + description: 'Return pipelines updated before the specified datetime. Format: + ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + example: '2015-12-24T15:51:21.880Z' + - in: query + name: updated_after + description: 'Return pipelines updated after the specified datetime. Format: + ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + example: '2015-12-24T15:51:21.880Z' + - in: query + name: created_before + description: 'Return pipelines created before the specified datetime. Format: + ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + example: '2015-12-24T15:51:21.880Z' + - in: query + name: created_after + description: 'Return pipelines created after the specified datetime. Format: + ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + example: '2015-12-24T15:51:21.880Z' + - in: query + name: order_by + description: Order pipelines + type: string + default: id + enum: + - id + - status + - ref + - updated_at + - user_id + required: false + example: status + - in: query + name: sort + description: Sort pipelines + type: string + default: desc + enum: + - asc + - desc + required: false + example: asc + - in: query + name: source + type: string + enum: + - unknown + - push + - web + - trigger + - schedule + - api + - external + - pipeline + - chat + - webide + - merge_request_event + - external_pull_request_event + - parent_pipeline + - ondemand_dast_scan + - ondemand_dast_validation + - security_orchestration_policy + - container_registry_push + - duo_workflow + - pipeline_execution_policy_schedule + required: false + example: push + - in: query + name: name + description: Filter pipelines by name + type: string + required: false + example: Build pipeline + responses: + '200': + description: Get all Pipelines of the project + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Ci_PipelineBasic" + '401': + description: Unauthorized + '403': + description: Forbidden + tags: + - projects + operationId: getApiV4ProjectsIdPipelines + "/api/v4/projects/{id}/pipeline": + post: + summary: Create a new pipeline + description: This feature was introduced in GitLab 8.14 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The project ID or URL-encoded path + type: string + required: true + example: 11 + - name: postApiV4ProjectsIdPipeline + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdPipeline" + responses: + '201': + description: Create a new pipeline + schema: + "$ref": "#/definitions/API_Entities_Ci_Pipeline" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdPipeline + "/api/v4/projects/{id}/pipelines/latest": + get: + summary: Gets the latest pipeline for the project branch + description: This feature was introduced in GitLab 12.3 + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID or URL-encoded path + type: string + required: true + example: 11 + - in: query + name: ref + description: Branch ref of pipeline. Uses project default branch if not specified. + type: string + required: false + example: develop + responses: + '200': + description: Gets the latest pipeline for the project branch + schema: + "$ref": "#/definitions/API_Entities_Ci_PipelineWithMetadata" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdPipelinesLatest + "/api/v4/projects/{id}/pipelines/{pipeline_id}": + get: + summary: Gets a specific pipeline for the project + description: This feature was introduced in GitLab 8.11 + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID or URL-encoded path + type: string + required: true + example: 11 + - in: path + name: pipeline_id + description: The pipeline ID + type: integer + format: int32 + required: true + example: 18 + responses: + '200': + description: Gets a specific pipeline for the project + schema: + "$ref": "#/definitions/API_Entities_Ci_PipelineWithMetadata" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdPipelinesPipelineId + delete: + summary: Deletes a pipeline + description: This feature was introduced in GitLab 11.6 + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID or URL-encoded path + type: string + required: true + example: 11 + - in: path + name: pipeline_id + description: The pipeline ID + type: integer + format: int32 + required: true + example: 18 + responses: + '204': + description: Pipeline was deleted + '403': + description: Forbidden + tags: + - projects + operationId: deleteApiV4ProjectsIdPipelinesPipelineId + "/api/v4/projects/{id}/pipelines/{pipeline_id}/jobs": + get: + description: Get pipeline jobs + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID or URL-encoded path + type: string + required: true + example: 11 + - in: path + name: pipeline_id + description: The pipeline ID + type: integer + format: int32 + required: true + example: 18 + - in: query + name: include_retried + description: Includes retried jobs + type: boolean + default: false + required: false + - in: query + name: scope + description: The scope of builds to show + type: string + enum: + - created + - waiting_for_resource + - preparing + - waiting_for_callback + - pending + - running + - success + - failed + - canceling + - canceled + - skipped + - manual + - scheduled + required: false + example: + - pending + - running + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get pipeline jobs + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Ci_Job" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdPipelinesPipelineIdJobs + "/api/v4/projects/{id}/pipelines/{pipeline_id}/bridges": + get: + description: Get pipeline bridge jobs + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID or URL-encoded path + type: string + required: true + example: 11 + - in: path + name: pipeline_id + description: The pipeline ID + type: integer + format: int32 + required: true + example: 18 + - in: query + name: scope + description: The scope of builds to show + type: string + enum: + - created + - waiting_for_resource + - preparing + - waiting_for_callback + - pending + - running + - success + - failed + - canceling + - canceled + - skipped + - manual + - scheduled + required: false + example: + - pending + - running + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get pipeline bridge jobs + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Ci_Bridge" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdPipelinesPipelineIdBridges + "/api/v4/projects/{id}/pipelines/{pipeline_id}/variables": + get: + summary: Gets the variables for a given pipeline + description: This feature was introduced in GitLab 11.11 + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID or URL-encoded path + type: string + required: true + example: 11 + - in: path + name: pipeline_id + description: The pipeline ID + type: integer + format: int32 + required: true + example: 18 + responses: + '200': + description: Gets the variables for a given pipeline + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Ci_Variable" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdPipelinesPipelineIdVariables + "/api/v4/projects/{id}/pipelines/{pipeline_id}/test_report": + get: + summary: Gets the test report for a given pipeline + description: This feature was introduced in GitLab 13.0. + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID or URL-encoded path + type: string + required: true + example: 11 + - in: path + name: pipeline_id + description: The pipeline ID + type: integer + format: int32 + required: true + example: 18 + responses: + '200': + description: Gets the test report for a given pipeline + schema: + "$ref": "#/definitions/TestReportEntity" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdPipelinesPipelineIdTestReport + "/api/v4/projects/{id}/pipelines/{pipeline_id}/test_report_summary": + get: + summary: Gets the test report summary for a given pipeline + description: This feature was introduced in GitLab 14.2 + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID or URL-encoded path + type: string + required: true + example: 11 + - in: path + name: pipeline_id + description: The pipeline ID + type: integer + format: int32 + required: true + example: 18 + responses: + '200': + description: Gets the test report summary for a given pipeline + schema: + "$ref": "#/definitions/TestReportSummaryEntity" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdPipelinesPipelineIdTestReportSummary + "/api/v4/projects/{id}/pipelines/{pipeline_id}/metadata": + put: + summary: Updates pipeline metadata + description: This feature was introduced in GitLab 16.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The project ID or URL-encoded path + type: string + required: true + example: 11 + - in: path + name: pipeline_id + description: The pipeline ID + type: integer + format: int32 + required: true + example: 18 + - name: putApiV4ProjectsIdPipelinesPipelineIdMetadata + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPipelinesPipelineIdMetadata" + responses: + '200': + description: Updates pipeline metadata + schema: + "$ref": "#/definitions/API_Entities_Ci_PipelineWithMetadata" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: putApiV4ProjectsIdPipelinesPipelineIdMetadata + "/api/v4/projects/{id}/pipelines/{pipeline_id}/retry": + post: + summary: Retry builds in the pipeline + description: This feature was introduced in GitLab 8.11. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The project ID or URL-encoded path + type: string + required: true + example: 11 + - in: path + name: pipeline_id + description: The pipeline ID + type: integer + format: int32 + required: true + example: 18 + responses: + '201': + description: Retry builds in the pipeline + schema: + "$ref": "#/definitions/API_Entities_Ci_Pipeline" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdPipelinesPipelineIdRetry + "/api/v4/projects/{id}/pipelines/{pipeline_id}/cancel": + post: + summary: Cancel all builds in the pipeline + description: This feature was introduced in GitLab 8.11. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The project ID or URL-encoded path + type: string + required: true + example: 11 + - in: path + name: pipeline_id + description: The pipeline ID + type: integer + format: int32 + required: true + example: 18 + responses: + '201': + description: Cancel all builds in the pipeline + schema: + "$ref": "#/definitions/API_Entities_Ci_Pipeline" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdPipelinesPipelineIdCancel + "/api/v4/projects/{id}/pipeline_schedules": + get: + description: Get all pipeline schedules + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: scope + description: The scope of pipeline schedules + type: string + enum: + - active + - inactive + required: false + example: active + responses: + '200': + description: Get all pipeline schedules + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Ci_PipelineSchedule" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdPipelineSchedules + post: + description: Create a new pipeline schedule + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - name: postApiV4ProjectsIdPipelineSchedules + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdPipelineSchedules" + responses: + '201': + description: Create a new pipeline schedule + schema: + "$ref": "#/definitions/API_Entities_Ci_PipelineScheduleDetails" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdPipelineSchedules + "/api/v4/projects/{id}/pipeline_schedules/{pipeline_schedule_id}": + get: + description: Get a single pipeline schedule + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - in: path + name: pipeline_schedule_id + description: The pipeline schedule id + type: integer + format: int32 + required: true + example: 13 + responses: + '200': + description: Get a single pipeline schedule + schema: + "$ref": "#/definitions/API_Entities_Ci_PipelineScheduleDetails" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdPipelineSchedulesPipelineScheduleId + put: + description: Edit a pipeline schedule + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - in: path + name: pipeline_schedule_id + description: The pipeline schedule id + type: integer + format: int32 + required: true + example: 13 + - name: putApiV4ProjectsIdPipelineSchedulesPipelineScheduleId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPipelineSchedulesPipelineScheduleId" + responses: + '200': + description: Edit a pipeline schedule + schema: + "$ref": "#/definitions/API_Entities_Ci_PipelineScheduleDetails" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: putApiV4ProjectsIdPipelineSchedulesPipelineScheduleId + delete: + description: Delete a pipeline schedule + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - in: path + name: pipeline_schedule_id + description: The pipeline schedule id + type: integer + format: int32 + required: true + example: 13 + responses: + '204': + description: Delete a pipeline schedule + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '412': + description: Precondition Failed + tags: + - projects + operationId: deleteApiV4ProjectsIdPipelineSchedulesPipelineScheduleId + "/api/v4/projects/{id}/pipeline_schedules/{pipeline_schedule_id}/pipelines": + get: + description: Get all pipelines triggered from a pipeline schedule + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - in: path + name: pipeline_schedule_id + description: The pipeline schedule ID + type: integer + format: int32 + required: true + example: 13 + responses: + '200': + description: Get all pipelines triggered from a pipeline schedule + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Ci_PipelineBasic" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdPipelineSchedulesPipelineScheduleIdPipelines + "/api/v4/projects/{id}/pipeline_schedules/{pipeline_schedule_id}/take_ownership": + post: + description: Take ownership of a pipeline schedule + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - in: path + name: pipeline_schedule_id + description: The pipeline schedule id + type: integer + format: int32 + required: true + example: 13 + responses: + '201': + description: Take ownership of a pipeline schedule + schema: + "$ref": "#/definitions/API_Entities_Ci_PipelineScheduleDetails" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdPipelineSchedulesPipelineScheduleIdTakeOwnership + "/api/v4/projects/{id}/pipeline_schedules/{pipeline_schedule_id}/play": + post: + summary: Play a scheduled pipeline immediately + description: This feature was added in GitLab 12.8 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - in: path + name: pipeline_schedule_id + description: The pipeline schedule id + type: integer + format: int32 + required: true + example: 13 + responses: + '201': + description: Play a scheduled pipeline immediately + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdPipelineSchedulesPipelineScheduleIdPlay + "/api/v4/projects/{id}/pipeline_schedules/{pipeline_schedule_id}/variables": + post: + description: Create a new pipeline schedule variable + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - in: path + name: pipeline_schedule_id + description: The pipeline schedule id + type: integer + format: int32 + required: true + example: 13 + - name: postApiV4ProjectsIdPipelineSchedulesPipelineScheduleIdVariables + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdPipelineSchedulesPipelineScheduleIdVariables" + responses: + '201': + description: Create a new pipeline schedule variable + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdPipelineSchedulesPipelineScheduleIdVariables + "/api/v4/projects/{id}/pipeline_schedules/{pipeline_schedule_id}/variables/{key}": + put: + description: Edit a pipeline schedule variable + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - in: path + name: pipeline_schedule_id + description: The pipeline schedule id + type: integer + format: int32 + required: true + example: 13 + - in: path + name: key + description: The key of the variable + type: string + required: true + example: NEW_VARIABLE + - name: putApiV4ProjectsIdPipelineSchedulesPipelineScheduleIdVariablesKey + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPipelineSchedulesPipelineScheduleIdVariablesKey" + responses: + '200': + description: Edit a pipeline schedule variable + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: putApiV4ProjectsIdPipelineSchedulesPipelineScheduleIdVariablesKey + delete: + description: Delete a pipeline schedule variable + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - in: path + name: pipeline_schedule_id + description: The pipeline schedule id + type: integer + format: int32 + required: true + example: 13 + - in: path + name: key + description: The key of the variable + type: string + required: true + example: NEW_VARIABLE + responses: + '202': + description: Delete a pipeline schedule variable + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: deleteApiV4ProjectsIdPipelineSchedulesPipelineScheduleIdVariablesKey + "/api/v4/projects/{id}/(ref/{ref}/)trigger/pipeline": + post: + description: Trigger a GitLab project pipeline + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - in: path + name: ref + description: The commit sha or name of a branch or tag + type: string + required: true + example: develop + - name: postApiV4ProjectsId(refRef)triggerPipeline + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsId(refRef)triggerPipeline" + responses: + '201': + description: Trigger a GitLab project pipeline + schema: + "$ref": "#/definitions/API_Entities_Ci_Pipeline" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsId(refRef)triggerPipeline + "/api/v4/projects/{id}/triggers": + get: + description: Get trigger tokens list + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get trigger tokens list + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Trigger" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdTriggers + post: + description: Create a trigger token + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - name: postApiV4ProjectsIdTriggers + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdTriggers" + responses: + '201': + description: Create a trigger token + schema: + "$ref": "#/definitions/API_Entities_Trigger" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdTriggers + "/api/v4/projects/{id}/triggers/{trigger_id}": + get: + description: Get specific trigger token of a project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - in: path + name: trigger_id + description: The trigger token ID + type: integer + format: int32 + required: true + example: 10 + responses: + '200': + description: Get specific trigger token of a project + schema: + "$ref": "#/definitions/API_Entities_Trigger" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdTriggersTriggerId + put: + description: Update a trigger token + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - in: path + name: trigger_id + description: The trigger token ID + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdTriggersTriggerId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdTriggersTriggerId" + responses: + '200': + description: Update a trigger token + schema: + "$ref": "#/definitions/API_Entities_Trigger" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: putApiV4ProjectsIdTriggersTriggerId + delete: + description: Delete a trigger token + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 18 + - in: path + name: trigger_id + description: The trigger token ID + type: integer + format: int32 + required: true + example: 10 + responses: + '204': + description: Delete a trigger token + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '412': + description: Precondition Failed + tags: + - projects + operationId: deleteApiV4ProjectsIdTriggersTriggerId + "/api/v4/projects/{id}/variables": + get: + description: Get project variables + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a project or URL-encoded NAMESPACE/PROJECT_NAME of + the project owned by the authenticated user + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get project variables + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + tags: + - ci_variables + operationId: getApiV4ProjectsIdVariables + post: + description: Create a new variable in a project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a project or URL-encoded NAMESPACE/PROJECT_NAME of + the project owned by the authenticated user + type: string + required: true + - name: postApiV4ProjectsIdVariables + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdVariables" + responses: + '201': + description: Create a new variable in a project + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + '400': + description: 400 Bad Request + tags: + - ci_variables + operationId: postApiV4ProjectsIdVariables + "/api/v4/projects/{id}/variables/{key}": + get: + description: Get the details of a single variable from a project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a project or URL-encoded NAMESPACE/PROJECT_NAME of + the project owned by the authenticated user + type: string + required: true + - in: path + name: key + description: The key of a variable + type: string + required: true + - in: query + name: filter[environment_scope] + description: The environment scope of a variable + type: string + required: false + responses: + '200': + description: Get the details of a single variable from a project + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + '404': + description: Variable Not Found + tags: + - ci_variables + operationId: getApiV4ProjectsIdVariablesKey + put: + description: Update an existing variable from a project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a project or URL-encoded NAMESPACE/PROJECT_NAME of + the project owned by the authenticated user + type: string + required: true + - in: path + name: key + description: The key of a variable + type: string + required: true + - name: putApiV4ProjectsIdVariablesKey + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdVariablesKey" + responses: + '200': + description: Update an existing variable from a project + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + '404': + description: Variable Not Found + tags: + - ci_variables + operationId: putApiV4ProjectsIdVariablesKey + delete: + description: Delete an existing variable from a project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a project or URL-encoded NAMESPACE/PROJECT_NAME of + the project owned by the authenticated user + type: string + required: true + - in: path + name: key + description: The key of a variable + type: string + required: true + - in: query + name: filter[environment_scope] + description: The environment scope of the variable + type: string + required: false + responses: + '404': + description: Variable Not Found + '204': + description: Delete an existing variable from a project + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + tags: + - ci_variables + operationId: deleteApiV4ProjectsIdVariablesKey + "/api/v4/projects/{id}/cluster_agents/{agent_id}/tokens": + get: + summary: List tokens for an agent + description: This feature was introduced in GitLab 15.0. Returns a list of tokens + for an agent. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: agent_id + description: The ID of an agent + type: integer + format: int32 + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List tokens for an agent + schema: + "$ref": "#/definitions/API_Entities_Clusters_AgentTokenBasic" + tags: + - cluster_agents + operationId: getApiV4ProjectsIdClusterAgentsAgentIdTokens + post: + summary: Create an agent token + description: This feature was introduced in GitLab 15.0. Creates a new token + for an agent. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: agent_id + description: The ID of an agent + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdClusterAgentsAgentIdTokens + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdClusterAgentsAgentIdTokens" + responses: + '201': + description: Create an agent token + schema: + "$ref": "#/definitions/API_Entities_Clusters_AgentTokenWithToken" + tags: + - cluster_agents + operationId: postApiV4ProjectsIdClusterAgentsAgentIdTokens + "/api/v4/projects/{id}/cluster_agents/{agent_id}/tokens/{token_id}": + get: + summary: Get a single agent token + description: This feature was introduced in GitLab 15.0. Gets a single agent + token. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: agent_id + description: The ID of an agent + type: integer + format: int32 + required: true + - in: path + name: token_id + description: The ID of the agent token + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single agent token + schema: + "$ref": "#/definitions/API_Entities_Clusters_AgentToken" + tags: + - cluster_agents + operationId: getApiV4ProjectsIdClusterAgentsAgentIdTokensTokenId + delete: + summary: Revoke an agent token + description: This feature was introduced in GitLab 15.0. Revokes an agent token. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: agent_id + description: The ID of an agent + type: integer + format: int32 + required: true + - in: path + name: token_id + description: The ID of the agent token + type: integer + format: int32 + required: true + responses: + '204': + description: Revoke an agent token + tags: + - cluster_agents + operationId: deleteApiV4ProjectsIdClusterAgentsAgentIdTokensTokenId + "/api/v4/projects/{id}/cluster_agents": + get: + summary: List the agents for a project + description: This feature was introduced in GitLab 14.10. Returns the list of + agents registered for the project. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List the agents for a project + schema: + "$ref": "#/definitions/API_Entities_Clusters_Agent" + tags: + - cluster_agents + operationId: getApiV4ProjectsIdClusterAgents + post: + summary: Register an agent with a project + description: This feature was introduced in GitLab 14.10. Registers an agent + to the project. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdClusterAgents + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdClusterAgents" + responses: + '201': + description: Register an agent with a project + schema: + "$ref": "#/definitions/API_Entities_Clusters_Agent" + tags: + - cluster_agents + operationId: postApiV4ProjectsIdClusterAgents + "/api/v4/projects/{id}/cluster_agents/{agent_id}": + get: + summary: Get details about an agent + description: This feature was introduced in GitLab 14.10. Gets a single agent + details. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: agent_id + description: The ID of an agent + type: integer + format: int32 + required: true + responses: + '200': + description: Get details about an agent + schema: + "$ref": "#/definitions/API_Entities_Clusters_Agent" + tags: + - cluster_agents + operationId: getApiV4ProjectsIdClusterAgentsAgentId + delete: + summary: Delete a registered agent + description: This feature was introduced in GitLab 14.10. Deletes an existing + agent registration. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: agent_id + description: The ID of an agent + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a registered agent + tags: + - cluster_agents + operationId: deleteApiV4ProjectsIdClusterAgentsAgentId + "/api/v4/projects/{id}/packages/cargo/config.json": + get: + summary: Get config.json + description: This will be used by cargo for further requests + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Get config.json + '401': + description: Unauthorized + '403': + description: Forbidden + tags: + - cargo_packages + operationId: getApiV4ProjectsIdPackagesCargoConfigJson + "/api/v4/projects/{id}/repository/commits": + get: + description: Get a project repository commits + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: ref_name + description: The name of a repository branch or tag, if not given the default + branch is used + type: string + required: false + example: v1.1.0 + - in: query + name: since + description: Only commits after or on this date will be returned + type: string + format: date-time + required: false + example: '2021-09-20T11:50:22.001' + - in: query + name: until + description: Only commits before or on this date will be returned + type: string + format: date-time + required: false + example: '2021-09-20T11:50:22.001' + - in: query + name: path + description: The file path + type: string + required: false + example: README.md + - in: query + name: author + description: Search commits by commit author + type: string + required: false + example: John Smith + - in: query + name: all + description: Every commit will be returned + type: boolean + required: false + - in: query + name: with_stats + description: Stats about each commit will be added to the response + type: boolean + required: false + - in: query + name: first_parent + description: Only include the first parent of merges + type: boolean + required: false + - in: query + name: order + description: List commits in order + type: string + default: default + enum: + - default + - topo + required: false + - in: query + name: trailers + description: Parse and include Git trailers for every commit + type: boolean + default: false + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get a project repository commits + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Commit" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - commits + operationId: getApiV4ProjectsIdRepositoryCommits + post: + summary: Commit multiple file changes as one commit + description: This feature was introduced in GitLab 8.13 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdRepositoryCommits + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdRepositoryCommits" + responses: + '200': + description: Commit multiple file changes as one commit + schema: + "$ref": "#/definitions/API_Entities_CommitDetail" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - commits + operationId: postApiV4ProjectsIdRepositoryCommits + "/api/v4/projects/{id}/repository/commits/{sha}": + get: + description: Get a specific commit of a project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: sha + description: A commit sha, or the name of a branch or tag + type: string + required: true + - in: query + name: stats + description: Include commit stats + type: boolean + default: true + required: false + responses: + '200': + description: Get a specific commit of a project + schema: + "$ref": "#/definitions/API_Entities_CommitDetail" + '404': + description: Not found + tags: + - commits + operationId: getApiV4ProjectsIdRepositoryCommitsSha + "/api/v4/projects/{id}/repository/commits/{sha}/diff": + get: + description: Get the diff for a specific commit of a project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: sha + description: A commit sha, or the name of a branch or tag + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: unidiff + description: A diff in a Unified diff format + type: boolean + default: false + required: false + responses: + '200': + description: Get the diff for a specific commit of a project + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Diff" + '404': + description: Not found + tags: + - commits + operationId: getApiV4ProjectsIdRepositoryCommitsShaDiff + "/api/v4/projects/{id}/repository/commits/{sha}/comments": + get: + description: Get a commit's comments + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: sha + description: A commit sha, or the name of a branch or tag + type: string + required: true + responses: + '200': + description: Get a commit's comments + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_CommitNote" + '404': + description: Not found + tags: + - commits + operationId: getApiV4ProjectsIdRepositoryCommitsShaComments + post: + description: Post comment to commit + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: sha + description: A commit sha, or the name of a branch or tag on which to post + a comment + type: string + required: true + - name: postApiV4ProjectsIdRepositoryCommitsShaComments + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdRepositoryCommitsShaComments" + responses: + '200': + description: Post comment to commit + schema: + "$ref": "#/definitions/API_Entities_CommitNote" + '400': + description: Bad request + '404': + description: Not found + tags: + - commits + operationId: postApiV4ProjectsIdRepositoryCommitsShaComments + "/api/v4/projects/{id}/repository/commits/{sha}/sequence": + get: + description: Get the sequence count of a commit SHA + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: sha + description: A commit SHA + type: string + required: true + - in: query + name: first_parent + description: Only include the first parent of merges + type: boolean + default: false + required: false + responses: + '200': + description: Get the sequence count of a commit SHA + schema: + "$ref": "#/definitions/API_Entities_CommitSequence" + '404': + description: Not found + tags: + - commits + operationId: getApiV4ProjectsIdRepositoryCommitsShaSequence + "/api/v4/projects/{id}/repository/commits/{sha}/cherry_pick": + post: + summary: Cherry pick commit into a branch + description: This feature was introduced in GitLab 8.15 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: sha + description: A commit sha, or the name of a branch or tag to be cherry-picked + type: string + required: true + - name: postApiV4ProjectsIdRepositoryCommitsShaCherryPick + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdRepositoryCommitsShaCherryPick" + responses: + '200': + description: Cherry pick commit into a branch + schema: + "$ref": "#/definitions/API_Entities_Commit" + '400': + description: Bad request + '404': + description: Not found + tags: + - commits + operationId: postApiV4ProjectsIdRepositoryCommitsShaCherryPick + "/api/v4/projects/{id}/repository/commits/{sha}/revert": + post: + summary: Revert a commit in a branch + description: This feature was introduced in GitLab 11.5 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: sha + description: Commit SHA to revert + type: string + required: true + - name: postApiV4ProjectsIdRepositoryCommitsShaRevert + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdRepositoryCommitsShaRevert" + responses: + '200': + description: Revert a commit in a branch + schema: + "$ref": "#/definitions/API_Entities_Commit" + '400': + description: Bad request + '404': + description: Not found + tags: + - commits + operationId: postApiV4ProjectsIdRepositoryCommitsShaRevert + "/api/v4/projects/{id}/repository/commits/{sha}/refs": + get: + summary: Get all references a commit is pushed to + description: This feature was introduced in GitLab 10.6 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: sha + description: A commit sha + type: string + required: true + - in: query + name: type + description: Scope + type: string + default: all + enum: + - branch + - tag + - all + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get all references a commit is pushed to + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_BasicRef" + '404': + description: Not found + tags: + - commits + operationId: getApiV4ProjectsIdRepositoryCommitsShaRefs + "/api/v4/projects/{id}/repository/commits/{sha}/merge_requests": + get: + description: Get Merge Requests associated with a commit + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: sha + description: A commit sha, or the name of a branch or tag on which to find + Merge Requests + type: string + required: true + - in: query + name: state + description: Filter merge-requests by state + type: string + required: false + example: merged + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get Merge Requests associated with a commit + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_MergeRequestBasic" + '404': + description: Not found + tags: + - commits + operationId: getApiV4ProjectsIdRepositoryCommitsShaMergeRequests + "/api/v4/projects/{id}/repository/commits/{sha}/signature": + get: + description: Get a commit's signature + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: sha + description: A commit sha, or the name of a branch or tag + type: string + required: true + responses: + '200': + description: Get a commit's signature + schema: + "$ref": "#/definitions/API_Entities_CommitSignature" + '404': + description: Not found + tags: + - commits + operationId: getApiV4ProjectsIdRepositoryCommitsShaSignature + "/api/v4/projects/{id}/repository/commits/{sha}/statuses": + get: + description: Get a commit's statuses + produces: + - application/json + parameters: + - in: path + name: id + description: ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: sha + description: Hash of the commit. + type: string + required: true + example: 18f3e63d05582537db6d183d9d557be09e1f90c8 + - in: query + name: ref + description: Name of the branch or tag. Default is the default branch. + type: string + required: false + example: develop + - in: query + name: stage + description: Filter statuses by build stage. + type: string + required: false + example: test + - in: query + name: name + description: Filter statuses by job name. + type: string + required: false + example: bundler:audit + - in: query + name: pipeline_id + description: Filter statuses by pipeline ID. + type: integer + format: int32 + required: false + example: 1234 + - in: query + name: all + description: Include all statuses instead of latest only. Default is `false`. + type: boolean + default: false + required: false + - in: query + name: order_by + description: Values for sorting statuses. Valid values are `id` and `pipeline_id`. + Default is `id`. + type: string + default: id + enum: + - id + - pipeline_id + required: false + - in: query + name: sort + description: Sort statuses in ascending or descending order. Valid values + are `asc` and `desc`. Default is `asc`. + type: string + default: asc + enum: + - asc + - desc + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get a commit's statuses + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_CommitStatus" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdRepositoryCommitsShaStatuses + "/api/v4/projects/{id}/statuses/{sha}": + post: + description: Post status to a commit + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: sha + description: The commit hash + type: string + required: true + example: 18f3e63d05582537db6d183d9d557be09e1f90c8 + - name: postApiV4ProjectsIdStatusesSha + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdStatusesSha" + responses: + '200': + description: Post status to a commit + schema: + "$ref": "#/definitions/API_Entities_CommitStatus" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdStatusesSha + "/api/v4/projects/{id}/packages/composer": + post: + summary: Composer packages endpoint for registering packages + description: This feature was introduced in GitLab 13.1 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of a project + type: string + required: true + - name: postApiV4ProjectsIdPackagesComposer + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdPackagesComposer" + responses: + '201': + description: Composer packages endpoint for registering packages + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - composer_packages + operationId: postApiV4ProjectsIdPackagesComposer + "/api/v4/projects/{id}/packages/composer/archives/*package_name": + get: + summary: Composer package endpoint to download a package archive + description: This feature was introduced in GitLab 13.1 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of a project + type: string + required: true + - in: query + name: sha + description: Shasum of current json + type: string + required: true + example: 673594f85a55fe3c0eb45df7bd2fa9d95a1601ab + - in: query + name: package_name + description: The Composer package name + type: string + required: true + example: my-composer-package + responses: + '200': + description: Composer package endpoint to download a package archive + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - composer_packages + operationId: getApiV4ProjectsIdPackagesComposerArchives*packageName + "/api/v4/projects/{id}/packages/conan/v1/users/authenticate": + get: + summary: Authenticate user against conan CLI + description: This feature was introduced in GitLab 12.2 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Authenticate user against conan CLI + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV1UsersAuthenticate + "/api/v4/projects/{id}/packages/conan/v1/users/check_credentials": + get: + summary: Check for valid user credentials per conan CLI + description: This feature was introduced in GitLab 12.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Check for valid user credentials per conan CLI + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV1UsersCheckCredentials + "/api/v4/projects/{id}/packages/conan/v1/conans/search": + get: + summary: Search for packages + description: This feature was introduced in GitLab 12.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: q + description: Search query + type: string + required: true + example: Hello* + responses: + '200': + description: Search for packages + '400': + description: Bad Request + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV1ConansSearch + "/api/v4/projects/{id}/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}/search": + get: + summary: Get package references metadata + description: This feature was introduced in GitLab 18.0 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + responses: + '200': + description: Get package references metadata + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannelSearch + "/api/v4/projects/{id}/packages/conan/v1/ping": + get: + summary: Ping the Conan API + description: This feature was introduced in GitLab 12.2 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Ping the Conan API + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV1Ping + ? "/api/v4/projects/{id}/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}/packages/{conan_package_reference}" + : get: + summary: Package Snapshot + description: This feature was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: conan_package_reference + description: Conan package ID + type: string + required: true + example: 103f6067a947f366ef91fc1b7da351c588d1827f + responses: + '200': + description: Package Snapshot + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_PackageSnapshot" + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannelPackagesConanPackageReference + "/api/v4/projects/{id}/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}": + get: + summary: Recipe Snapshot + description: This feature was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + responses: + '200': + description: Recipe Snapshot + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_RecipeSnapshot" + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannel + delete: + summary: Delete Package + description: This feature was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + responses: + '204': + description: Delete Package + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: deleteApiV4ProjectsIdPackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannel + ? "/api/v4/projects/{id}/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}/packages/{conan_package_reference}/digest" + : get: + summary: Package Digest + description: This feature was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: conan_package_reference + description: Conan package ID + type: string + required: true + example: 103f6067a947f366ef91fc1b7da351c588d1827f + responses: + '200': + description: Package Digest + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_PackageManifest" + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannelPackagesConanPackageReferenceDigest + "/api/v4/projects/{id}/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}/digest": + get: + summary: Recipe Digest + description: This feature was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + responses: + '200': + description: Recipe Digest + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_RecipeManifest" + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannelDigest + ? "/api/v4/projects/{id}/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}/packages/{conan_package_reference}/download_urls" + : get: + summary: Package Download Urls + description: This feature was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: conan_package_reference + description: Conan package ID + type: string + required: true + example: 103f6067a947f366ef91fc1b7da351c588d1827f + responses: + '200': + description: Package Download Urls + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_PackageManifest" + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannelPackagesConanPackageReferenceDownloadUrls + ? "/api/v4/projects/{id}/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}/download_urls" + : get: + summary: Recipe Download Urls + description: This feature was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + responses: + '200': + description: Recipe Download Urls + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_RecipeManifest" + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannelDownloadUrls + ? "/api/v4/projects/{id}/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}/packages/{conan_package_reference}/upload_urls" + : post: + summary: Package Upload Urls + description: This feature was introduced in GitLab 12.4 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: conan_package_reference + description: Conan package ID + type: string + required: true + example: 103f6067a947f366ef91fc1b7da351c588d1827f + responses: + '200': + description: Package Upload Urls + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_UploadUrls" + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: postApiV4ProjectsIdPackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannelPackagesConanPackageReferenceUploadUrls + "/api/v4/projects/{id}/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}/upload_urls": + post: + summary: Recipe Upload Urls + description: This feature was introduced in GitLab 12.4 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + responses: + '200': + description: Recipe Upload Urls + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_UploadUrls" + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: postApiV4ProjectsIdPackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannelUploadUrls + ? "/api/v4/projects/{id}/packages/conan/v1/files/{package_name}/{package_version}/{package_username}/{package_channel}/{recipe_revision}/export/{file_name}" + : get: + summary: Download recipe files + description: This feature was introduced in GitLab 12.6 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Conan Recipe Revision + type: string + required: true + example: '0' + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conanfile.py + responses: + '200': + description: Download recipe files + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionExportFileName + put: + summary: Upload recipe package files + description: This feature was introduced in GitLab 12.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Conan Recipe Revision + type: string + required: true + example: '0' + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conanfile.py + - name: putApiV4ProjectsIdPackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionExportFileName + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionExportFileName" + responses: + '200': + description: Upload recipe package files + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: putApiV4ProjectsIdPackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionExportFileName + ? "/api/v4/projects/{id}/packages/conan/v1/files/{package_name}/{package_version}/{package_username}/{package_channel}/{recipe_revision}/export/{file_name}/authorize" + : put: + summary: Workhorse authorize the conan recipe file + description: This feature was introduced in GitLab 12.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Conan Recipe Revision + type: string + required: true + example: '0' + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conanfile.py + responses: + '200': + description: Workhorse authorize the conan recipe file + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: putApiV4ProjectsIdPackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionExportFileNameAuthorize + ? "/api/v4/projects/{id}/packages/conan/v1/files/{package_name}/{package_version}/{package_username}/{package_channel}/{recipe_revision}/package/{conan_package_reference}/{package_revision}/{file_name}" + : get: + summary: Download package files + description: This feature was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Conan Recipe Revision + type: string + required: true + example: '0' + - in: path + name: conan_package_reference + description: Conan Package ID + type: string + required: true + example: 103f6067a947f366ef91fc1b7da351c588d1827f + - in: path + name: package_revision + description: Conan Package Revision + type: string + required: true + example: '0' + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conaninfo.txt + responses: + '200': + description: Download package files + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionPackageConanPackageReferencePackageRevisionFileName + put: + summary: Upload package files + description: This feature was introduced in GitLab 12.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Conan Recipe Revision + type: string + required: true + example: '0' + - in: path + name: conan_package_reference + description: Conan Package ID + type: string + required: true + example: 103f6067a947f366ef91fc1b7da351c588d1827f + - in: path + name: package_revision + description: Conan Package Revision + type: string + required: true + example: '0' + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conaninfo.txt + - name: putApiV4ProjectsIdPackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionPackageConanPackageReferencePackageRevisionFileName + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionPackageConanPackageReferencePackageRevisionFileName" + responses: + '200': + description: Upload package files + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: putApiV4ProjectsIdPackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionPackageConanPackageReferencePackageRevisionFileName + ? "/api/v4/projects/{id}/packages/conan/v1/files/{package_name}/{package_version}/{package_username}/{package_channel}/{recipe_revision}/package/{conan_package_reference}/{package_revision}/{file_name}/authorize" + : put: + summary: Workhorse authorize the conan package file + description: This feature was introduced in GitLab 12.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Conan Recipe Revision + type: string + required: true + example: '0' + - in: path + name: conan_package_reference + description: Conan Package ID + type: string + required: true + example: 103f6067a947f366ef91fc1b7da351c588d1827f + - in: path + name: package_revision + description: Conan Package Revision + type: string + required: true + example: '0' + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conaninfo.txt + responses: + '200': + description: Workhorse authorize the conan package file + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: putApiV4ProjectsIdPackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionPackageConanPackageReferencePackageRevisionFileNameAuthorize + "/api/v4/projects/{id}/packages/conan/v2/users/authenticate": + get: + summary: Authenticate user against conan CLI + description: This feature was introduced in GitLab 12.2 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Authenticate user against conan CLI + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV2UsersAuthenticate + "/api/v4/projects/{id}/packages/conan/v2/users/check_credentials": + get: + summary: Check for valid user credentials per conan CLI + description: This feature was introduced in GitLab 12.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Check for valid user credentials per conan CLI + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV2UsersCheckCredentials + "/api/v4/projects/{id}/packages/conan/v2/conans/search": + get: + summary: Search for packages + description: This feature was introduced in GitLab 12.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: q + description: Search query + type: string + required: true + example: Hello* + responses: + '200': + description: Search for packages + '400': + description: Bad Request + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV2ConansSearch + "/api/v4/projects/{id}/packages/conan/v2/conans/{package_name}/{package_version}/{package_username}/{package_channel}/search": + get: + summary: Get package references metadata + description: This feature was introduced in GitLab 18.0 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + responses: + '200': + description: Get package references metadata + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelSearch + "/api/v4/projects/{id}/packages/conan/v2/conans/{package_name}/{package_version}/{package_username}/{package_channel}/latest": + get: + summary: Get the latest recipe revision + description: This feature was introduced in GitLab 17.11 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + responses: + '200': + description: Get the latest recipe revision + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_Revision" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelLatest + "/api/v4/projects/{id}/packages/conan/v2/conans/{package_name}/{package_version}/{package_username}/{package_channel}/revisions": + get: + summary: Get the list of revisions + description: This feature was introduced in GitLab 17.11 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + responses: + '200': + description: Get the list of revisions + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_RecipeRevisions" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisions + ? "/api/v4/projects/{id}/packages/conan/v2/conans/{package_name}/{package_version}/{package_username}/{package_channel}/revisions/{recipe_revision}" + : delete: + summary: Delete recipe revision + description: This feature was introduced in GitLab 18.1 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Recipe revision + type: string + required: true + example: df28fd816be3a119de5ce4d374436b25 + responses: + '204': + description: Delete recipe revision + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: deleteApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevision + ? "/api/v4/projects/{id}/packages/conan/v2/conans/{package_name}/{package_version}/{package_username}/{package_channel}/revisions/{recipe_revision}/files" + : get: + summary: List recipe files + description: This feature was introduced in GitLab 17.11 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Recipe revision + type: string + required: true + example: df28fd816be3a119de5ce4d374436b25 + responses: + '200': + description: List recipe files + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_FilesList" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionFiles + ? "/api/v4/projects/{id}/packages/conan/v2/conans/{package_name}/{package_version}/{package_username}/{package_channel}/revisions/{recipe_revision}/files/{file_name}" + : get: + summary: Download recipe files + description: This feature was introduced in GitLab 17.8 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Recipe revision + type: string + required: true + example: df28fd816be3a119de5ce4d374436b25 + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conanfile.py + responses: + '200': + description: Download recipe files + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionFilesFileName + put: + summary: Upload recipe package files + description: This feature was introduced in GitLab 17.10 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Recipe revision + type: string + required: true + example: df28fd816be3a119de5ce4d374436b25 + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conanfile.py + - name: putApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionFilesFileName + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionFilesFileName" + responses: + '200': + description: Upload recipe package files + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: putApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionFilesFileName + ? "/api/v4/projects/{id}/packages/conan/v2/conans/{package_name}/{package_version}/{package_username}/{package_channel}/revisions/{recipe_revision}/files/{file_name}/authorize" + : put: + summary: Workhorse authorize the conan recipe file + description: This feature was introduced in GitLab 17.10 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Recipe revision + type: string + required: true + example: df28fd816be3a119de5ce4d374436b25 + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conanfile.py + responses: + '200': + description: Workhorse authorize the conan recipe file + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: putApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionFilesFileNameAuthorize + ? "/api/v4/projects/{id}/packages/conan/v2/conans/{package_name}/{package_version}/{package_username}/{package_channel}/revisions/{recipe_revision}/search" + : get: + summary: Get package references metadata + description: This feature was introduced in GitLab 18.1 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Recipe revision + type: string + required: true + example: df28fd816be3a119de5ce4d374436b25 + responses: + '200': + description: Get package references metadata + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionSearch + ? "/api/v4/projects/{id}/packages/conan/v2/conans/{package_name}/{package_version}/{package_username}/{package_channel}/revisions/{recipe_revision}/packages/{conan_package_reference}/latest" + : get: + summary: Get the latest package revision + description: This feature was introduced in GitLab 17.11 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Recipe revision + type: string + required: true + example: df28fd816be3a119de5ce4d374436b25 + - in: path + name: conan_package_reference + description: Package reference + type: string + required: true + example: 5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 + responses: + '200': + description: Get the latest package revision + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_Revision" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionPackagesConanPackageReferenceLatest + ? "/api/v4/projects/{id}/packages/conan/v2/conans/{package_name}/{package_version}/{package_username}/{package_channel}/revisions/{recipe_revision}/packages/{conan_package_reference}/revisions" + : get: + summary: Get the list of package revisions + description: This feature was introduced in GitLab 18.0 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Recipe revision + type: string + required: true + example: df28fd816be3a119de5ce4d374436b25 + - in: path + name: conan_package_reference + description: Package reference + type: string + required: true + example: 5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 + responses: + '200': + description: Get the list of package revisions + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_PackageRevisions" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionPackagesConanPackageReferenceRevisions + ? "/api/v4/projects/{id}/packages/conan/v2/conans/{package_name}/{package_version}/{package_username}/{package_channel}/revisions/{recipe_revision}/packages/{conan_package_reference}/revisions/{package_revision}" + : delete: + summary: Delete package revision + description: This feature was introduced in GitLab 18.1 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Recipe revision + type: string + required: true + example: df28fd816be3a119de5ce4d374436b25 + - in: path + name: conan_package_reference + description: Package reference + type: string + required: true + example: 5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 + - in: path + name: package_revision + description: Package revision + type: string + required: true + example: 3bdd2d8c8e76c876ebd1ac0469a4e72c + responses: + '204': + description: Delete package revision + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: deleteApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionPackagesConanPackageReferenceRevisionsPackageRevision + ? "/api/v4/projects/{id}/packages/conan/v2/conans/{package_name}/{package_version}/{package_username}/{package_channel}/revisions/{recipe_revision}/packages/{conan_package_reference}/revisions/{package_revision}/files" + : get: + summary: List package files + description: This feature was introduced in GitLab 18.0 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Recipe revision + type: string + required: true + example: df28fd816be3a119de5ce4d374436b25 + - in: path + name: conan_package_reference + description: Package reference + type: string + required: true + example: 5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 + - in: path + name: package_revision + description: Package revision + type: string + required: true + example: 3bdd2d8c8e76c876ebd1ac0469a4e72c + responses: + '200': + description: List package files + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_FilesList" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionPackagesConanPackageReferenceRevisionsPackageRevisionFiles + ? "/api/v4/projects/{id}/packages/conan/v2/conans/{package_name}/{package_version}/{package_username}/{package_channel}/revisions/{recipe_revision}/packages/{conan_package_reference}/revisions/{package_revision}/files/{file_name}" + : get: + summary: Download package files + description: This feature was introduced in GitLab 17.11 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Recipe revision + type: string + required: true + example: df28fd816be3a119de5ce4d374436b25 + - in: path + name: conan_package_reference + description: Package reference + type: string + required: true + example: 5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 + - in: path + name: package_revision + description: Package revision + type: string + required: true + example: 3bdd2d8c8e76c876ebd1ac0469a4e72c + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conaninfo.txt + responses: + '200': + description: Download package files + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionPackagesConanPackageReferenceRevisionsPackageRevisionFilesFileName + put: + summary: Upload package files + description: This feature was introduced in GitLab 17.11 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Recipe revision + type: string + required: true + example: df28fd816be3a119de5ce4d374436b25 + - in: path + name: conan_package_reference + description: Package reference + type: string + required: true + example: 5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 + - in: path + name: package_revision + description: Package revision + type: string + required: true + example: 3bdd2d8c8e76c876ebd1ac0469a4e72c + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conaninfo.txt + - name: putApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionPackagesConanPackageReferenceRevisionsPackageRevisionFilesFileName + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionPackagesConanPackageReferenceRevisionsPackageRevisionFilesFileName" + responses: + '200': + description: Upload package files + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: putApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionPackagesConanPackageReferenceRevisionsPackageRevisionFilesFileName + ? "/api/v4/projects/{id}/packages/conan/v2/conans/{package_name}/{package_version}/{package_username}/{package_channel}/revisions/{recipe_revision}/packages/{conan_package_reference}/revisions/{package_revision}/files/{file_name}/authorize" + : put: + summary: Workhorse authorize the conan package file + description: This feature was introduced in GitLab 17.11 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Recipe revision + type: string + required: true + example: df28fd816be3a119de5ce4d374436b25 + - in: path + name: conan_package_reference + description: Package reference + type: string + required: true + example: 5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 + - in: path + name: package_revision + description: Package revision + type: string + required: true + example: 3bdd2d8c8e76c876ebd1ac0469a4e72c + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conaninfo.txt + responses: + '200': + description: Workhorse authorize the conan package file + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: putApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionPackagesConanPackageReferenceRevisionsPackageRevisionFilesFileNameAuthorize + "/api/v4/projects/{id}/packages/debian/dists/*distribution/Release.gpg": + get: + summary: The Release file signature + description: This feature was introduced in GitLab 13.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + responses: + '200': + description: The Release file signature + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4ProjectsIdPackagesDebianDists*distributionReleaseGpg + "/api/v4/projects/{id}/packages/debian/dists/*distribution/Release": + get: + summary: The unsigned Release file + description: This feature was introduced in GitLab 13.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + responses: + '200': + description: The unsigned Release file + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4ProjectsIdPackagesDebianDists*distributionRelease + "/api/v4/projects/{id}/packages/debian/dists/*distribution/InRelease": + get: + summary: The signed Release file + description: This feature was introduced in GitLab 13.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + responses: + '200': + description: The signed Release file + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4ProjectsIdPackagesDebianDists*distributionInrelease + "/api/v4/projects/{id}/packages/debian/dists/*distribution/{component}/debian-installer/binary-{architecture}/Packages": + get: + summary: The installer (udeb) binary files index + description: This feature was introduced in GitLab 15.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + - in: path + name: component + description: The Debian Component + type: string + required: true + example: main + - in: path + name: architecture + description: The Debian Architecture + type: string + required: true + example: binary-amd64 + responses: + '200': + description: The installer (udeb) binary files index + '202': + description: The installer (udeb) binary files index + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4ProjectsIdPackagesDebianDists*distributionComponentDebianInstallerBinaryArchitecturePackages + ? "/api/v4/projects/{id}/packages/debian/dists/*distribution/{component}/debian-installer/binary-{architecture}/by-hash/SHA256/{file_sha256}" + : get: + summary: The installer (udeb) binary files index by hash + description: This feature was introduced in GitLab 15.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + - in: path + name: component + description: The Debian Component + type: string + required: true + example: main + - in: path + name: architecture + description: The Debian Architecture + type: string + required: true + example: binary-amd64 + - in: path + name: file_sha256 + type: integer + format: int32 + required: true + responses: + '200': + description: The installer (udeb) binary files index by hash + '202': + description: The installer (udeb) binary files index by hash + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4ProjectsIdPackagesDebianDists*distributionComponentDebianInstallerBinaryArchitectureByHashSha256FileSha256 + "/api/v4/projects/{id}/packages/debian/dists/*distribution/{component}/source/Sources": + get: + summary: The source files index + description: This feature was introduced in GitLab 15.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + - in: path + name: component + description: The Debian Component + type: string + required: true + example: main + responses: + '200': + description: The source files index + '202': + description: The source files index + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4ProjectsIdPackagesDebianDists*distributionComponentSourceSources + "/api/v4/projects/{id}/packages/debian/dists/*distribution/{component}/source/by-hash/SHA256/{file_sha256}": + get: + summary: The source files index by hash + description: This feature was introduced in GitLab 15.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + - in: path + name: component + description: The Debian Component + type: string + required: true + example: main + - in: path + name: file_sha256 + type: integer + format: int32 + required: true + responses: + '200': + description: The source files index by hash + '202': + description: The source files index by hash + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4ProjectsIdPackagesDebianDists*distributionComponentSourceByHashSha256FileSha256 + "/api/v4/projects/{id}/packages/debian/dists/*distribution/{component}/binary-{architecture}/Packages": + get: + summary: The binary files index + description: This feature was introduced in GitLab 13.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + - in: path + name: component + description: The Debian Component + type: string + required: true + example: main + - in: path + name: architecture + description: The Debian Architecture + type: string + required: true + example: binary-amd64 + responses: + '200': + description: The binary files index + '202': + description: The binary files index + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4ProjectsIdPackagesDebianDists*distributionComponentBinary-ArchitecturePackages + "/api/v4/projects/{id}/packages/debian/dists/*distribution/{component}/binary-{architecture}/by-hash/SHA256/{file_sha256}": + get: + summary: The binary files index by hash + description: This feature was introduced in GitLab 15.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + - in: path + name: component + description: The Debian Component + type: string + required: true + example: main + - in: path + name: architecture + description: The Debian Architecture + type: string + required: true + example: binary-amd64 + - in: path + name: file_sha256 + type: integer + format: int32 + required: true + responses: + '200': + description: The binary files index by hash + '202': + description: The binary files index by hash + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4ProjectsIdPackagesDebianDists*distributionComponentBinaryArchitectureByHashSha256FileSha256 + "/api/v4/projects/{id}/packages/debian/pool/{distribution}/{letter}/{package_name}/{package_version}/{file_name}": + get: + summary: Download Debian package + description: This feature was introduced in GitLab 14.2 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: distribution + description: The Debian Codename or Suite + type: string + required: true + example: my-distro + - in: path + name: letter + description: The Debian Classification (first-letter or lib-first-letter) + type: string + required: true + example: a + - in: path + name: package_name + description: The Debian Source Package Name + type: string + required: true + example: my-pkg + - in: path + name: package_version + description: The Debian Source Package Version + type: string + required: true + example: 1.0.0 + - in: path + name: file_name + description: The Debian File Name + type: string + required: true + example: example_1.0.0~alpha2_amd64.deb + responses: + '200': + description: Download Debian package + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: getApiV4ProjectsIdPackagesDebianPoolDistributionLetterPackageNamePackageVersionFileName + "/api/v4/projects/{id}/packages/debian/{file_name}": + put: + summary: Upload Debian package + description: This feature was introduced in GitLab 14.0 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: file_name + description: The filename + type: string + required: true + example: example_1.0.0~alpha2_amd64.deb + - name: putApiV4ProjectsIdPackagesDebianFileName + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesDebianFileName" + responses: + '201': + description: Upload Debian package + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: putApiV4ProjectsIdPackagesDebianFileName + "/api/v4/projects/{id}/packages/debian/{file_name}/authorize": + put: + summary: Authorize Debian package upload + description: This feature was introduced in GitLab 13.5 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: file_name + description: The filename + type: string + required: true + example: example_1.0.0~alpha2_amd64.deb + - name: putApiV4ProjectsIdPackagesDebianFileNameAuthorize + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesDebianFileNameAuthorize" + responses: + '200': + description: Authorize Debian package upload + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_packages + operationId: putApiV4ProjectsIdPackagesDebianFileNameAuthorize + "/api/v4/projects/{id}/deploy_keys": + get: + summary: List deploy keys for project + description: Get a list of a project's deploy keys. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List deploy keys for project + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_DeployKeysProject" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - deploy_keys + operationId: getApiV4ProjectsIdDeployKeys + post: + summary: Add deploy key + description: Creates a new deploy key for a project. If the deploy key already + exists in another project, it's joined to the current project only if the + original one is accessible by the same user. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - name: postApiV4ProjectsIdDeployKeys + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdDeployKeys" + responses: + '201': + description: Add deploy key + schema: + "$ref": "#/definitions/API_Entities_DeployKeysProject" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - deploy_keys + operationId: postApiV4ProjectsIdDeployKeys + "/api/v4/projects/{id}/deploy_keys/{key_id}": + get: + summary: Get a single deploy key + description: Get a single key. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: key_id + description: The ID of the deploy key + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single deploy key + schema: + "$ref": "#/definitions/API_Entities_DeployKeysProject" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - deploy_keys + operationId: getApiV4ProjectsIdDeployKeysKeyId + put: + summary: Update deploy key + description: Updates a deploy key for a project. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: key_id + description: The ID of the deploy key + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdDeployKeysKeyId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdDeployKeysKeyId" + responses: + '200': + description: Update deploy key + schema: + "$ref": "#/definitions/API_Entities_DeployKey" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - deploy_keys + operationId: putApiV4ProjectsIdDeployKeysKeyId + delete: + summary: Delete deploy key + description: Removes a deploy key from the project. If the deploy key is used + only for this project, it's deleted from the system. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: key_id + description: The ID of the deploy key + type: integer + format: int32 + required: true + responses: + '204': + description: Delete deploy key + '401': + description: Unauthorized + '404': + description: Not found + tags: + - deploy_keys + operationId: deleteApiV4ProjectsIdDeployKeysKeyId + "/api/v4/projects/{id}/deploy_keys/{key_id}/enable": + post: + summary: Enable a deploy key + description: Enables a deploy key for a project so this can be used. Returns + the enabled key, with a status code 201 when successful. This feature was + added in GitLab 8.11. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: key_id + description: The ID of the deploy key + type: integer + format: int32 + required: true + responses: + '201': + description: Enable a deploy key + schema: + "$ref": "#/definitions/API_Entities_DeployKey" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - deploy_keys + operationId: postApiV4ProjectsIdDeployKeysKeyIdEnable + "/api/v4/projects/{id}/deploy_tokens": + get: + summary: List project deploy tokens + description: Get a list of a project's deploy tokens. This feature was introduced + in GitLab 12.9. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: active + description: Limit by active status + type: boolean + required: false + responses: + '200': + description: List project deploy tokens + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_DeployToken" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - deploy_tokens + operationId: getApiV4ProjectsIdDeployTokens + post: + summary: Create a project deploy token + description: Creates a new deploy token for a project. This feature was introduced + in GitLab 12.9. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - name: postApiV4ProjectsIdDeployTokens + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdDeployTokens" + responses: + '201': + description: Create a project deploy token + schema: + "$ref": "#/definitions/API_Entities_DeployTokenWithToken" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - deploy_tokens + operationId: postApiV4ProjectsIdDeployTokens + "/api/v4/projects/{id}/deploy_tokens/{token_id}": + get: + summary: Get a project deploy token + description: Get a single project's deploy token by ID. This feature was introduced + in GitLab 14.9. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: token_id + description: The ID of the deploy token + type: integer + format: int32 + required: true + responses: + '200': + description: Get a project deploy token + schema: + "$ref": "#/definitions/API_Entities_DeployToken" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - deploy_tokens + operationId: getApiV4ProjectsIdDeployTokensTokenId + delete: + summary: Delete a project deploy token + description: This feature was introduced in GitLab 12.9. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: token_id + description: The ID of the deploy token + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a project deploy token + '401': + description: Unauthorized + '404': + description: Not found + tags: + - deploy_tokens + operationId: deleteApiV4ProjectsIdDeployTokensTokenId + "/api/v4/projects/{id}/deployments": + get: + summary: List project deployments + description: Get a list of deployments in a project. This feature was introduced + in GitLab 8.11. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: order_by + description: Return deployments ordered by either one of `id`, `iid`, `created_at`, + `updated_at` or `ref` fields. Default is `id` + type: string + default: id + enum: + - id + - iid + - created_at + - updated_at + - finished_at + required: false + - in: query + name: sort + description: Return deployments sorted in `asc` or `desc` order. Default is + `asc` + type: string + default: asc + enum: + - asc + - desc + required: false + - in: query + name: updated_after + description: Return deployments updated after the specified date. Expected + in ISO 8601 format (`2019-03-15T08:00:00Z`) + type: string + format: date-time + required: false + - in: query + name: updated_before + description: Return deployments updated before the specified date. Expected + in ISO 8601 format (`2019-03-15T08:00:00Z`) + type: string + format: date-time + required: false + - in: query + name: finished_after + description: Return deployments finished after the specified date. Expected + in ISO 8601 format (`2019-03-15T08:00:00Z`) + type: string + format: date-time + required: false + - in: query + name: finished_before + description: Return deployments finished before the specified date. Expected + in ISO 8601 format (`2019-03-15T08:00:00Z`) + type: string + format: date-time + required: false + - in: query + name: environment + description: The name of the environment to filter deployments by + type: string + required: false + - in: query + name: status + description: The status to filter deployments by. One of `created`, `running`, + `success`, `failed`, `canceled`, or `blocked` + type: string + enum: + - created + - running + - success + - failed + - canceled + - skipped + - blocked + required: false + responses: + '200': + description: List project deployments + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Deployment" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - deployments + operationId: getApiV4ProjectsIdDeployments + post: + summary: Create a deployment + description: This feature was introduced in GitLab 12.4. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - name: postApiV4ProjectsIdDeployments + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdDeployments" + responses: + '201': + description: Create a deployment + schema: + "$ref": "#/definitions/API_Entities_DeploymentExtended" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - deployments + operationId: postApiV4ProjectsIdDeployments + "/api/v4/projects/{id}/deployments/{deployment_id}": + get: + summary: Get a specific deployment + description: This feature was introduced in GitLab 8.11. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: deployment_id + description: The ID of the deployment + type: integer + format: int32 + required: true + responses: + '200': + description: Get a specific deployment + schema: + "$ref": "#/definitions/API_Entities_DeploymentExtended" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - deployments + operationId: getApiV4ProjectsIdDeploymentsDeploymentId + put: + summary: Update a deployment + description: This feature was introduced in GitLab 12.4. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: deployment_id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdDeploymentsDeploymentId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdDeploymentsDeploymentId" + responses: + '200': + description: Update a deployment + schema: + "$ref": "#/definitions/API_Entities_DeploymentExtended" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - deployments + operationId: putApiV4ProjectsIdDeploymentsDeploymentId + delete: + summary: Delete a specific deployment + description: Delete a specific deployment that is not currently the last deployment + for an environment or in a running state. This feature was introduced in GitLab + 15.3. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: deployment_id + description: The ID of the deployment + type: integer + format: int32 + required: true + responses: + '204': + description: Deployment destroyed + '403': + description: Forbidden + '400': + description: '"Cannot destroy running deployment" or "Deployment currently + deployed to environment"' + tags: + - deployments + operationId: deleteApiV4ProjectsIdDeploymentsDeploymentId + "/api/v4/projects/{id}/deployments/{deployment_id}/merge_requests": + get: + summary: List of merge requests associated with a deployment + description: Retrieves the list of merge requests shipped with a given deployment. + This feature was introduced in GitLab 12.7. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: deployment_id + description: The ID of the deployment + type: integer + format: int32 + required: true + - in: query + name: author_id + description: Returns merge requests created by the given user `id`. Mutually + exclusive with `author_username`. Combine with `scope=all` or `scope=assigned_to_me`. + type: integer + format: int32 + required: false + - in: query + name: author_username + description: Returns merge requests created by the given `username`. Mutually + exclusive with `author_id`. + type: string + required: false + - in: query + name: assignee_id + description: Returns merge requests assigned to the given user `id`. `None` + returns unassigned merge requests. `Any` returns merge requests with an + assignee. + type: integer + format: int32 + required: false + - in: query + name: assignee_username + description: Returns merge requests created by the given `username`. Mutually + exclusive with `author_id`. + type: array + items: + type: string + required: false + - in: query + name: reviewer_username + description: Returns merge requests which have the user as a reviewer with + the given `username`. `None` returns merge requests with no reviewers. `Any` + returns merge requests with any reviewer. Mutually exclusive with `reviewer_id`. + Introduced in GitLab 13.8. + type: string + required: false + - in: query + name: labels + description: Returns merge requests matching a comma-separated list of labels. + `None` lists all merge requests with no labels. `Any` lists all merge requests + with at least one label. Predefined names are case-insensitive. + type: array + items: + type: string + required: false + - in: query + name: milestone + description: Returns merge requests for a specific milestone. `None` returns + merge requests with no milestone. `Any` returns merge requests that have + an assigned milestone. + type: string + required: false + - in: query + name: my_reaction_emoji + description: Returns merge requests reacted by the authenticated user by the + given `emoji`. `None` returns issues not given a reaction. `Any` returns + issues given at least one reaction. + type: string + required: false + - in: query + name: reviewer_id + description: Returns merge requests which have the user as a reviewer with + the given user `id`. `None` returns merge requests with no reviewers. `Any` + returns merge requests with any reviewer. Mutually exclusive with `reviewer_username`. + type: integer + format: int32 + required: false + - in: query + name: state + description: Returns `all` merge requests or just those that are `opened`, + `closed`, `locked`, or `merged`. + type: string + default: all + enum: + - opened + - closed + - locked + - merged + - all + required: false + - in: query + name: order_by + description: Returns merge requests ordered by `created_at`, `label_priority`, + `milestone_due`, `popularity`, `priority`, `title`, `updated_at` or `merged_at` + fields. Introduced in GitLab 14.8. + type: string + default: created_at + enum: + - created_at + - label_priority + - milestone_due + - popularity + - priority + - title + - updated_at + - merged_at + required: false + - in: query + name: sort + description: Returns merge requests sorted in `asc` or `desc` order. + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: with_labels_details + description: 'If `true`, response returns more details for each label in labels + field: `:name`,`:color`, `:description`, `:description_html`, `:text_color`' + type: boolean + default: false + required: false + - in: query + name: with_merge_status_recheck + description: If `true`, this projection requests (but does not guarantee) + that the `merge_status` field be recalculated asynchronously. Introduced + in GitLab 13.0. + type: boolean + default: false + required: false + - in: query + name: created_after + description: Returns merge requests created on or after the given time. Expected + in ISO 8601 format. + type: string + format: date-time + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: created_before + description: Returns merge requests created on or before the given time. Expected + in ISO 8601 format. + type: string + format: date-time + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: updated_after + description: Returns merge requests updated on or after the given time. Expected + in ISO 8601 format. + type: string + format: date-time + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: updated_before + description: Returns merge requests updated on or before the given time. Expected + in ISO 8601 format. + type: string + format: date-time + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: view + description: If simple, returns the `iid`, URL, title, description, and basic + state of merge request + type: string + enum: + - simple + required: false + - in: query + name: scope + description: 'Returns merge requests for the given scope: `created_by_me`, + `assigned_to_me` or `all`' + type: string + enum: + - created-by-me + - assigned-to-me + - created_by_me + - assigned_to_me + - all + required: false + - in: query + name: source_branch + description: Returns merge requests with the given source branch + type: string + required: false + - in: query + name: source_project_id + description: Returns merge requests with the given source project id + type: integer + format: int32 + required: false + - in: query + name: target_branch + description: Returns merge requests with the given target branch + type: string + required: false + - in: query + name: search + description: Search merge requests against their `title` and `description`. + type: string + required: false + - in: query + name: in + description: Modify the scope of the search attribute. `title`, `description`, + or a string joining them with comma. + type: string + required: false + example: title,description + - in: query + name: wip + description: Filter merge requests against their `wip` status. `yes` to return + only draft merge requests, `no` to return non-draft merge requests. + type: string + enum: + - 'yes' + - 'no' + required: false + - in: query + name: not[author_id] + description: "`` Returns merge requests created by the given user + `id`. Mutually exclusive with `author_username`. Combine with `scope=all` + or `scope=assigned_to_me`." + type: integer + format: int32 + required: false + - in: query + name: not[author_username] + description: "`` Returns merge requests created by the given `username`. + Mutually exclusive with `author_id`." + type: string + required: false + - in: query + name: not[assignee_id] + description: "`` Returns merge requests assigned to the given user + `id`. `None` returns unassigned merge requests. `Any` returns merge requests + with an assignee." + type: integer + format: int32 + required: false + - in: query + name: not[assignee_username] + description: "`` Returns merge requests created by the given `username`. + Mutually exclusive with `author_id`." + type: array + items: + type: string + required: false + - in: query + name: not[reviewer_username] + description: "`` Returns merge requests which have the user as a + reviewer with the given `username`. `None` returns merge requests with no + reviewers. `Any` returns merge requests with any reviewer. Mutually exclusive + with `reviewer_id`. Introduced in GitLab 13.8." + type: string + required: false + - in: query + name: not[labels] + description: "`` Returns merge requests matching a comma-separated + list of labels. `None` lists all merge requests with no labels. `Any` lists + all merge requests with at least one label. Predefined names are case-insensitive." + type: array + items: + type: string + required: false + - in: query + name: not[milestone] + description: "`` Returns merge requests for a specific milestone. + `None` returns merge requests with no milestone. `Any` returns merge requests + that have an assigned milestone." + type: string + required: false + - in: query + name: not[my_reaction_emoji] + description: "`` Returns merge requests reacted by the authenticated + user by the given `emoji`. `None` returns issues not given a reaction. `Any` + returns issues given at least one reaction." + type: string + required: false + - in: query + name: not[reviewer_id] + description: "`` Returns merge requests which have the user as a + reviewer with the given user `id`. `None` returns merge requests with no + reviewers. `Any` returns merge requests with any reviewer. Mutually exclusive + with `reviewer_username`." + type: integer + format: int32 + required: false + - in: query + name: deployed_before + description: Returns merge requests deployed before the given date/time. Expected + in ISO 8601 format. + type: string + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: deployed_after + description: Returns merge requests deployed after the given date/time. Expected + in ISO 8601 format + type: string + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: environment + description: Returns merge requests deployed to the given environment + type: string + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: approved + description: Filters merge requests by their `approved` status. `yes` returns + only approved merge requests. `no` returns only non-approved merge requests. + type: string + enum: + - 'yes' + - 'no' + required: false + - in: query + name: merge_user_id + description: Returns merge requests which have been merged by the user with + the given user `id`. Mutually exclusive with `merge_user_username`. + type: integer + format: int32 + required: false + - in: query + name: merge_user_username + description: Returns merge requests which have been merged by the user with + the given `username`. Mutually exclusive with `merge_user_id`. + type: string + required: false + responses: + '200': + description: List of merge requests associated with a deployment + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_MergeRequestBasic" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - deployments + operationId: getApiV4ProjectsIdDeploymentsDeploymentIdMergeRequests + "/api/v4/projects/{id}/deployments/{deployment_id}/approval": + post: + summary: Approve or reject a blocked deployment + description: This feature was introduced in GitLab 14.8. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: deployment_id + description: The ID of the deployment + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdDeploymentsDeploymentIdApproval + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdDeploymentsDeploymentIdApproval" + responses: + '201': + description: Approve or reject a blocked deployment + schema: + "$ref": "#/definitions/API_Entities_Deployments_Approval" + tags: + - deployments + operationId: postApiV4ProjectsIdDeploymentsDeploymentIdApproval + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/draft_notes": + get: + description: Get a list of merge request draft notes + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a project + type: string + required: true + - in: path + name: merge_request_iid + description: The ID of a merge request + type: integer + format: int32 + required: true + responses: + '200': + description: Get a list of merge request draft notes + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_DraftNote" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidDraftNotes + post: + description: Create a new draft note + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a project. + type: string + required: true + - in: path + name: merge_request_iid + description: The ID of a merge request. + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdMergeRequestsMergeRequestIidDraftNotes + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdMergeRequestsMergeRequestIidDraftNotes" + responses: + '201': + description: Create a new draft note + schema: + "$ref": "#/definitions/API_Entities_DraftNote" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidDraftNotes + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/draft_notes/{draft_note_id}": + get: + description: Get a single draft note + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a project + type: string + required: true + - in: path + name: merge_request_iid + description: The ID of a merge request + type: integer + format: int32 + required: true + - in: path + name: draft_note_id + description: The ID of a draft note + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single draft note + schema: + "$ref": "#/definitions/API_Entities_DraftNote" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidDraftNotesDraftNoteId + put: + description: Modify an existing draft note + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a project. + type: string + required: true + - in: path + name: merge_request_iid + description: The ID of a merge request. + type: integer + format: int32 + required: true + - in: path + name: draft_note_id + description: The ID of a draft note + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdMergeRequestsMergeRequestIidDraftNotesDraftNoteId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdMergeRequestsMergeRequestIidDraftNotesDraftNoteId" + responses: + '200': + description: Modify an existing draft note + schema: + "$ref": "#/definitions/API_Entities_DraftNote" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - projects + operationId: putApiV4ProjectsIdMergeRequestsMergeRequestIidDraftNotesDraftNoteId + delete: + description: Delete a draft note + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a project + type: string + required: true + - in: path + name: merge_request_iid + description: The ID of a merge request + type: integer + format: int32 + required: true + - in: path + name: draft_note_id + description: The ID of a draft note + type: integer + format: int32 + required: true + responses: + '204': + description: Unauthorized + '404': + description: Not found + tags: + - projects + operationId: deleteApiV4ProjectsIdMergeRequestsMergeRequestIidDraftNotesDraftNoteId + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/draft_notes/{draft_note_id}/publish": + put: + description: Publish a pending draft note + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a project + type: string + required: true + - in: path + name: merge_request_iid + description: The ID of a merge request + type: integer + format: int32 + required: true + - in: path + name: draft_note_id + description: The ID of a draft note + type: integer + format: int32 + required: true + responses: + '204': + description: Publish a pending draft note + '401': + description: Unauthorized + '404': + description: Not found + tags: + - projects + operationId: putApiV4ProjectsIdMergeRequestsMergeRequestIidDraftNotesDraftNoteIdPublish + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/draft_notes/bulk_publish": + post: + description: Bulk publish all pending draft notes + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a project + type: string + required: true + - in: path + name: merge_request_iid + description: The ID of a merge request + type: integer + format: int32 + required: true + responses: + '204': + description: Bulk publish all pending draft notes + '401': + description: Unauthorized + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidDraftNotesBulkPublish + "/api/v4/projects/{id}/environments": + get: + summary: List environments + description: Get all environments for a given project. This feature was introduced + in GitLab 8.11. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: name + description: Return the environment with this name. Mutually exclusive with + search + type: string + required: false + - in: query + name: search + description: Return list of environments matching the search criteria. Mutually + exclusive with name. Must be at least 3 characters. + type: string + required: false + - in: query + name: states + description: 'List all environments that match a specific state. Accepted + values: `available`, `stopping`, or `stopped`. If no state value given, + returns all environments' + type: string + enum: + - stopped + - stopping + - available + required: false + responses: + '200': + description: List environments + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Environment" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - environments + operationId: getApiV4ProjectsIdEnvironments + post: + summary: Create a new environment + description: Creates a new environment with the given name and `external_url`. + It returns `201` if the environment was successfully created, `400` for wrong + parameters. This feature was introduced in GitLab 8.11. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - name: postApiV4ProjectsIdEnvironments + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdEnvironments" + responses: + '201': + description: Create a new environment + schema: + "$ref": "#/definitions/API_Entities_Environment" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - environments + operationId: postApiV4ProjectsIdEnvironments + "/api/v4/projects/{id}/environments/{environment_id}": + put: + summary: Update an existing environment + description: Updates an existing environment name and/or `external_url`. It + returns `200` if the environment was successfully updated. In case of an error, + a status code `400` is returned. This feature was introduced in GitLab 8.11. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: environment_id + description: The ID of the environment + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdEnvironmentsEnvironmentId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdEnvironmentsEnvironmentId" + responses: + '200': + description: Update an existing environment + schema: + "$ref": "#/definitions/API_Entities_Environment" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - environments + operationId: putApiV4ProjectsIdEnvironmentsEnvironmentId + delete: + summary: Delete an environment + description: It returns 204 if the environment was successfully deleted, and + 404 if the environment does not exist. This feature was introduced in GitLab + 8.11. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: environment_id + description: The ID of the environment + type: integer + format: int32 + required: true + responses: + '401': + description: Unauthorized + '204': + description: Delete an environment + schema: + "$ref": "#/definitions/API_Entities_Environment" + '404': + description: Not found + tags: + - environments + operationId: deleteApiV4ProjectsIdEnvironmentsEnvironmentId + get: + description: Get a specific environment + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: environment_id + description: The ID of the environment + type: integer + format: int32 + required: true + responses: + '200': + description: Get a specific environment + schema: + "$ref": "#/definitions/API_Entities_Environment" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - environments + operationId: getApiV4ProjectsIdEnvironmentsEnvironmentId + "/api/v4/projects/{id}/environments/review_apps": + delete: + summary: Delete multiple stopped review apps + description: It schedules for deletion multiple environments that have already + been stopped and are in the review app folder. The actual deletion is performed + after 1 week from the time of execution. By default, it only deletes environments + 30 days or older. You can change this default using the `before` parameter. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: query + name: before + description: The date before which environments can be deleted. Defaults to + 30 days ago. Expected in ISO 8601 format (`YYYY-MM-DDTHH:MM:SSZ`) + type: string + format: date-time + default: {} + required: false + - in: query + name: limit + description: Maximum number of environments to delete. Defaults to 100 + type: integer + format: int32 + default: 100 + minimum: 1 + maximum: 1000 + required: false + - in: query + name: dry_run + description: Defaults to true for safety reasons. It performs a dry run where + no actual deletion will be performed. Set to false to actually delete the + environment + type: boolean + default: true + required: false + responses: + '400': + description: Bad request + '204': + description: Delete multiple stopped review apps + schema: + "$ref": "#/definitions/API_Entities_EnvironmentBasic" + '401': + description: Unauthorized + '404': + description: Not found + '409': + description: Conflict + tags: + - environments + operationId: deleteApiV4ProjectsIdEnvironmentsReviewApps + "/api/v4/projects/{id}/environments/{environment_id}/stop": + post: + summary: Stop an environment + description: It returns 200 if the environment was successfully stopped. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: environment_id + description: The ID of the environment + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdEnvironmentsEnvironmentIdStop + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdEnvironmentsEnvironmentIdStop" + responses: + '201': + description: Stop an environment + schema: + "$ref": "#/definitions/API_Entities_Environment" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - environments + operationId: postApiV4ProjectsIdEnvironmentsEnvironmentIdStop + "/api/v4/projects/{id}/environments/stop_stale": + post: + summary: Stop stale environments + description: It returns `200` if stale environment check was scheduled successfully + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - name: postApiV4ProjectsIdEnvironmentsStopStale + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdEnvironmentsStopStale" + responses: + '201': + description: Stop stale environments + '400': + description: Bad request + '401': + description: Unauthorized + tags: + - environments + operationId: postApiV4ProjectsIdEnvironmentsStopStale + "/api/v4/projects/{id}/error_tracking/client_keys": + get: + summary: List project client keys + description: List all client keys. This feature was introduced in GitLab 14.3. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + responses: + '200': + description: List project client keys + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_ErrorTracking_ClientKey" + tags: + - error_tracking_client_keys + operationId: getApiV4ProjectsIdErrorTrackingClientKeys + post: + summary: Create a client key + description: Creates a new client key for a project. The public key attribute + is generated automatically.This feature was introduced in GitLab 14.3. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + responses: + '201': + description: Create a client key + schema: + "$ref": "#/definitions/API_Entities_ErrorTracking_ClientKey" + tags: + - error_tracking_client_keys + operationId: postApiV4ProjectsIdErrorTrackingClientKeys + "/api/v4/projects/{id}/error_tracking/client_keys/{key_id}": + delete: + summary: Delete a client key + description: Removes a client key from the project. This feature was introduced + in GitLab 14.3. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: key_id + type: integer + format: int32 + required: true + responses: + '204': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - error_tracking_client_keys + operationId: deleteApiV4ProjectsIdErrorTrackingClientKeysKeyId + "/api/v4/projects/{id}/error_tracking/settings": + get: + summary: Get Error Tracking settings + description: Get error tracking settings for the project. This feature was introduced + in GitLab 12.7. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + responses: + '200': + description: Get Error Tracking settings + schema: + "$ref": "#/definitions/API_Entities_ErrorTracking_ProjectSetting" + tags: + - error_tracking_project_settings + operationId: getApiV4ProjectsIdErrorTrackingSettings + patch: + summary: Enable or disable the Error Tracking project settings + description: The API allows you to enable or disable the Error Tracking settings + for a project.Only for users with the Maintainer role for the project. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - name: patchApiV4ProjectsIdErrorTrackingSettings + in: body + required: true + schema: + "$ref": "#/definitions/patchApiV4ProjectsIdErrorTrackingSettings" + responses: + '200': + description: Enable or disable the Error Tracking project settings + schema: + "$ref": "#/definitions/API_Entities_ErrorTracking_ProjectSetting" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - error_tracking_project_settings + operationId: patchApiV4ProjectsIdErrorTrackingSettings + put: + summary: Update Error Tracking project settings. Available in GitLab 15.10 and + later. + description: Update Error Tracking settings for a project. Only for users with + Maintainer role for the project. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - name: putApiV4ProjectsIdErrorTrackingSettings + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdErrorTrackingSettings" + responses: + '200': + description: Update Error Tracking project settings. Available in GitLab + 15.10 and later. + schema: + "$ref": "#/definitions/API_Entities_ErrorTracking_ProjectSetting" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - error_tracking_project_settings + operationId: putApiV4ProjectsIdErrorTrackingSettings + "/api/v4/projects/{id}/feature_flags": + get: + summary: List feature flags for a project + description: Gets all feature flags of the requested project. This feature was + introduced in GitLab 12.5. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: scope + description: 'The scope of feature flags, one of: `enabled`, `disabled`' + type: string + enum: + - enabled + - disabled + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List feature flags for a project + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_FeatureFlag" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - feature_flags + operationId: getApiV4ProjectsIdFeatureFlags + post: + summary: Create a new feature flag + description: Creates a new feature flag. This feature was introduced in GitLab + 12.5. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdFeatureFlags + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdFeatureFlags" + responses: + '201': + description: Create a new feature flag + schema: + "$ref": "#/definitions/API_Entities_FeatureFlag" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + tags: + - feature_flags + operationId: postApiV4ProjectsIdFeatureFlags + "/api/v4/projects/{id}/feature_flags/{feature_flag_name}": + get: + summary: Get a single feature flag + description: Gets a single feature flag. This feature was introduced in GitLab + 12.5. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: feature_flag_name + description: The name of the feature flag + type: string + required: true + responses: + '200': + description: Get a single feature flag + schema: + "$ref": "#/definitions/API_Entities_FeatureFlag" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - feature_flags + operationId: getApiV4ProjectsIdFeatureFlagsFeatureFlagName + put: + summary: Update a feature flag + description: Updates a feature flag. This feature was introduced in GitLab 13.2. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: feature_flag_name + description: The name of the feature flag + type: string + required: true + - name: putApiV4ProjectsIdFeatureFlagsFeatureFlagName + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdFeatureFlagsFeatureFlagName" + responses: + '200': + description: Update a feature flag + schema: + "$ref": "#/definitions/API_Entities_FeatureFlag" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - feature_flags + operationId: putApiV4ProjectsIdFeatureFlagsFeatureFlagName + delete: + summary: Delete a feature flag + description: Deletes a feature flag. This feature was introduced in GitLab 12.5. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: feature_flag_name + description: The name of the feature flag + type: string + required: true + responses: + '204': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - feature_flags + operationId: deleteApiV4ProjectsIdFeatureFlagsFeatureFlagName + "/api/v4/projects/{id}/feature_flags_user_lists": + get: + summary: List all feature flag user lists for a project + description: Gets all feature flag user lists for the requested project. This + feature was introduced in GitLab 12.10. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: search + description: Return user lists matching the search criteria + type: string + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List all feature flag user lists for a project + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_FeatureFlag_UserList" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - feature_flags_user_lists + operationId: getApiV4ProjectsIdFeatureFlagsUserLists + post: + summary: Create a feature flag user list + description: Creates a feature flag user list. This feature was introduced in + GitLab 12.10. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdFeatureFlagsUserLists + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdFeatureFlagsUserLists" + responses: + '201': + description: Create a feature flag user list + schema: + "$ref": "#/definitions/API_Entities_FeatureFlag_UserList" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - feature_flags_user_lists + operationId: postApiV4ProjectsIdFeatureFlagsUserLists + "/api/v4/projects/{id}/feature_flags_user_lists/{iid}": + get: + summary: Get a feature flag user list + description: Gets a feature flag user list. This feature was introduced in GitLab + 12.10. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: iid + description: The internal ID of the project's feature flag user list + type: string + required: true + responses: + '200': + description: Get a feature flag user list + schema: + "$ref": "#/definitions/API_Entities_FeatureFlag_UserList" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - feature_flags_user_lists + operationId: getApiV4ProjectsIdFeatureFlagsUserListsIid + put: + summary: Update a feature flag user list + description: Updates a feature flag user list. This feature was introduced in + GitLab 12.10. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: iid + description: The internal ID of the project's feature flag user list + type: string + required: true + - name: putApiV4ProjectsIdFeatureFlagsUserListsIid + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdFeatureFlagsUserListsIid" + responses: + '200': + description: Update a feature flag user list + schema: + "$ref": "#/definitions/API_Entities_FeatureFlag_UserList" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - feature_flags_user_lists + operationId: putApiV4ProjectsIdFeatureFlagsUserListsIid + delete: + summary: Delete feature flag user list + description: Deletes a feature flag user list. This feature was introduced in + GitLab 12.10. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: iid + description: The internal ID of the project's feature flag user list + type: string + required: true + responses: + '204': + description: Delete feature flag user list + '401': + description: Unauthorized + '404': + description: Not found + '409': + description: Conflict + tags: + - feature_flags_user_lists + operationId: deleteApiV4ProjectsIdFeatureFlagsUserListsIid + "/api/v4/projects/{id}/repository/files/{file_path}/blame": + head: + description: Get blame file metadata from repository + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + example: gitlab-org/gitlab + - in: path + name: file_path + description: The url encoded path to the file. + type: string + required: true + example: lib%2Fclass%2Erb + - in: query + name: ref + description: The name of branch, tag or commit + type: string + required: true + example: main + responses: + '200': + description: Get blame file metadata from repository + tags: + - projects + operationId: headApiV4ProjectsIdRepositoryFilesFilePathBlame + get: + description: Get blame file from the repository + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + example: gitlab-org/gitlab + - in: path + name: file_path + description: The url encoded path to the file. + type: string + required: true + example: lib%2Fclass%2Erb + - in: query + name: ref + description: The name of branch, tag or commit + type: string + required: true + example: main + - in: query + name: range[start] + description: The first line of the range to blame + type: integer + format: int32 + required: true + - in: query + name: range[end] + description: The last line of the range to blame + type: integer + format: int32 + required: true + responses: + '200': + description: Get blame file from the repository + tags: + - projects + operationId: getApiV4ProjectsIdRepositoryFilesFilePathBlame + "/api/v4/projects/{id}/repository/files/{file_path}/raw": + get: + description: Get raw file contents from the repository + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + example: gitlab-org/gitlab + - in: path + name: file_path + description: The url encoded path to the file. + type: string + required: true + example: lib%2Fclass%2Erb + - in: query + name: ref + description: The name of branch, tag or commit + type: string + required: false + example: main + - in: query + name: lfs + description: Retrieve binary data for a file that is an lfs pointer + type: boolean + default: false + required: false + responses: + '200': + description: Get raw file contents from the repository + schema: + type: file + tags: + - projects + operationId: getApiV4ProjectsIdRepositoryFilesFilePathRaw + "/api/v4/projects/{id}/repository/files/{file_path}": + head: + description: Get file metadata from repository + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + example: gitlab-org/gitlab + - in: path + name: file_path + description: The url encoded path to the file. + type: string + required: true + example: lib%2Fclass%2Erb + - in: query + name: ref + description: The name of branch, tag or commit + type: string + required: true + example: main + responses: + '200': + description: Get file metadata from repository + tags: + - projects + operationId: headApiV4ProjectsIdRepositoryFilesFilePath + get: + description: Get a file from the repository + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + example: gitlab-org/gitlab + - in: path + name: file_path + description: The url encoded path to the file. + type: string + required: true + example: lib%2Fclass%2Erb + - in: query + name: ref + description: The name of branch, tag or commit + type: string + required: true + example: main + responses: + '200': + description: Get a file from the repository + tags: + - projects + operationId: getApiV4ProjectsIdRepositoryFilesFilePath + post: + description: Create new file in repository + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + example: gitlab-org/gitlab + - in: path + name: file_path + description: The url encoded path to the file. + type: string + required: true + example: lib%2Fclass%2Erb + - name: postApiV4ProjectsIdRepositoryFilesFilePath + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdRepositoryFilesFilePath" + responses: + '201': + description: Create new file in repository + tags: + - projects + operationId: postApiV4ProjectsIdRepositoryFilesFilePath + put: + description: Update existing file in repository + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + example: gitlab-org/gitlab + - in: path + name: file_path + description: The url encoded path to the file. + type: string + required: true + example: lib%2Fclass%2Erb + - name: putApiV4ProjectsIdRepositoryFilesFilePath + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdRepositoryFilesFilePath" + responses: + '200': + description: Update existing file in repository + tags: + - projects + operationId: putApiV4ProjectsIdRepositoryFilesFilePath + delete: + description: Delete an existing file in repository + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + example: gitlab-org/gitlab + - in: path + name: file_path + description: The url encoded path to the file. + type: string + required: true + example: lib%2Fclass%2Erb + - in: query + name: branch + description: Name of the branch to commit into. To create a new branch, also + provide `start_branch`. + type: string + required: true + example: main + - in: query + name: commit_message + description: Commit message + type: string + required: true + example: Initial commit + - in: query + name: start_branch + description: Name of the branch to start the new commit from + type: string + required: false + example: main + - in: query + name: author_email + description: The email of the author + type: string + required: false + example: johndoe@example.com + - in: query + name: author_name + description: The name of the author + type: string + required: false + example: John Doe + responses: + '204': + description: Delete an existing file in repository + tags: + - projects + operationId: deleteApiV4ProjectsIdRepositoryFilesFilePath + "/api/v4/projects/{id}/freeze_periods": + get: + summary: List freeze periods + description: Paginated list of Freeze Periods, sorted by created_at in ascending + order. This feature was introduced in GitLab 13.0. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List freeze periods + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_FreezePeriod" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - freeze_periods + operationId: getApiV4ProjectsIdFreezePeriods + post: + summary: Create a freeze period + description: Creates a freeze period. This feature was introduced in GitLab + 13.0. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdFreezePeriods + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdFreezePeriods" + responses: + '201': + description: Create a freeze period + schema: + "$ref": "#/definitions/API_Entities_FreezePeriod" + '400': + description: Bad request + '401': + description: Unauthorized + tags: + - freeze_periods + operationId: postApiV4ProjectsIdFreezePeriods + "/api/v4/projects/{id}/freeze_periods/{freeze_period_id}": + get: + summary: Get a freeze period + description: Get a freeze period for the given `freeze_period_id`. This feature + was introduced in GitLab 13.0. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: freeze_period_id + description: The ID of the freeze period + type: integer + format: int32 + required: true + responses: + '200': + description: Get a freeze period + schema: + "$ref": "#/definitions/API_Entities_FreezePeriod" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - freeze_periods + operationId: getApiV4ProjectsIdFreezePeriodsFreezePeriodId + put: + summary: Update a freeze period + description: Updates a freeze period for the given `freeze_period_id`. This + feature was introduced in GitLab 13.0. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: freeze_period_id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdFreezePeriodsFreezePeriodId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdFreezePeriodsFreezePeriodId" + responses: + '200': + description: Update a freeze period + schema: + "$ref": "#/definitions/API_Entities_FreezePeriod" + '400': + description: Bad request + '401': + description: Unauthorized + tags: + - freeze_periods + operationId: putApiV4ProjectsIdFreezePeriodsFreezePeriodId + delete: + summary: Delete a freeze period + description: Deletes a freeze period for the given `freeze_period_id`. This + feature was introduced in GitLab 13.0. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: freeze_period_id + description: The ID of the freeze period + type: integer + format: int32 + required: true + responses: + '401': + description: Unauthorized + '204': + description: Delete a freeze period + schema: + "$ref": "#/definitions/API_Entities_FreezePeriod" + tags: + - freeze_periods + operationId: deleteApiV4ProjectsIdFreezePeriodsFreezePeriodId + "/api/v4/projects/{id}/packages/generic/{package_name}/*package_version/(*path/){file_name}/authorize": + put: + summary: Workhorse authorize generic package file + description: This feature was introduced in GitLab 13.5 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + - in: path + name: file_name + description: Package file name + type: string + required: true + - name: putApiV4ProjectsIdPackagesGenericPackageName*packageVersion(*path)FileNameAuthorize + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesGenericPackageName*packageVersion(*path)FileNameAuthorize" + responses: + '200': + description: Workhorse authorize generic package file + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - generic_packages + operationId: putApiV4ProjectsIdPackagesGenericPackageName*packageVersion(*path)FileNameAuthorize + "/api/v4/projects/{id}/packages/generic/{package_name}/*package_version/(*path/){file_name}": + put: + summary: Upload package file + description: This feature was introduced in GitLab 13.5 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + - in: path + name: file_name + description: Package file name + type: string + required: true + - name: putApiV4ProjectsIdPackagesGenericPackageName*packageVersion(*path)FileName + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesGenericPackageName*packageVersion(*path)FileName" + responses: + '200': + description: Upload package file + '201': + description: Upload package file + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - generic_packages + operationId: putApiV4ProjectsIdPackagesGenericPackageName*packageVersion(*path)FileName + get: + summary: Download package file + description: This feature was introduced in GitLab 13.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + - in: query + name: package_version + description: Package version + type: string + required: true + - in: query + name: path + description: File directory path + type: string + required: false + - in: path + name: file_name + description: Package file name + type: string + required: true + responses: + '200': + description: Download package file + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - generic_packages + operationId: getApiV4ProjectsIdPackagesGenericPackageName*packageVersion(*path)FileName + "/api/v4/projects/{id}/packages/go/*module_name/@v/list": + get: + summary: List + description: Get all tagged versions for a given Go module.See `go help goproxy`, + GET $GOPROXY//@v/list. This feature was introduced in GitLab 13.1. + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID or full path of a project + type: string + required: true + - in: query + name: module_name + description: The name of the Go module + type: string + required: true + responses: + '200': + description: List + tags: + - go_proxy + operationId: getApiV4ProjectsIdPackagesGo*moduleName@vList + "/api/v4/projects/{id}/packages/go/*module_name/@v/{module_version}.info": + get: + summary: Version metadata + description: Get all tagged versions for a given Go module.See `go help goproxy`, + GET $GOPROXY//@v/.info. This feature was introduced in GitLab + 13.1 + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID or full path of a project + type: string + required: true + - in: query + name: module_name + description: The name of the Go module + type: string + required: true + - in: path + name: module_version + description: The version of the Go module + type: string + required: true + responses: + '200': + description: Version metadata + schema: + "$ref": "#/definitions/API_Entities_GoModuleVersion" + tags: + - go_proxy + operationId: getApiV4ProjectsIdPackagesGo*moduleName@vModuleVersionInfo + "/api/v4/projects/{id}/packages/go/*module_name/@v/{module_version}.mod": + get: + summary: Download module file + description: Get the module file of a given module version.See `go help goproxy`, + GET $GOPROXY//@v/.mod. This feature was introduced in GitLab + 13.1. + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID or full path of a project + type: string + required: true + - in: query + name: module_name + description: The name of the Go module + type: string + required: true + - in: path + name: module_version + description: The version of the Go module + type: string + required: true + responses: + '200': + description: Download module file + tags: + - go_proxy + operationId: getApiV4ProjectsIdPackagesGo*moduleName@vModuleVersionMod + "/api/v4/projects/{id}/packages/go/*module_name/@v/{module_version}.zip": + get: + summary: Download module source + description: Get a zip of the source of the given module version.See `go help + goproxy`, GET $GOPROXY//@v/.zip. This feature was introduced + in GitLab 13.1. + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID or full path of a project + type: string + required: true + - in: query + name: module_name + description: The name of the Go module + type: string + required: true + - in: path + name: module_version + description: The version of the Go module + type: string + required: true + responses: + '200': + description: Download module source + tags: + - go_proxy + operationId: getApiV4ProjectsIdPackagesGo*moduleName@vModuleVersionZip + "/api/v4/projects/{id}/packages/helm/{channel}/index.yaml": + get: + summary: Download a chart index + description: This feature was introduced in GitLab 14.0 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or full path of a project + type: integer + format: int32 + required: true + - in: path + name: channel + description: Helm channel + type: string + required: true + example: stable + responses: + '200': + description: Download a chart index + '401': + description: Unauthorized + '403': + description: Forbidden + tags: + - helm_packages + operationId: getApiV4ProjectsIdPackagesHelmChannelIndexYaml + "/api/v4/projects/{id}/packages/helm/{channel}/charts/{file_name}.tgz": + get: + summary: Download a chart + description: This feature was introduced in GitLab 14.0 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or full path of a project + type: integer + format: int32 + required: true + - in: path + name: channel + description: Helm channel + type: string + required: true + example: stable + - in: path + name: file_name + description: Helm package file name + type: string + required: true + example: mychart + responses: + '200': + description: Download a chart + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - helm_packages + operationId: getApiV4ProjectsIdPackagesHelmChannelChartsFileNameTgz + "/api/v4/projects/{id}/packages/helm/api/{channel}/charts/authorize": + post: + summary: Authorize a chart upload from workhorse + description: This feature was introduced in GitLab 14.0 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or full path of a project + type: integer + format: int32 + required: true + - in: path + name: channel + description: Helm channel + type: string + required: true + example: stable + responses: + '200': + description: Authorize a chart upload from workhorse + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - helm_packages + operationId: postApiV4ProjectsIdPackagesHelmApiChannelChartsAuthorize + "/api/v4/projects/{id}/packages/helm/api/{channel}/charts": + post: + summary: Upload a chart + description: This feature was introduced in GitLab 14.0 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or full path of a project + type: integer + format: int32 + required: true + - in: path + name: channel + description: Helm channel + type: string + required: true + example: stable + - name: postApiV4ProjectsIdPackagesHelmApiChannelCharts + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdPackagesHelmApiChannelCharts" + responses: + '201': + description: Upload a chart + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - helm_packages + operationId: postApiV4ProjectsIdPackagesHelmApiChannelCharts + "/api/v4/projects/{id}/services": + get: + summary: List all active integrations + description: Get a list of all active integrations. + produces: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: List all active integrations + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - integrations + operationId: getApiV4ProjectsIdServices + "/api/v4/projects/{id}/services/apple-app-store": + put: + summary: Create/Edit Apple App Store integration + description: Set Apple App Store integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesAppleAppStore + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesAppleAppStore" + responses: + '200': + description: Create/Edit Apple App Store integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesAppleAppStore + "/api/v4/projects/{id}/services/asana": + put: + summary: Create/Edit Asana integration + description: Set Asana integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesAsana + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesAsana" + responses: + '200': + description: Create/Edit Asana integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesAsana + "/api/v4/projects/{id}/services/assembla": + put: + summary: Create/Edit Assembla integration + description: Set Assembla integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesAssembla + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesAssembla" + responses: + '200': + description: Create/Edit Assembla integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesAssembla + "/api/v4/projects/{id}/services/bamboo": + put: + summary: Create/Edit Bamboo integration + description: Set Bamboo integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesBamboo + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesBamboo" + responses: + '200': + description: Create/Edit Bamboo integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesBamboo + "/api/v4/projects/{id}/services/bugzilla": + put: + summary: Create/Edit Bugzilla integration + description: Set Bugzilla integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesBugzilla + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesBugzilla" + responses: + '200': + description: Create/Edit Bugzilla integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesBugzilla + "/api/v4/projects/{id}/services/buildkite": + put: + summary: Create/Edit Buildkite integration + description: Set Buildkite integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesBuildkite + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesBuildkite" + responses: + '200': + description: Create/Edit Buildkite integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesBuildkite + "/api/v4/projects/{id}/services/campfire": + put: + summary: Create/Edit Campfire integration + description: Set Campfire integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesCampfire + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesCampfire" + responses: + '200': + description: Create/Edit Campfire integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesCampfire + "/api/v4/projects/{id}/services/confluence": + put: + summary: Create/Edit Confluence integration + description: Set Confluence integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesConfluence + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesConfluence" + responses: + '200': + description: Create/Edit Confluence integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesConfluence + "/api/v4/projects/{id}/services/custom-issue-tracker": + put: + summary: Create/Edit Custom Issue Tracker integration + description: Set Custom Issue Tracker integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesCustomIssueTracker + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesCustomIssueTracker" + responses: + '200': + description: Create/Edit Custom Issue Tracker integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesCustomIssueTracker + "/api/v4/projects/{id}/services/datadog": + put: + summary: Create/Edit Datadog integration + description: Set Datadog integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesDatadog + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesDatadog" + responses: + '200': + description: Create/Edit Datadog integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesDatadog + "/api/v4/projects/{id}/services/diffblue-cover": + put: + summary: Create/Edit Diffblue Cover integration + description: Set Diffblue Cover integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesDiffblueCover + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesDiffblueCover" + responses: + '200': + description: Create/Edit Diffblue Cover integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesDiffblueCover + "/api/v4/projects/{id}/services/discord": + put: + summary: Create/Edit Discord integration + description: Set Discord integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesDiscord + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesDiscord" + responses: + '200': + description: Create/Edit Discord integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesDiscord + "/api/v4/projects/{id}/services/drone-ci": + put: + summary: Create/Edit Drone Ci integration + description: Set Drone Ci integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesDroneCi + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesDroneCi" + responses: + '200': + description: Create/Edit Drone Ci integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesDroneCi + "/api/v4/projects/{id}/services/emails-on-push": + put: + summary: Create/Edit Emails On Push integration + description: Set Emails On Push integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesEmailsOnPush + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesEmailsOnPush" + responses: + '200': + description: Create/Edit Emails On Push integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesEmailsOnPush + "/api/v4/projects/{id}/services/external-wiki": + put: + summary: Create/Edit External Wiki integration + description: Set External Wiki integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesExternalWiki + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesExternalWiki" + responses: + '200': + description: Create/Edit External Wiki integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesExternalWiki + "/api/v4/projects/{id}/services/gitlab-slack-application": + put: + summary: Create/Edit Gitlab Slack Application integration + description: Set Gitlab Slack Application integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesGitlabSlackApplication + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesGitlabSlackApplication" + responses: + '200': + description: Create/Edit Gitlab Slack Application integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesGitlabSlackApplication + "/api/v4/projects/{id}/services/google-play": + put: + summary: Create/Edit Google Play integration + description: Set Google Play integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesGooglePlay + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesGooglePlay" + responses: + '200': + description: Create/Edit Google Play integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesGooglePlay + "/api/v4/projects/{id}/services/hangouts-chat": + put: + summary: Create/Edit Hangouts Chat integration + description: Set Hangouts Chat integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesHangoutsChat + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesHangoutsChat" + responses: + '200': + description: Create/Edit Hangouts Chat integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesHangoutsChat + "/api/v4/projects/{id}/services/harbor": + put: + summary: Create/Edit Harbor integration + description: Set Harbor integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesHarbor + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesHarbor" + responses: + '200': + description: Create/Edit Harbor integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesHarbor + "/api/v4/projects/{id}/services/irker": + put: + summary: Create/Edit Irker integration + description: Set Irker integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesIrker + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesIrker" + responses: + '200': + description: Create/Edit Irker integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesIrker + "/api/v4/projects/{id}/services/jenkins": + put: + summary: Create/Edit Jenkins integration + description: Set Jenkins integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesJenkins + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesJenkins" + responses: + '200': + description: Create/Edit Jenkins integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesJenkins + "/api/v4/projects/{id}/services/jira": + put: + summary: Create/Edit Jira integration + description: Set Jira integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesJira + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesJira" + responses: + '200': + description: Create/Edit Jira integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesJira + "/api/v4/projects/{id}/services/jira-cloud-app": + put: + summary: Create/Edit Jira Cloud App integration + description: Set Jira Cloud App integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesJiraCloudApp + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesJiraCloudApp" + responses: + '200': + description: Create/Edit Jira Cloud App integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesJiraCloudApp + "/api/v4/projects/{id}/services/matrix": + put: + summary: Create/Edit Matrix integration + description: Set Matrix integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesMatrix + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesMatrix" + responses: + '200': + description: Create/Edit Matrix integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesMatrix + "/api/v4/projects/{id}/services/mattermost-slash-commands": + put: + summary: Create/Edit Mattermost Slash Commands integration + description: Set Mattermost Slash Commands integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesMattermostSlashCommands + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesMattermostSlashCommands" + responses: + '200': + description: Create/Edit Mattermost Slash Commands integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesMattermostSlashCommands + "/api/v4/projects/{id}/services/slack-slash-commands": + put: + summary: Create/Edit Slack Slash Commands integration + description: Set Slack Slash Commands integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesSlackSlashCommands + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesSlackSlashCommands" + responses: + '200': + description: Create/Edit Slack Slash Commands integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesSlackSlashCommands + "/api/v4/projects/{id}/services/packagist": + put: + summary: Create/Edit Packagist integration + description: Set Packagist integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesPackagist + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesPackagist" + responses: + '200': + description: Create/Edit Packagist integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesPackagist + "/api/v4/projects/{id}/services/phorge": + put: + summary: Create/Edit Phorge integration + description: Set Phorge integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesPhorge + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesPhorge" + responses: + '200': + description: Create/Edit Phorge integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesPhorge + "/api/v4/projects/{id}/services/pipelines-email": + put: + summary: Create/Edit Pipelines Email integration + description: Set Pipelines Email integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesPipelinesEmail + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesPipelinesEmail" + responses: + '200': + description: Create/Edit Pipelines Email integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesPipelinesEmail + "/api/v4/projects/{id}/services/pivotaltracker": + put: + summary: Create/Edit Pivotaltracker integration + description: Set Pivotaltracker integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesPivotaltracker + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesPivotaltracker" + responses: + '200': + description: Create/Edit Pivotaltracker integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesPivotaltracker + "/api/v4/projects/{id}/services/pumble": + put: + summary: Create/Edit Pumble integration + description: Set Pumble integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesPumble + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesPumble" + responses: + '200': + description: Create/Edit Pumble integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesPumble + "/api/v4/projects/{id}/services/pushover": + put: + summary: Create/Edit Pushover integration + description: Set Pushover integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesPushover + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesPushover" + responses: + '200': + description: Create/Edit Pushover integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesPushover + "/api/v4/projects/{id}/services/redmine": + put: + summary: Create/Edit Redmine integration + description: Set Redmine integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesRedmine + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesRedmine" + responses: + '200': + description: Create/Edit Redmine integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesRedmine + "/api/v4/projects/{id}/services/ewm": + put: + summary: Create/Edit Ewm integration + description: Set Ewm integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesEwm + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesEwm" + responses: + '200': + description: Create/Edit Ewm integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesEwm + "/api/v4/projects/{id}/services/youtrack": + put: + summary: Create/Edit Youtrack integration + description: Set Youtrack integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesYoutrack + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesYoutrack" + responses: + '200': + description: Create/Edit Youtrack integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesYoutrack + "/api/v4/projects/{id}/services/clickup": + put: + summary: Create/Edit Clickup integration + description: Set Clickup integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesClickup + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesClickup" + responses: + '200': + description: Create/Edit Clickup integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesClickup + "/api/v4/projects/{id}/services/slack": + put: + summary: Create/Edit Slack integration + description: Set Slack integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesSlack + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesSlack" + responses: + '200': + description: Create/Edit Slack integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesSlack + "/api/v4/projects/{id}/services/microsoft-teams": + put: + summary: Create/Edit Microsoft Teams integration + description: Set Microsoft Teams integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesMicrosoftTeams + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesMicrosoftTeams" + responses: + '200': + description: Create/Edit Microsoft Teams integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesMicrosoftTeams + "/api/v4/projects/{id}/services/mattermost": + put: + summary: Create/Edit Mattermost integration + description: Set Mattermost integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesMattermost + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesMattermost" + responses: + '200': + description: Create/Edit Mattermost integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesMattermost + "/api/v4/projects/{id}/services/teamcity": + put: + summary: Create/Edit Teamcity integration + description: Set Teamcity integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesTeamcity + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesTeamcity" + responses: + '200': + description: Create/Edit Teamcity integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesTeamcity + "/api/v4/projects/{id}/services/telegram": + put: + summary: Create/Edit Telegram integration + description: Set Telegram integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesTelegram + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesTelegram" + responses: + '200': + description: Create/Edit Telegram integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesTelegram + "/api/v4/projects/{id}/services/unify-circuit": + put: + summary: Create/Edit Unify Circuit integration + description: Set Unify Circuit integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesUnifyCircuit + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesUnifyCircuit" + responses: + '200': + description: Create/Edit Unify Circuit integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesUnifyCircuit + "/api/v4/projects/{id}/services/webex-teams": + put: + summary: Create/Edit Webex Teams integration + description: Set Webex Teams integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesWebexTeams + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesWebexTeams" + responses: + '200': + description: Create/Edit Webex Teams integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesWebexTeams + "/api/v4/projects/{id}/services/zentao": + put: + summary: Create/Edit Zentao integration + description: Set Zentao integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesZentao + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesZentao" + responses: + '200': + description: Create/Edit Zentao integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesZentao + "/api/v4/projects/{id}/services/squash-tm": + put: + summary: Create/Edit Squash Tm integration + description: Set Squash Tm integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesSquashTm + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesSquashTm" + responses: + '200': + description: Create/Edit Squash Tm integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesSquashTm + "/api/v4/projects/{id}/services/github": + put: + summary: Create/Edit Github integration + description: Set Github integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesGithub + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesGithub" + responses: + '200': + description: Create/Edit Github integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesGithub + "/api/v4/projects/{id}/services/git-guardian": + put: + summary: Create/Edit Git Guardian integration + description: Set Git Guardian integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesGitGuardian + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesGitGuardian" + responses: + '200': + description: Create/Edit Git Guardian integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesGitGuardian + "/api/v4/projects/{id}/services/google-cloud-platform-artifact-registry": + put: + summary: Create/Edit Google Cloud Platform Artifact Registry integration + description: Set Google Cloud Platform Artifact Registry integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesGoogleCloudPlatformArtifactRegistry + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesGoogleCloudPlatformArtifactRegistry" + responses: + '200': + description: Create/Edit Google Cloud Platform Artifact Registry integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesGoogleCloudPlatformArtifactRegistry + "/api/v4/projects/{id}/services/google-cloud-platform-workload-identity-federation": + put: + summary: Create/Edit Google Cloud Platform Workload Identity Federation integration + description: Set Google Cloud Platform Workload Identity Federation integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesGoogleCloudPlatformWorkloadIdentityFederation + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesGoogleCloudPlatformWorkloadIdentityFederation" + responses: + '200': + description: Create/Edit Google Cloud Platform Workload Identity Federation + integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesGoogleCloudPlatformWorkloadIdentityFederation + "/api/v4/projects/{id}/services/mock-ci": + put: + summary: Create/Edit Mock Ci integration + description: Set Mock Ci integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesMockCi + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesMockCi" + responses: + '200': + description: Create/Edit Mock Ci integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesMockCi + "/api/v4/projects/{id}/services/mock-monitoring": + put: + summary: Create/Edit Mock Monitoring integration + description: Set Mock Monitoring integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdServicesMockMonitoring + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdServicesMockMonitoring" + responses: + '200': + description: Create/Edit Mock Monitoring integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdServicesMockMonitoring + "/api/v4/projects/{id}/services/{slug}": + delete: + summary: Disable an integration + description: Disable the integration. Integration settings are preserved. + produces: + - application/json + parameters: + - in: path + name: slug + description: The name of the integration + type: string + enum: + - apple-app-store + - asana + - assembla + - bamboo + - bugzilla + - buildkite + - campfire + - confluence + - custom-issue-tracker + - datadog + - diffblue-cover + - discord + - drone-ci + - emails-on-push + - external-wiki + - gitlab-slack-application + - google-play + - hangouts-chat + - harbor + - irker + - jenkins + - jira + - jira-cloud-app + - matrix + - mattermost-slash-commands + - slack-slash-commands + - packagist + - phorge + - pipelines-email + - pivotaltracker + - pumble + - pushover + - redmine + - ewm + - youtrack + - clickup + - slack + - microsoft-teams + - mattermost + - teamcity + - telegram + - unify-circuit + - webex-teams + - zentao + - squash-tm + - github + - git-guardian + - google-cloud-platform-artifact-registry + - google-cloud-platform-workload-identity-federation + - mock-ci + - mock-monitoring + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '204': + description: Disable an integration + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - integrations + operationId: deleteApiV4ProjectsIdServicesSlug + get: + summary: Get an integration settings + description: Get the integration settings. + produces: + - application/json + parameters: + - in: path + name: slug + description: The name of the integration + type: string + enum: + - apple-app-store + - asana + - assembla + - bamboo + - bugzilla + - buildkite + - campfire + - confluence + - custom-issue-tracker + - datadog + - diffblue-cover + - discord + - drone-ci + - emails-on-push + - external-wiki + - gitlab-slack-application + - google-play + - hangouts-chat + - harbor + - irker + - jenkins + - jira + - jira-cloud-app + - matrix + - mattermost-slash-commands + - slack-slash-commands + - packagist + - phorge + - pipelines-email + - pivotaltracker + - pumble + - pushover + - redmine + - ewm + - youtrack + - clickup + - slack + - microsoft-teams + - mattermost + - teamcity + - telegram + - unify-circuit + - webex-teams + - zentao + - squash-tm + - github + - git-guardian + - google-cloud-platform-artifact-registry + - google-cloud-platform-workload-identity-federation + - mock-ci + - mock-monitoring + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get an integration settings + schema: + "$ref": "#/definitions/API_Entities_Integration" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - integrations + operationId: getApiV4ProjectsIdServicesSlug + "/api/v4/projects/{id}/services/mattermost_slash_commands/trigger": + post: + summary: Trigger a slash command for mattermost-slash-commands + description: Added in GitLab 8.13 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdServicesMattermostSlashCommandsTrigger + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdServicesMattermostSlashCommandsTrigger" + responses: + '201': + description: Trigger a slash command for mattermost-slash-commands + '401': + description: Unauthorized + '404': + description: Not found + tags: + - integrations + operationId: postApiV4ProjectsIdServicesMattermostSlashCommandsTrigger + "/api/v4/projects/{id}/services/slack_slash_commands/trigger": + post: + summary: Trigger a slash command for slack-slash-commands + description: Added in GitLab 8.13 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdServicesSlackSlashCommandsTrigger + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdServicesSlackSlashCommandsTrigger" + responses: + '201': + description: Trigger a slash command for slack-slash-commands + '401': + description: Unauthorized + '404': + description: Not found + tags: + - integrations + operationId: postApiV4ProjectsIdServicesSlackSlashCommandsTrigger + "/api/v4/projects/{id}/integrations": + get: + summary: List all active integrations + description: Get a list of all active integrations. + produces: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: List all active integrations + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - integrations + operationId: getApiV4ProjectsIdIntegrations + "/api/v4/projects/{id}/integrations/apple-app-store": + put: + summary: Create/Edit Apple App Store integration + description: Set Apple App Store integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsAppleAppStore + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsAppleAppStore" + responses: + '200': + description: Create/Edit Apple App Store integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsAppleAppStore + "/api/v4/projects/{id}/integrations/asana": + put: + summary: Create/Edit Asana integration + description: Set Asana integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsAsana + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsAsana" + responses: + '200': + description: Create/Edit Asana integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsAsana + "/api/v4/projects/{id}/integrations/assembla": + put: + summary: Create/Edit Assembla integration + description: Set Assembla integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsAssembla + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsAssembla" + responses: + '200': + description: Create/Edit Assembla integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsAssembla + "/api/v4/projects/{id}/integrations/bamboo": + put: + summary: Create/Edit Bamboo integration + description: Set Bamboo integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsBamboo + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsBamboo" + responses: + '200': + description: Create/Edit Bamboo integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsBamboo + "/api/v4/projects/{id}/integrations/bugzilla": + put: + summary: Create/Edit Bugzilla integration + description: Set Bugzilla integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsBugzilla + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsBugzilla" + responses: + '200': + description: Create/Edit Bugzilla integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsBugzilla + "/api/v4/projects/{id}/integrations/buildkite": + put: + summary: Create/Edit Buildkite integration + description: Set Buildkite integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsBuildkite + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsBuildkite" + responses: + '200': + description: Create/Edit Buildkite integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsBuildkite + "/api/v4/projects/{id}/integrations/campfire": + put: + summary: Create/Edit Campfire integration + description: Set Campfire integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsCampfire + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsCampfire" + responses: + '200': + description: Create/Edit Campfire integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsCampfire + "/api/v4/projects/{id}/integrations/confluence": + put: + summary: Create/Edit Confluence integration + description: Set Confluence integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsConfluence + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsConfluence" + responses: + '200': + description: Create/Edit Confluence integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsConfluence + "/api/v4/projects/{id}/integrations/custom-issue-tracker": + put: + summary: Create/Edit Custom Issue Tracker integration + description: Set Custom Issue Tracker integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsCustomIssueTracker + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsCustomIssueTracker" + responses: + '200': + description: Create/Edit Custom Issue Tracker integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsCustomIssueTracker + "/api/v4/projects/{id}/integrations/datadog": + put: + summary: Create/Edit Datadog integration + description: Set Datadog integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsDatadog + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsDatadog" + responses: + '200': + description: Create/Edit Datadog integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsDatadog + "/api/v4/projects/{id}/integrations/diffblue-cover": + put: + summary: Create/Edit Diffblue Cover integration + description: Set Diffblue Cover integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsDiffblueCover + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsDiffblueCover" + responses: + '200': + description: Create/Edit Diffblue Cover integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsDiffblueCover + "/api/v4/projects/{id}/integrations/discord": + put: + summary: Create/Edit Discord integration + description: Set Discord integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsDiscord + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsDiscord" + responses: + '200': + description: Create/Edit Discord integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsDiscord + "/api/v4/projects/{id}/integrations/drone-ci": + put: + summary: Create/Edit Drone Ci integration + description: Set Drone Ci integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsDroneCi + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsDroneCi" + responses: + '200': + description: Create/Edit Drone Ci integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsDroneCi + "/api/v4/projects/{id}/integrations/emails-on-push": + put: + summary: Create/Edit Emails On Push integration + description: Set Emails On Push integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsEmailsOnPush + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsEmailsOnPush" + responses: + '200': + description: Create/Edit Emails On Push integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsEmailsOnPush + "/api/v4/projects/{id}/integrations/external-wiki": + put: + summary: Create/Edit External Wiki integration + description: Set External Wiki integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsExternalWiki + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsExternalWiki" + responses: + '200': + description: Create/Edit External Wiki integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsExternalWiki + "/api/v4/projects/{id}/integrations/gitlab-slack-application": + put: + summary: Create/Edit Gitlab Slack Application integration + description: Set Gitlab Slack Application integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsGitlabSlackApplication + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsGitlabSlackApplication" + responses: + '200': + description: Create/Edit Gitlab Slack Application integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsGitlabSlackApplication + "/api/v4/projects/{id}/integrations/google-play": + put: + summary: Create/Edit Google Play integration + description: Set Google Play integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsGooglePlay + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsGooglePlay" + responses: + '200': + description: Create/Edit Google Play integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsGooglePlay + "/api/v4/projects/{id}/integrations/hangouts-chat": + put: + summary: Create/Edit Hangouts Chat integration + description: Set Hangouts Chat integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsHangoutsChat + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsHangoutsChat" + responses: + '200': + description: Create/Edit Hangouts Chat integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsHangoutsChat + "/api/v4/projects/{id}/integrations/harbor": + put: + summary: Create/Edit Harbor integration + description: Set Harbor integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsHarbor + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsHarbor" + responses: + '200': + description: Create/Edit Harbor integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsHarbor + "/api/v4/projects/{id}/integrations/irker": + put: + summary: Create/Edit Irker integration + description: Set Irker integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsIrker + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsIrker" + responses: + '200': + description: Create/Edit Irker integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsIrker + "/api/v4/projects/{id}/integrations/jenkins": + put: + summary: Create/Edit Jenkins integration + description: Set Jenkins integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsJenkins + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsJenkins" + responses: + '200': + description: Create/Edit Jenkins integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsJenkins + "/api/v4/projects/{id}/integrations/jira": + put: + summary: Create/Edit Jira integration + description: Set Jira integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsJira + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsJira" + responses: + '200': + description: Create/Edit Jira integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsJira + "/api/v4/projects/{id}/integrations/jira-cloud-app": + put: + summary: Create/Edit Jira Cloud App integration + description: Set Jira Cloud App integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsJiraCloudApp + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsJiraCloudApp" + responses: + '200': + description: Create/Edit Jira Cloud App integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsJiraCloudApp + "/api/v4/projects/{id}/integrations/matrix": + put: + summary: Create/Edit Matrix integration + description: Set Matrix integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsMatrix + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsMatrix" + responses: + '200': + description: Create/Edit Matrix integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsMatrix + "/api/v4/projects/{id}/integrations/mattermost-slash-commands": + put: + summary: Create/Edit Mattermost Slash Commands integration + description: Set Mattermost Slash Commands integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsMattermostSlashCommands + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsMattermostSlashCommands" + responses: + '200': + description: Create/Edit Mattermost Slash Commands integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsMattermostSlashCommands + "/api/v4/projects/{id}/integrations/slack-slash-commands": + put: + summary: Create/Edit Slack Slash Commands integration + description: Set Slack Slash Commands integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsSlackSlashCommands + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsSlackSlashCommands" + responses: + '200': + description: Create/Edit Slack Slash Commands integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsSlackSlashCommands + "/api/v4/projects/{id}/integrations/packagist": + put: + summary: Create/Edit Packagist integration + description: Set Packagist integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsPackagist + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsPackagist" + responses: + '200': + description: Create/Edit Packagist integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsPackagist + "/api/v4/projects/{id}/integrations/phorge": + put: + summary: Create/Edit Phorge integration + description: Set Phorge integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsPhorge + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsPhorge" + responses: + '200': + description: Create/Edit Phorge integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsPhorge + "/api/v4/projects/{id}/integrations/pipelines-email": + put: + summary: Create/Edit Pipelines Email integration + description: Set Pipelines Email integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsPipelinesEmail + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsPipelinesEmail" + responses: + '200': + description: Create/Edit Pipelines Email integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsPipelinesEmail + "/api/v4/projects/{id}/integrations/pivotaltracker": + put: + summary: Create/Edit Pivotaltracker integration + description: Set Pivotaltracker integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsPivotaltracker + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsPivotaltracker" + responses: + '200': + description: Create/Edit Pivotaltracker integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsPivotaltracker + "/api/v4/projects/{id}/integrations/pumble": + put: + summary: Create/Edit Pumble integration + description: Set Pumble integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsPumble + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsPumble" + responses: + '200': + description: Create/Edit Pumble integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsPumble + "/api/v4/projects/{id}/integrations/pushover": + put: + summary: Create/Edit Pushover integration + description: Set Pushover integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsPushover + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsPushover" + responses: + '200': + description: Create/Edit Pushover integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsPushover + "/api/v4/projects/{id}/integrations/redmine": + put: + summary: Create/Edit Redmine integration + description: Set Redmine integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsRedmine + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsRedmine" + responses: + '200': + description: Create/Edit Redmine integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsRedmine + "/api/v4/projects/{id}/integrations/ewm": + put: + summary: Create/Edit Ewm integration + description: Set Ewm integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsEwm + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsEwm" + responses: + '200': + description: Create/Edit Ewm integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsEwm + "/api/v4/projects/{id}/integrations/youtrack": + put: + summary: Create/Edit Youtrack integration + description: Set Youtrack integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsYoutrack + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsYoutrack" + responses: + '200': + description: Create/Edit Youtrack integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsYoutrack + "/api/v4/projects/{id}/integrations/clickup": + put: + summary: Create/Edit Clickup integration + description: Set Clickup integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsClickup + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsClickup" + responses: + '200': + description: Create/Edit Clickup integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsClickup + "/api/v4/projects/{id}/integrations/slack": + put: + summary: Create/Edit Slack integration + description: Set Slack integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsSlack + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsSlack" + responses: + '200': + description: Create/Edit Slack integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsSlack + "/api/v4/projects/{id}/integrations/microsoft-teams": + put: + summary: Create/Edit Microsoft Teams integration + description: Set Microsoft Teams integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsMicrosoftTeams + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsMicrosoftTeams" + responses: + '200': + description: Create/Edit Microsoft Teams integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsMicrosoftTeams + "/api/v4/projects/{id}/integrations/mattermost": + put: + summary: Create/Edit Mattermost integration + description: Set Mattermost integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsMattermost + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsMattermost" + responses: + '200': + description: Create/Edit Mattermost integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsMattermost + "/api/v4/projects/{id}/integrations/teamcity": + put: + summary: Create/Edit Teamcity integration + description: Set Teamcity integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsTeamcity + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsTeamcity" + responses: + '200': + description: Create/Edit Teamcity integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsTeamcity + "/api/v4/projects/{id}/integrations/telegram": + put: + summary: Create/Edit Telegram integration + description: Set Telegram integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsTelegram + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsTelegram" + responses: + '200': + description: Create/Edit Telegram integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsTelegram + "/api/v4/projects/{id}/integrations/unify-circuit": + put: + summary: Create/Edit Unify Circuit integration + description: Set Unify Circuit integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsUnifyCircuit + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsUnifyCircuit" + responses: + '200': + description: Create/Edit Unify Circuit integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsUnifyCircuit + "/api/v4/projects/{id}/integrations/webex-teams": + put: + summary: Create/Edit Webex Teams integration + description: Set Webex Teams integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsWebexTeams + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsWebexTeams" + responses: + '200': + description: Create/Edit Webex Teams integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsWebexTeams + "/api/v4/projects/{id}/integrations/zentao": + put: + summary: Create/Edit Zentao integration + description: Set Zentao integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsZentao + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsZentao" + responses: + '200': + description: Create/Edit Zentao integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsZentao + "/api/v4/projects/{id}/integrations/squash-tm": + put: + summary: Create/Edit Squash Tm integration + description: Set Squash Tm integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsSquashTm + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsSquashTm" + responses: + '200': + description: Create/Edit Squash Tm integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsSquashTm + "/api/v4/projects/{id}/integrations/github": + put: + summary: Create/Edit Github integration + description: Set Github integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsGithub + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsGithub" + responses: + '200': + description: Create/Edit Github integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsGithub + "/api/v4/projects/{id}/integrations/git-guardian": + put: + summary: Create/Edit Git Guardian integration + description: Set Git Guardian integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsGitGuardian + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsGitGuardian" + responses: + '200': + description: Create/Edit Git Guardian integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsGitGuardian + "/api/v4/projects/{id}/integrations/google-cloud-platform-artifact-registry": + put: + summary: Create/Edit Google Cloud Platform Artifact Registry integration + description: Set Google Cloud Platform Artifact Registry integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsGoogleCloudPlatformArtifactRegistry + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsGoogleCloudPlatformArtifactRegistry" + responses: + '200': + description: Create/Edit Google Cloud Platform Artifact Registry integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsGoogleCloudPlatformArtifactRegistry + "/api/v4/projects/{id}/integrations/google-cloud-platform-workload-identity-federation": + put: + summary: Create/Edit Google Cloud Platform Workload Identity Federation integration + description: Set Google Cloud Platform Workload Identity Federation integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsGoogleCloudPlatformWorkloadIdentityFederation + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsGoogleCloudPlatformWorkloadIdentityFederation" + responses: + '200': + description: Create/Edit Google Cloud Platform Workload Identity Federation + integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsGoogleCloudPlatformWorkloadIdentityFederation + "/api/v4/projects/{id}/integrations/mock-ci": + put: + summary: Create/Edit Mock Ci integration + description: Set Mock Ci integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsMockCi + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsMockCi" + responses: + '200': + description: Create/Edit Mock Ci integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsMockCi + "/api/v4/projects/{id}/integrations/mock-monitoring": + put: + summary: Create/Edit Mock Monitoring integration + description: Set Mock Monitoring integration. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdIntegrationsMockMonitoring + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdIntegrationsMockMonitoring" + responses: + '200': + description: Create/Edit Mock Monitoring integration + schema: + "$ref": "#/definitions/API_Entities_IntegrationBasic" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - integrations + operationId: putApiV4ProjectsIdIntegrationsMockMonitoring + "/api/v4/projects/{id}/integrations/{slug}": + delete: + summary: Disable an integration + description: Disable the integration. Integration settings are preserved. + produces: + - application/json + parameters: + - in: path + name: slug + description: The name of the integration + type: string + enum: + - apple-app-store + - asana + - assembla + - bamboo + - bugzilla + - buildkite + - campfire + - confluence + - custom-issue-tracker + - datadog + - diffblue-cover + - discord + - drone-ci + - emails-on-push + - external-wiki + - gitlab-slack-application + - google-play + - hangouts-chat + - harbor + - irker + - jenkins + - jira + - jira-cloud-app + - matrix + - mattermost-slash-commands + - slack-slash-commands + - packagist + - phorge + - pipelines-email + - pivotaltracker + - pumble + - pushover + - redmine + - ewm + - youtrack + - clickup + - slack + - microsoft-teams + - mattermost + - teamcity + - telegram + - unify-circuit + - webex-teams + - zentao + - squash-tm + - github + - git-guardian + - google-cloud-platform-artifact-registry + - google-cloud-platform-workload-identity-federation + - mock-ci + - mock-monitoring + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '204': + description: Disable an integration + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - integrations + operationId: deleteApiV4ProjectsIdIntegrationsSlug + get: + summary: Get an integration settings + description: Get the integration settings. + produces: + - application/json + parameters: + - in: path + name: slug + description: The name of the integration + type: string + enum: + - apple-app-store + - asana + - assembla + - bamboo + - bugzilla + - buildkite + - campfire + - confluence + - custom-issue-tracker + - datadog + - diffblue-cover + - discord + - drone-ci + - emails-on-push + - external-wiki + - gitlab-slack-application + - google-play + - hangouts-chat + - harbor + - irker + - jenkins + - jira + - jira-cloud-app + - matrix + - mattermost-slash-commands + - slack-slash-commands + - packagist + - phorge + - pipelines-email + - pivotaltracker + - pumble + - pushover + - redmine + - ewm + - youtrack + - clickup + - slack + - microsoft-teams + - mattermost + - teamcity + - telegram + - unify-circuit + - webex-teams + - zentao + - squash-tm + - github + - git-guardian + - google-cloud-platform-artifact-registry + - google-cloud-platform-workload-identity-federation + - mock-ci + - mock-monitoring + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get an integration settings + schema: + "$ref": "#/definitions/API_Entities_Integration" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - integrations + operationId: getApiV4ProjectsIdIntegrationsSlug + "/api/v4/projects/{id}/integrations/mattermost_slash_commands/trigger": + post: + summary: Trigger a slash command for mattermost-slash-commands + description: Added in GitLab 8.13 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdIntegrationsMattermostSlashCommandsTrigger + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdIntegrationsMattermostSlashCommandsTrigger" + responses: + '201': + description: Trigger a slash command for mattermost-slash-commands + '401': + description: Unauthorized + '404': + description: Not found + tags: + - integrations + operationId: postApiV4ProjectsIdIntegrationsMattermostSlashCommandsTrigger + "/api/v4/projects/{id}/integrations/slack_slash_commands/trigger": + post: + summary: Trigger a slash command for slack-slash-commands + description: Added in GitLab 8.13 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdIntegrationsSlackSlashCommandsTrigger + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdIntegrationsSlackSlashCommandsTrigger" + responses: + '201': + description: Trigger a slash command for slack-slash-commands + '401': + description: Unauthorized + '404': + description: Not found + tags: + - integrations + operationId: postApiV4ProjectsIdIntegrationsSlackSlashCommandsTrigger + "/api/v4/projects/{id}/invitations": + post: + summary: Invite non-members by email address to a group or project. + description: This feature was introduced in GitLab 13.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + - name: postApiV4ProjectsIdInvitations + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdInvitations" + responses: + '201': + description: Invite non-members by email address to a group or project. + schema: + "$ref": "#/definitions/API_Entities_Invitation" + tags: + - invitations + operationId: postApiV4ProjectsIdInvitations + get: + summary: Get a list of group or project invitations viewable by the authenticated + user + description: This feature was introduced in GitLab 13.6 + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: query + description: A query string to search for members + type: string + required: false + responses: + '200': + description: Get a list of group or project invitations viewable by the + authenticated user + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Invitation" + tags: + - invitations + operationId: getApiV4ProjectsIdInvitations + "/api/v4/projects/{id}/invitations/{email}": + put: + description: Updates a group or project invitation. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + - in: path + name: email + description: The email address of the invitation + type: string + required: true + - name: putApiV4ProjectsIdInvitationsEmail + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdInvitationsEmail" + responses: + '200': + description: Updates a group or project invitation. + schema: + "$ref": "#/definitions/API_Entities_Invitation" + tags: + - invitations + operationId: putApiV4ProjectsIdInvitationsEmail + delete: + description: Removes an invitation from a group or project. + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + - in: path + name: email + description: The email address of the invitation + type: string + required: true + responses: + '204': + description: Removes an invitation from a group or project. + '403': + description: Forbidden + '404': + description: Not found + '409': + description: Could not delete invitation + tags: + - invitations + operationId: deleteApiV4ProjectsIdInvitationsEmail + "/api/v4/projects/{id}/issues/{issue_iid}/links": + get: + summary: List issue relations + description: Get a list of a given issue’s linked issues, sorted by the relationship + creation datetime (ascending).Issues are filtered according to the user authorizations. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: issue_iid + description: The internal ID of a project’s issue + type: integer + format: int32 + required: true + responses: + '200': + description: List issue relations + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_RelatedIssue" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - issue_links + operationId: getApiV4ProjectsIdIssuesIssueIidLinks + post: + summary: Create an issue link + description: Creates a two-way relation between two issues.The user must be + allowed to update both issues to succeed. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: issue_iid + description: The internal ID of a project’s issue + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdIssuesIssueIidLinks + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdIssuesIssueIidLinks" + responses: + '201': + description: Create an issue link + schema: + "$ref": "#/definitions/API_Entities_IssueLink" + '400': + description: Bad Request + '401': + description: Unauthorized + tags: + - issue_links + operationId: postApiV4ProjectsIdIssuesIssueIidLinks + "/api/v4/projects/{id}/issues/{issue_iid}/links/{issue_link_id}": + get: + summary: Get an issue link + description: Gets details about an issue link. This feature was introduced in + GitLab 15.1. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: issue_iid + description: The internal ID of a project’s issue + type: integer + format: int32 + required: true + - in: path + name: issue_link_id + description: ID of an issue relationship + type: string + required: true + responses: + '200': + description: Get an issue link + schema: + "$ref": "#/definitions/API_Entities_IssueLink" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - issue_links + operationId: getApiV4ProjectsIdIssuesIssueIidLinksIssueLinkId + delete: + summary: Delete an issue link + description: Deletes an issue link, thus removes the two-way relationship. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: issue_iid + description: The internal ID of a project’s issue + type: integer + format: int32 + required: true + - in: path + name: issue_link_id + description: The ID of an issue relationship + type: string + required: true + responses: + '401': + description: Unauthorized + '204': + description: Delete an issue link + schema: + "$ref": "#/definitions/API_Entities_IssueLink" + '404': + description: Not found + tags: + - issue_links + operationId: deleteApiV4ProjectsIdIssuesIssueIidLinksIssueLinkId + "/api/v4/projects/{id}/ci/lint": + get: + summary: Validates a CI YAML configuration with a namespace + description: |- + Checks if a project’s .gitlab-ci.yml configuration in a given commit (by default HEAD of the + project’s default branch) is valid + produces: + - application/json + parameters: + - in: query + name: sha + description: 'Deprecated: Use content_ref instead' + type: string + required: false + - in: query + name: content_ref + description: The CI/CD configuration content is taken from this commit SHA, + branch or tag. Defaults to the HEAD of the project's default branch + type: string + required: false + - in: query + name: dry_run + description: Run pipeline creation simulation, or only do static check. This + is false by default + type: boolean + default: false + required: false + - in: query + name: include_jobs + description: |- + If the list of jobs that would exist in a static check or pipeline + simulation should be included in the response. This is false by default + type: boolean + required: false + - in: query + name: ref + description: 'Deprecated: Use dry_run_ref instead' + type: string + required: false + - in: query + name: dry_run_ref + description: Branch or tag used as context when executing a dry run. Defaults + to the default branch of the project. Only used when dry_run is true + type: string + required: false + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Validates a CI YAML configuration with a namespace + schema: + "$ref": "#/definitions/API_Entities_Ci_Lint_Result" + '404': + description: Not found + tags: + - ci_lint + operationId: getApiV4ProjectsIdCiLint + post: + summary: Validate a CI YAML configuration with a namespace + description: Checks if CI/CD YAML configuration is valid. This endpoint has + namespace specific context + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdCiLint + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdCiLint" + responses: + '200': + description: Validate a CI YAML configuration with a namespace + schema: + "$ref": "#/definitions/API_Entities_Ci_Lint_Result" + tags: + - ci_lint + operationId: postApiV4ProjectsIdCiLint + "/api/v4/projects/{id}/uploads/authorize": + post: + summary: Workhorse authorize the file upload + description: This feature was introduced in GitLab 13.11 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Workhorse authorize the file upload + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdUploadsAuthorize + "/api/v4/projects/{id}/uploads": + post: + description: Upload a file + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdUploads + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdUploads" + responses: + '201': + description: Upload a file + schema: + "$ref": "#/definitions/API_Entities_ProjectUpload" + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdUploads + get: + description: Get the list of uploads of a project + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get the list of uploads of a project + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_MarkdownUploadAdmin" + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdUploads + "/api/v4/projects/{id}/uploads/{upload_id}": + get: + description: Download a single project upload by ID + produces: + - application/json + parameters: + - in: path + name: upload_id + description: The ID of a project upload + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Download a single project upload by ID + schema: + type: file + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdUploadsUploadId + delete: + description: Delete a single project upload by ID + produces: + - application/json + parameters: + - in: path + name: upload_id + description: The ID of a project upload + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a single project upload by ID + '400': + description: Bad request + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - projects + operationId: deleteApiV4ProjectsIdUploadsUploadId + "/api/v4/projects/{id}/uploads/{secret}/{filename}": + get: + description: Download a single project upload by secret and filename + produces: + - application/json + parameters: + - in: path + name: secret + description: The 32-character secret of a project upload + type: string + required: true + - in: path + name: filename + description: The filename of a project upload + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Download a single project upload by secret and filename + schema: + type: file + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdUploadsSecretFilename + delete: + description: Delete a single project upload by secret and filename + produces: + - application/json + parameters: + - in: path + name: secret + description: The 32-character secret of a project upload + type: string + required: true + - in: path + name: filename + description: The filename of a project upload + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a single project upload by secret and filename + '400': + description: Bad request + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - projects + operationId: deleteApiV4ProjectsIdUploadsSecretFilename + "/api/v4/projects/{id}/packages/maven/*path/{file_name}": + get: + summary: Download the maven package file at a project level + description: This feature was introduced in GitLab 11.3 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: path + description: Package path + type: string + required: true + example: foo/bar/mypkg/1.0-SNAPSHOT + - in: path + name: file_name + description: Package file name + type: string + required: true + example: mypkg-1.0-SNAPSHOT.jar + responses: + '200': + description: Download the maven package file at a project level + '302': + description: Download the maven package file at a project level + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - maven_packages + operationId: getApiV4ProjectsIdPackagesMaven*pathFileName + put: + summary: Upload the maven package file + description: This feature was introduced in GitLab 11.3 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: file_name + description: Package file name + type: string + required: true + example: mypkg-1.0-SNAPSHOT.pom + - name: putApiV4ProjectsIdPackagesMaven*pathFileName + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesMaven*pathFileName" + responses: + '200': + description: Upload the maven package file + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + '422': + description: Unprocessable Entity + tags: + - maven_packages + operationId: putApiV4ProjectsIdPackagesMaven*pathFileName + "/api/v4/projects/{id}/packages/maven/*path/{file_name}/authorize": + put: + summary: Workhorse authorize the maven package file upload + description: This feature was introduced in GitLab 11.3 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: file_name + description: Package file name + type: string + required: true + example: mypkg-1.0-SNAPSHOT.pom + - name: putApiV4ProjectsIdPackagesMaven*pathFileNameAuthorize + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesMaven*pathFileNameAuthorize" + responses: + '200': + description: Workhorse authorize the maven package file upload + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - maven_packages + operationId: putApiV4ProjectsIdPackagesMaven*pathFileNameAuthorize + "/api/v4/projects/{id}/members": + get: + description: Gets a list of group or project members viewable by the authenticated + user. + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + - in: query + name: query + description: A query string to search for members + type: string + required: false + - in: query + name: user_ids + description: Array of user ids to look up for membership + type: array + items: + type: integer + format: int32 + required: false + - in: query + name: skip_users + description: Array of user ids to be skipped for membership + type: array + items: + type: integer + format: int32 + required: false + - in: query + name: show_seat_info + description: Show seat information for members + type: boolean + required: false + - in: query + name: with_saml_identity + description: List only members with linked SAML identity + type: boolean + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Gets a list of group or project members viewable by the authenticated + user. + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Member" + tags: + - members + operationId: getApiV4ProjectsIdMembers + post: + description: Adds a member to a group or project. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + - name: postApiV4ProjectsIdMembers + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdMembers" + responses: + '201': + description: Adds a member to a group or project. + schema: + "$ref": "#/definitions/API_Entities_Member" + tags: + - members + operationId: postApiV4ProjectsIdMembers + "/api/v4/projects/{id}/members/all": + get: + description: Gets a list of group or project members viewable by the authenticated + user, including those who gained membership through ancestor group. + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + - in: query + name: query + description: A query string to search for members + type: string + required: false + - in: query + name: user_ids + description: Array of user ids to look up for membership + type: array + items: + type: integer + format: int32 + required: false + - in: query + name: show_seat_info + description: Show seat information for members + type: boolean + required: false + - in: query + name: state + description: Filter results by member state + type: string + enum: + - awaiting + - active + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Gets a list of group or project members viewable by the authenticated + user, including those who gained membership through ancestor group. + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Member" + tags: + - members + operationId: getApiV4ProjectsIdMembersAll + "/api/v4/projects/{id}/members/{user_id}": + get: + description: Gets a member of a group or project. + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + - in: path + name: user_id + description: The user ID of the member + type: integer + format: int32 + required: true + responses: + '200': + description: Gets a member of a group or project. + schema: + "$ref": "#/definitions/API_Entities_Member" + tags: + - members + operationId: getApiV4ProjectsIdMembersUserId + put: + description: Updates a member of a group or project. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + - in: path + name: user_id + description: The user ID of the new member + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdMembersUserId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdMembersUserId" + responses: + '200': + description: Updates a member of a group or project. + schema: + "$ref": "#/definitions/API_Entities_Member" + tags: + - members + operationId: putApiV4ProjectsIdMembersUserId + delete: + description: Removes a user from a group or project. + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + - in: path + name: user_id + description: The user ID of the member + type: integer + format: int32 + required: true + - in: query + name: skip_subresources + description: Flag indicating if the deletion of direct memberships of the + removed member in subgroups and projects should be skipped + type: boolean + default: false + required: false + - in: query + name: unassign_issuables + description: Flag indicating if the removed member should be unassigned from + any issues or merge requests within given group or project + type: boolean + default: false + required: false + responses: + '204': + description: Removes a user from a group or project. + tags: + - members + operationId: deleteApiV4ProjectsIdMembersUserId + "/api/v4/projects/{id}/members/all/{user_id}": + get: + description: Gets a member of a group or project, including those who gained + membership through ancestor group + produces: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + - in: path + name: user_id + description: The user ID of the member + type: integer + format: int32 + required: true + responses: + '200': + description: Gets a member of a group or project, including those who gained + membership through ancestor group + schema: + "$ref": "#/definitions/API_Entities_Member" + tags: + - members + operationId: getApiV4ProjectsIdMembersAllUserId + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/approvals": + get: + description: List approvals for merge request + produces: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '200': + description: List approvals for merge request + schema: + "$ref": "#/definitions/API_Entities_MergeRequestApprovals" + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidApprovals + post: + summary: 'Deprecated in 16.0: Use the merge request approvals API instead. Change + approval-related configuration' + description: This feature was introduced in 10.6 and deprecated in 16.0 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: merge_request_iid + description: The IID of a merge request + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdMergeRequestsMergeRequestIidApprovals + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdMergeRequestsMergeRequestIidApprovals" + responses: + '201': + description: 'Deprecated in 16.0: Use the merge request approvals API instead. + Change approval-related configuration' + schema: + "$ref": "#/definitions/EE_API_Entities_ApprovalState" + tags: + - projects + operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidApprovals + deprecated: true + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/approve": + post: + description: Approve a merge request + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdMergeRequestsMergeRequestIidApprove + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdMergeRequestsMergeRequestIidApprove" + responses: + '201': + description: Approve a merge request + schema: + "$ref": "#/definitions/API_Entities_MergeRequestApprovals" + '404': + description: Not found + '401': + description: Unauthorized + tags: + - projects + operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidApprove + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/unapprove": + post: + description: Remove an approval from a merge request + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '201': + description: Remove an approval from a merge request + schema: + "$ref": "#/definitions/API_Entities_MergeRequestApprovals" + '404': + description: Not found + '401': + description: Unauthorized + tags: + - projects + operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidUnapprove + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/reset_approvals": + put: + summary: Remove all merge request approvals + description: Clear all approvals of merge request. This feature was added in + GitLab 15.4 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '200': + description: Remove all merge request approvals + '401': + description: Unauthorized + '404': + description: Not found + tags: + - merge_requests + operationId: putApiV4ProjectsIdMergeRequestsMergeRequestIidResetApprovals + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/approval_state": + get: + description: Get approval state of merge request + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: merge_request_iid + description: The IID of a merge request + type: integer + format: int32 + required: true + responses: + '200': + description: Get approval state of merge request + schema: + "$ref": "#/definitions/EE_API_Entities_MergeRequestApprovalState" + tags: + - projects + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidApprovalState + "/api/v4/projects/{id}/create_ci_config": + post: + description: Creates merge request for missing ci config in project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '201': + description: Creates merge request for missing ci config in project + tags: + - projects + operationId: postApiV4ProjectsIdCreateCiConfig + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/time_estimate": + post: + summary: Set a time estimate for a merge_request + description: Sets an estimated time of work for this merge_request. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + description: The internal ID of the merge_request. + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdMergeRequestsMergeRequestIidTimeEstimate + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdMergeRequestsMergeRequestIidTimeEstimate" + responses: + '201': + description: Set a time estimate for a merge_request + schema: + "$ref": "#/definitions/API_Entities_IssuableTimeStats" + '401': + description: Unauthorized + '400': + description: Bad request + '404': + description: Not found + tags: + - merge_requests + operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidTimeEstimate + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/reset_time_estimate": + post: + summary: Reset the time estimate for a project merge_request + description: Resets the estimated time for this merge_request to 0 seconds. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + description: The internal ID of the merge_request. + type: integer + format: int32 + required: true + responses: + '201': + description: Reset the time estimate for a project merge_request + schema: + "$ref": "#/definitions/API_Entities_IssuableTimeStats" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - merge_requests + operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidResetTimeEstimate + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/add_spent_time": + post: + summary: Add spent time for a merge_request + description: Adds spent time for this merge_request. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + description: The internal ID of the merge_request. + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdMergeRequestsMergeRequestIidAddSpentTime + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdMergeRequestsMergeRequestIidAddSpentTime" + responses: + '201': + description: Add spent time for a merge_request + schema: + "$ref": "#/definitions/API_Entities_IssuableTimeStats" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - merge_requests + operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidAddSpentTime + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/reset_spent_time": + post: + summary: Reset spent time for a merge_request + description: Resets the total spent time for this merge_request to 0 seconds. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + description: The internal ID of the merge_request + type: integer + format: int32 + required: true + responses: + '201': + description: Reset spent time for a merge_request + schema: + "$ref": "#/definitions/API_Entities_IssuableTimeStats" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - merge_requests + operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidResetSpentTime + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/time_stats": + get: + summary: Get time tracking stats + description: Get time tracking stats + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + description: The internal ID of the merge_request + type: integer + format: int32 + required: true + responses: + '200': + description: Get time tracking stats + schema: + "$ref": "#/definitions/API_Entities_IssuableTimeStats" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - merge_requests + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidTimeStats + "/api/v4/projects/{id}/merge_requests": + get: + summary: List project merge requests + description: Get all merge requests for this project. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: query + name: author_id + description: Returns merge requests created by the given user `id`. Mutually + exclusive with `author_username`. Combine with `scope=all` or `scope=assigned_to_me`. + type: integer + format: int32 + required: false + - in: query + name: author_username + description: Returns merge requests created by the given `username`. Mutually + exclusive with `author_id`. + type: string + required: false + - in: query + name: assignee_id + description: Returns merge requests assigned to the given user `id`. `None` + returns unassigned merge requests. `Any` returns merge requests with an + assignee. + type: integer + format: int32 + required: false + - in: query + name: assignee_username + description: Returns merge requests created by the given `username`. Mutually + exclusive with `author_id`. + type: array + items: + type: string + required: false + - in: query + name: reviewer_username + description: Returns merge requests which have the user as a reviewer with + the given `username`. `None` returns merge requests with no reviewers. `Any` + returns merge requests with any reviewer. Mutually exclusive with `reviewer_id`. + Introduced in GitLab 13.8. + type: string + required: false + - in: query + name: labels + description: Returns merge requests matching a comma-separated list of labels. + `None` lists all merge requests with no labels. `Any` lists all merge requests + with at least one label. Predefined names are case-insensitive. + type: array + items: + type: string + required: false + - in: query + name: milestone + description: Returns merge requests for a specific milestone. `None` returns + merge requests with no milestone. `Any` returns merge requests that have + an assigned milestone. + type: string + required: false + - in: query + name: my_reaction_emoji + description: Returns merge requests reacted by the authenticated user by the + given `emoji`. `None` returns issues not given a reaction. `Any` returns + issues given at least one reaction. + type: string + required: false + - in: query + name: reviewer_id + description: Returns merge requests which have the user as a reviewer with + the given user `id`. `None` returns merge requests with no reviewers. `Any` + returns merge requests with any reviewer. Mutually exclusive with `reviewer_username`. + type: integer + format: int32 + required: false + - in: query + name: state + description: Returns `all` merge requests or just those that are `opened`, + `closed`, `locked`, or `merged`. + type: string + default: all + enum: + - opened + - closed + - locked + - merged + - all + required: false + - in: query + name: order_by + description: Returns merge requests ordered by `created_at`, `label_priority`, + `milestone_due`, `popularity`, `priority`, `title`, `updated_at` or `merged_at` + fields. Introduced in GitLab 14.8. + type: string + default: created_at + enum: + - created_at + - label_priority + - milestone_due + - popularity + - priority + - title + - updated_at + - merged_at + required: false + - in: query + name: sort + description: Returns merge requests sorted in `asc` or `desc` order. + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: with_labels_details + description: 'If `true`, response returns more details for each label in labels + field: `:name`,`:color`, `:description`, `:description_html`, `:text_color`' + type: boolean + default: false + required: false + - in: query + name: with_merge_status_recheck + description: If `true`, this projection requests (but does not guarantee) + that the `merge_status` field be recalculated asynchronously. Introduced + in GitLab 13.0. + type: boolean + default: false + required: false + - in: query + name: created_after + description: Returns merge requests created on or after the given time. Expected + in ISO 8601 format. + type: string + format: date-time + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: created_before + description: Returns merge requests created on or before the given time. Expected + in ISO 8601 format. + type: string + format: date-time + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: updated_after + description: Returns merge requests updated on or after the given time. Expected + in ISO 8601 format. + type: string + format: date-time + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: updated_before + description: Returns merge requests updated on or before the given time. Expected + in ISO 8601 format. + type: string + format: date-time + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: view + description: If simple, returns the `iid`, URL, title, description, and basic + state of merge request + type: string + enum: + - simple + required: false + - in: query + name: scope + description: 'Returns merge requests for the given scope: `created_by_me`, + `assigned_to_me` or `all`' + type: string + enum: + - created-by-me + - assigned-to-me + - created_by_me + - assigned_to_me + - all + required: false + - in: query + name: source_branch + description: Returns merge requests with the given source branch + type: string + required: false + - in: query + name: source_project_id + description: Returns merge requests with the given source project id + type: integer + format: int32 + required: false + - in: query + name: target_branch + description: Returns merge requests with the given target branch + type: string + required: false + - in: query + name: search + description: Search merge requests against their `title` and `description`. + type: string + required: false + - in: query + name: in + description: Modify the scope of the search attribute. `title`, `description`, + or a string joining them with comma. + type: string + required: false + example: title,description + - in: query + name: wip + description: Filter merge requests against their `wip` status. `yes` to return + only draft merge requests, `no` to return non-draft merge requests. + type: string + enum: + - 'yes' + - 'no' + required: false + - in: query + name: not[author_id] + description: "`` Returns merge requests created by the given user + `id`. Mutually exclusive with `author_username`. Combine with `scope=all` + or `scope=assigned_to_me`." + type: integer + format: int32 + required: false + - in: query + name: not[author_username] + description: "`` Returns merge requests created by the given `username`. + Mutually exclusive with `author_id`." + type: string + required: false + - in: query + name: not[assignee_id] + description: "`` Returns merge requests assigned to the given user + `id`. `None` returns unassigned merge requests. `Any` returns merge requests + with an assignee." + type: integer + format: int32 + required: false + - in: query + name: not[assignee_username] + description: "`` Returns merge requests created by the given `username`. + Mutually exclusive with `author_id`." + type: array + items: + type: string + required: false + - in: query + name: not[reviewer_username] + description: "`` Returns merge requests which have the user as a + reviewer with the given `username`. `None` returns merge requests with no + reviewers. `Any` returns merge requests with any reviewer. Mutually exclusive + with `reviewer_id`. Introduced in GitLab 13.8." + type: string + required: false + - in: query + name: not[labels] + description: "`` Returns merge requests matching a comma-separated + list of labels. `None` lists all merge requests with no labels. `Any` lists + all merge requests with at least one label. Predefined names are case-insensitive." + type: array + items: + type: string + required: false + - in: query + name: not[milestone] + description: "`` Returns merge requests for a specific milestone. + `None` returns merge requests with no milestone. `Any` returns merge requests + that have an assigned milestone." + type: string + required: false + - in: query + name: not[my_reaction_emoji] + description: "`` Returns merge requests reacted by the authenticated + user by the given `emoji`. `None` returns issues not given a reaction. `Any` + returns issues given at least one reaction." + type: string + required: false + - in: query + name: not[reviewer_id] + description: "`` Returns merge requests which have the user as a + reviewer with the given user `id`. `None` returns merge requests with no + reviewers. `Any` returns merge requests with any reviewer. Mutually exclusive + with `reviewer_username`." + type: integer + format: int32 + required: false + - in: query + name: deployed_before + description: Returns merge requests deployed before the given date/time. Expected + in ISO 8601 format. + type: string + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: deployed_after + description: Returns merge requests deployed after the given date/time. Expected + in ISO 8601 format + type: string + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: environment + description: Returns merge requests deployed to the given environment + type: string + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: approved + description: Filters merge requests by their `approved` status. `yes` returns + only approved merge requests. `no` returns only non-approved merge requests. + type: string + enum: + - 'yes' + - 'no' + required: false + - in: query + name: merge_user_id + description: Returns merge requests which have been merged by the user with + the given user `id`. Mutually exclusive with `merge_user_username`. + type: integer + format: int32 + required: false + - in: query + name: merge_user_username + description: Returns merge requests which have been merged by the user with + the given `username`. Mutually exclusive with `merge_user_id`. + type: string + required: false + - in: query + name: approver_ids + description: Return merge requests which have specified the users with the + given IDs as an individual approver + type: string + required: false + - in: query + name: approved_by_ids + description: Return merge requests which have been approved by the specified + users with the given IDs + type: string + required: false + - in: query + name: approved_by_usernames + description: |- + Return merge requests which have been approved by the specified users with the given + usernames + type: string + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: iids + description: Returns the request having the given `iid`. + type: array + items: + type: integer + format: int32 + required: false + responses: + '200': + description: List project merge requests + schema: + "$ref": "#/definitions/API_Entities_MergeRequestBasic" + '401': + description: Unauthorized + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - merge_requests + operationId: getApiV4ProjectsIdMergeRequests + post: + summary: Create merge request + description: Create a new merge request. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - name: postApiV4ProjectsIdMergeRequests + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdMergeRequests" + responses: + '201': + description: Create merge request + schema: + "$ref": "#/definitions/API_Entities_MergeRequest" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '409': + description: Conflict + '422': + description: Unprocessable entity + tags: + - merge_requests + operationId: postApiV4ProjectsIdMergeRequests + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}": + delete: + summary: Delete a merge request + description: 'Only for administrators and project owners. Deletes the merge + request in question. ' + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + description: The internal ID of the merge request. + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a merge request + '401': + description: Unauthorized + '404': + description: Not found + '412': + description: Precondition failed + tags: + - merge_requests + operationId: deleteApiV4ProjectsIdMergeRequestsMergeRequestIid + get: + summary: Get single merge request + description: 'Shows information about a single merge request. Note: the `changes_count` + value in the response is a string, not an integer. This is because when an + merge request has too many changes to display and store, it is capped at 1,000. + In that case, the API returns the string `"1000+"` for the changes count.' + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + description: The internal ID of the merge request. + type: integer + format: int32 + required: true + - in: query + name: render_html + description: If `true`, response includes rendered HTML for title and description. + type: boolean + required: false + - in: query + name: include_diverged_commits_count + description: If `true`, response includes the commits behind the target branch. + type: boolean + required: false + - in: query + name: include_rebase_in_progress + description: If `true`, response includes whether a rebase operation is in + progress. + type: boolean + required: false + responses: + '200': + description: Get single merge request + schema: + "$ref": "#/definitions/API_Entities_MergeRequest" + '404': + description: Not found + tags: + - merge_requests + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIid + put: + summary: Update merge request + description: Updates an existing merge request. You can change the target branch, + title, or even close the merge request. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdMergeRequestsMergeRequestIid + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdMergeRequestsMergeRequestIid" + responses: + '200': + description: Update merge request + schema: + "$ref": "#/definitions/API_Entities_MergeRequest" + '400': + description: Bad request + '404': + description: Not found + '409': + description: Conflict + '422': + description: Unprocessable entity + tags: + - merge_requests + operationId: putApiV4ProjectsIdMergeRequestsMergeRequestIid + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/participants": + get: + summary: Get single merge request participants + description: Get a list of merge request participants. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '200': + description: Get single merge request participants + schema: + "$ref": "#/definitions/API_Entities_UserBasic" + '404': + description: Not found + tags: + - merge_requests + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidParticipants + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/reviewers": + get: + summary: Get single merge request reviewers + description: Get a list of merge request reviewers. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '200': + description: Get single merge request reviewers + schema: + "$ref": "#/definitions/API_Entities_MergeRequestReviewer" + '404': + description: Not found + tags: + - merge_requests + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidReviewers + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/commits": + get: + summary: Get single merge request commits + description: Get a list of merge request commits. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '200': + description: Get single merge request commits + schema: + "$ref": "#/definitions/API_Entities_Commit" + '404': + description: Not found + tags: + - merge_requests + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidCommits + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/context_commits": + get: + summary: List merge request context commits + description: Get a list of merge request context commits. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '200': + description: List merge request context commits + schema: + "$ref": "#/definitions/API_Entities_Commit" + '404': + description: Not found + tags: + - merge_requests + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidContextCommits + post: + summary: Create merge request context commits + description: Create a list of merge request context commits. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdMergeRequestsMergeRequestIidContextCommits + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdMergeRequestsMergeRequestIidContextCommits" + responses: + '201': + description: Create merge request context commits + schema: + "$ref": "#/definitions/API_Entities_Commit" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - merge_requests + operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidContextCommits + delete: + summary: Delete merge request context commits + description: Delete a list of merge request context commits. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: query + name: commits + description: The context commits’ SHA. + type: array + items: + type: string + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '204': + description: Delete merge request context commits + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - merge_requests + operationId: deleteApiV4ProjectsIdMergeRequestsMergeRequestIidContextCommits + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/changes": + get: + summary: Get single merge request changes + description: Shows information about the merge request including its files and + changes. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: query + name: unidiff + description: A diff in a Unified diff format + type: boolean + default: false + required: false + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '200': + description: Get single merge request changes + schema: + "$ref": "#/definitions/API_Entities_MergeRequestChanges" + '404': + description: Not found + tags: + - merge_requests + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidChanges + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/diffs": + get: + summary: Get the merge request diffs + description: Get a list of merge request diffs. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: unidiff + description: A diff in a Unified diff format + type: boolean + default: false + required: false + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '200': + description: Get the merge request diffs + schema: + "$ref": "#/definitions/API_Entities_Diff" + '403': + description: Forbidden + '404': + description: Not found + tags: + - merge_requests + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidDiffs + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/raw_diffs": + get: + summary: Get the merge request raw diffs + description: Get the raw diffs of a merge request that can used programmatically. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '200': + description: Get the merge request raw diffs + '403': + description: Forbidden + '404': + description: Not found + tags: + - merge_requests + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidRawDiffs + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/pipelines": + get: + summary: Get single merge request pipelines + description: Get a list of merge request pipelines. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '200': + description: Get single merge request pipelines + schema: + "$ref": "#/definitions/API_Entities_Ci_PipelineBasic" + '404': + description: Not found + tags: + - merge_requests + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidPipelines + post: + summary: Create merge request pipeline + description: 'Create a new pipeline for a merge request. A pipeline created + via this endpoint doesn’t run a regular branch/tag pipeline. It requires `.gitlab-ci.yml` + to be configured with `only: [merge_requests]` to create jobs.' + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdMergeRequestsMergeRequestIidPipelines + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdMergeRequestsMergeRequestIidPipelines" + responses: + '201': + description: Create merge request pipeline + schema: + "$ref": "#/definitions/API_Entities_Ci_Pipeline" + '400': + description: Bad request + '404': + description: Not found + '405': + description: Method not allowed + tags: + - merge_requests + operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidPipelines + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/merge": + put: + summary: Merge a merge request + description: Accept and merge changes submitted with the merge request using + this API. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdMergeRequestsMergeRequestIidMerge + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdMergeRequestsMergeRequestIidMerge" + responses: + '200': + description: Merge a merge request + schema: + "$ref": "#/definitions/API_Entities_MergeRequest" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + '405': + description: Method not allowed + '409': + description: Conflict + '422': + description: Unprocessable entity + tags: + - merge_requests + operationId: putApiV4ProjectsIdMergeRequestsMergeRequestIidMerge + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/merge_ref": + get: + summary: Returns the up to date merge-ref HEAD commit + description: Returns the up to date merge-ref HEAD commit + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '200': + description: Returns the up to date merge-ref HEAD commit + '400': + description: Bad request + tags: + - merge_requests + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidMergeRef + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/cancel_merge_when_pipeline_succeeds": + post: + summary: Cancel Merge When Pipeline Succeeds + description: Cancel merge if "Merge When Pipeline Succeeds" is enabled + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '201': + description: Cancel Merge When Pipeline Succeeds + schema: + "$ref": "#/definitions/API_Entities_MergeRequest" + '401': + description: Unauthorized + '404': + description: Not found + '405': + description: Method not allowed + '406': + description: Not acceptable + tags: + - merge_requests + operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidCancelMergeWhenPipelineSucceeds + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/rebase": + put: + summary: Rebase a merge request + description: Automatically rebase the `source_branch` of the merge request against + its `target_branch`. This feature was added in GitLab 11.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdMergeRequestsMergeRequestIidRebase + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdMergeRequestsMergeRequestIidRebase" + responses: + '200': + description: Rebase a merge request + '403': + description: Forbidden + '404': + description: Not found + '409': + description: Conflict + tags: + - merge_requests + operationId: putApiV4ProjectsIdMergeRequestsMergeRequestIidRebase + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/closes_issues": + get: + summary: List issues that close on merge + description: Get all the issues that would be closed by merging the provided + merge request. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '200': + description: List issues that close on merge + schema: + "$ref": "#/definitions/API_Entities_MRNote" + '403': + description: Forbidden + '404': + description: Not found + tags: + - merge_requests + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidClosesIssues + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/related_issues": + get: + summary: List issues related to merge request + description: Get all the related issues from title, description, commits, comments + and discussions of the merge request. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project. + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: merge_request_iid + type: integer + format: int32 + required: true + responses: + '200': + description: List issues related to merge request + '403': + description: Forbidden + '404': + description: Not found + tags: + - merge_requests + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidRelatedIssues + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/versions": + get: + summary: Get a list of merge request diff versions + description: This feature was introduced in GitLab 8.12. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: merge_request_iid + description: The internal ID of the merge request + type: integer + format: int32 + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get a list of merge request diff versions + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_MergeRequestDiff" + tags: + - merge_requests + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidVersions + "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/versions/{version_id}": + get: + summary: Get a single merge request diff version + description: This feature was introduced in GitLab 8.12. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: merge_request_iid + description: The internal ID of the merge request + type: integer + format: int32 + required: true + - in: path + name: version_id + description: The ID of the merge request diff version + type: integer + format: int32 + required: true + - in: query + name: unidiff + description: A diff in a Unified diff format + type: boolean + default: false + required: false + responses: + '200': + description: Get a single merge request diff version + schema: + "$ref": "#/definitions/API_Entities_MergeRequestDiffFull" + tags: + - merge_requests + operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidVersionsVersionId + "/api/v4/projects/{id}/packages/ml_models/{model_version_id}/files/(*path/){file_name}/authorize": + put: + summary: Workhorse authorize model package file + description: Introduced in GitLab 16.8 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: file_name + description: File name + type: string + required: true + - in: path + name: model_version_id + description: Model version id + type: string + required: true + - name: putApiV4ProjectsIdPackagesMlModelsModelVersionIdFiles(*path)FileNameAuthorize + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesMlModelsModelVersionIdFiles(*path)FileNameAuthorize" + responses: + '200': + description: Workhorse authorize model package file + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - ml_model_registry + operationId: putApiV4ProjectsIdPackagesMlModelsModelVersionIdFiles(*path)FileNameAuthorize + "/api/v4/projects/{id}/packages/ml_models/{model_version_id}/files/(*path/){file_name}": + put: + summary: Workhorse upload model package file + description: Introduced in GitLab 16.8 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: file_name + description: File name + type: string + required: true + - in: path + name: model_version_id + description: Model version id + type: string + required: true + - name: putApiV4ProjectsIdPackagesMlModelsModelVersionIdFiles(*path)FileName + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesMlModelsModelVersionIdFiles(*path)FileName" + responses: + '201': + description: Workhorse upload model package file + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - ml_model_registry + operationId: putApiV4ProjectsIdPackagesMlModelsModelVersionIdFiles(*path)FileName + get: + summary: Download an ml_model package file + description: This feature was introduced in GitLab 16.8 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: file_name + description: File name + type: string + required: true + - in: query + name: path + description: File directory path + type: string + required: false + - in: query + name: status + description: Package status + type: string + enum: + - default + - hidden + required: false + - in: path + name: model_version_id + description: Model version id + type: string + required: true + responses: + '200': + description: Download an ml_model package file + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - ml_model_registry + operationId: getApiV4ProjectsIdPackagesMlModelsModelVersionIdFiles(*path)FileName + "/api/v4/projects/{id}/packages/npm/-/package/*package_name/dist-tags": + get: + summary: Get all tags for a given an NPM package + description: This feature was introduced in GitLab 12.7 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: package_name + description: Package name + type: string + required: true + responses: + '200': + description: Get all tags for a given an NPM package + schema: + "$ref": "#/definitions/API_Entities_NpmPackageTag" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: getApiV4ProjectsIdPackagesNpmPackage*packageNameDistTags + "/api/v4/projects/{id}/packages/npm/-/package/*package_name/dist-tags/{tag}": + put: + summary: Create or Update the given tag for the given NPM package and version + description: This feature was introduced in GitLab 12.7 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: tag + description: Package dist-tag + type: string + required: true + - name: putApiV4ProjectsIdPackagesNpmPackage*packageNameDistTagsTag + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesNpmPackage*packageNameDistTagsTag" + responses: + '204': + description: Create or Update the given tag for the given NPM package and + version + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: putApiV4ProjectsIdPackagesNpmPackage*packageNameDistTagsTag + delete: + summary: Deletes the given tag + description: This feature was introduced in GitLab 12.7 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: package_name + description: Package name + type: string + required: true + - in: path + name: tag + description: Package dist-tag + type: string + required: true + responses: + '204': + description: Deletes the given tag + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: deleteApiV4ProjectsIdPackagesNpmPackage*packageNameDistTagsTag + "/api/v4/projects/{id}/packages/npm/-/npm/v1/security/advisories/bulk": + post: + summary: NPM registry bulk advisory endpoint + description: This feature was introduced in GitLab 15.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Ok + '307': + description: Temporary Redirect + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: postApiV4ProjectsIdPackagesNpmNpmV1SecurityAdvisoriesBulk + "/api/v4/projects/{id}/packages/npm/-/npm/v1/security/audits/quick": + post: + summary: NPM registry quick audit endpoint + description: This feature was introduced in GitLab 15.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Ok + '307': + description: Temporary Redirect + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: postApiV4ProjectsIdPackagesNpmNpmV1SecurityAuditsQuick + "/api/v4/projects/{id}/packages/npm/*package_name/-/*file_name": + get: + summary: Download the NPM tarball + description: This feature was introduced in GitLab 11.8 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: package_name + description: Package name + type: string + required: true + - in: query + name: file_name + description: Package file name + type: string + required: true + responses: + '200': + description: Download the NPM tarball + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: getApiV4ProjectsIdPackagesNpm*packageName-*fileName + "/api/v4/projects/{id}/packages/npm/{package_name}": + put: + summary: Create or deprecate NPM package + description: Create was introduced in GitLab 11.8 & deprecate suppport was added + in 16.0 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_name + description: Package name + type: string + required: true + - name: putApiV4ProjectsIdPackagesNpmPackageName + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesNpmPackageName" + responses: + '200': + description: Create or deprecate NPM package + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: putApiV4ProjectsIdPackagesNpmPackageName + "/api/v4/projects/{id}/packages/npm/*package_name": + get: + summary: NPM registry metadata endpoint + description: This feature was introduced in GitLab 11.8 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: package_name + description: Package name + type: string + required: true + example: mypackage + responses: + '200': + description: Ok + schema: + "$ref": "#/definitions/API_Entities_NpmPackage" + '302': + description: Found (redirect) + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: getApiV4ProjectsIdPackagesNpm*packageName + "/api/v4/projects/{id}/packages/nuget/index": + get: + summary: The NuGet V3 Feed Service Index + description: This feature was introduced in GitLab 12.6 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: The NuGet V3 Feed Service Index + schema: + "$ref": "#/definitions/API_Entities_Nuget_ServiceIndex" + '404': + description: Not Found + tags: + - nuget_packages + operationId: getApiV4ProjectsIdPackagesNugetIndex + "/api/v4/projects/{id}/packages/nuget/symbolfiles/*file_name/*signature/*same_file_name": + get: + summary: The NuGet Symbol File Download Endpoint + description: This feature was introduced in GitLab 16.7 + produces: + - application/json + parameters: + - in: header + name: Symbolchecksum + type: string + required: true + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: file_name + description: The symbol file name + type: string + required: true + example: mynugetpkg.pdb + - in: query + name: signature + description: The symbol file signature + type: string + required: true + example: k813f89485474661234z7109cve5709eFFFFFFFF + - in: query + name: same_file_name + type: string + required: true + responses: + '200': + description: The NuGet Symbol File Download Endpoint + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: getApiV4ProjectsIdPackagesNugetSymbolfiles*fileName*signature*sameFileName + "/api/v4/projects/{id}/packages/nuget/v2": + get: + summary: The NuGet V2 Feed Service Index + description: This feature was introduced in GitLab 16.2 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: The NuGet V2 Feed Service Index + '404': + description: Not Found + tags: + - nuget_packages + operationId: getApiV4ProjectsIdPackagesNugetV2 + put: + summary: The NuGet V2 Feed Package Publish endpoint + description: This feature was introduced in GitLab 16.2 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: putApiV4ProjectsIdPackagesNugetV2 + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesNugetV2" + responses: + '201': + description: The NuGet V2 Feed Package Publish endpoint + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: putApiV4ProjectsIdPackagesNugetV2 + "/api/v4/projects/{id}/packages/nuget/v2/$metadata": + get: + summary: The NuGet V2 Feed Package $metadata endpoint + description: This feature was introduced in GitLab 16.3 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: The NuGet V2 Feed Package $metadata endpoint + tags: + - nuget_packages + operationId: getApiV4ProjectsIdPackagesNugetV2$metadata + "/api/v4/projects/{id}/packages/nuget/metadata/*package_name/index": + get: + summary: The NuGet Metadata Service - Package name level + description: This feature was introduced in GitLab 12.8 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: package_name + description: The NuGet package name + type: string + required: true + example: MyNuGetPkg + responses: + '200': + description: The NuGet Metadata Service - Package name level + schema: + "$ref": "#/definitions/API_Entities_Nuget_PackagesMetadata" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: getApiV4ProjectsIdPackagesNugetMetadata*packageNameIndex + "/api/v4/projects/{id}/packages/nuget/metadata/*package_name/*package_version": + get: + summary: The NuGet Metadata Service - Package name and version level + description: This feature was introduced in GitLab 12.8 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: package_name + description: The NuGet package name + type: string + required: true + example: MyNuGetPkg + - in: query + name: package_version + description: The NuGet package version + type: string + required: true + example: 1.0.0 + responses: + '200': + description: The NuGet Metadata Service - Package name and version level + schema: + "$ref": "#/definitions/API_Entities_Nuget_PackageMetadata" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: getApiV4ProjectsIdPackagesNugetMetadata*packageName*packageVersion + "/api/v4/projects/{id}/packages/nuget/query": + get: + summary: The NuGet Search Service + description: This feature was introduced in GitLab 12.8 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: q + description: The search term + type: string + required: false + example: MyNuGet + - in: query + name: skip + description: The number of results to skip + type: integer + format: int32 + default: 0 + required: false + example: 1 + - in: query + name: take + description: The number of results to return + type: integer + format: int32 + default: 20 + required: false + example: 1 + - in: query + name: prerelease + description: Include prerelease versions + type: boolean + default: true + required: false + responses: + '200': + description: The NuGet Search Service + schema: + "$ref": "#/definitions/API_Entities_Nuget_SearchResults" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: getApiV4ProjectsIdPackagesNugetQuery + "/api/v4/projects/{id}/packages/nuget/download/*package_name/index": + get: + summary: The NuGet Content Service - index request + description: This feature was introduced in GitLab 12.8 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: package_name + description: The NuGet package name + type: string + required: true + example: mynugetpkg.1.3.0.17.nupkg + responses: + '200': + description: The NuGet Content Service - index request + schema: + "$ref": "#/definitions/API_Entities_Nuget_PackagesVersions" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: getApiV4ProjectsIdPackagesNugetDownload*packageNameIndex + "/api/v4/projects/{id}/packages/nuget/download/*package_name/*package_version/*package_filename": + get: + summary: The NuGet Content Service - content request + description: This feature was introduced in GitLab 12.8 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: package_name + description: The NuGet package name + type: string + required: true + example: mynugetpkg.1.3.0.17.nupkg + - in: query + name: package_version + description: The NuGet package version + type: string + required: true + example: 1.3.0.17 + - in: query + name: package_filename + description: The NuGet package filename + type: string + required: true + example: mynugetpkg.1.3.0.17.nupkg + responses: + '200': + description: The NuGet Content Service - content request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: getApiV4ProjectsIdPackagesNugetDownload*packageName*packageVersion*packageFilename + "/api/v4/projects/{id}/packages/nuget": + put: + summary: The NuGet V3 Feed Package Publish endpoint + description: This feature was introduced in GitLab 12.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: putApiV4ProjectsIdPackagesNuget + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesNuget" + responses: + '201': + description: The NuGet V3 Feed Package Publish endpoint + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: putApiV4ProjectsIdPackagesNuget + "/api/v4/projects/{id}/packages/nuget/authorize": + put: + summary: The NuGet Package Authorize endpoint + description: This feature was introduced in GitLab 14.1 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: The NuGet Package Authorize endpoint + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: putApiV4ProjectsIdPackagesNugetAuthorize + "/api/v4/projects/{id}/packages/nuget/symbolpackage": + put: + summary: The NuGet Symbol Package Publish endpoint + description: This feature was introduced in GitLab 14.1 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: putApiV4ProjectsIdPackagesNugetSymbolpackage + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesNugetSymbolpackage" + responses: + '201': + description: The NuGet Symbol Package Publish endpoint + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: putApiV4ProjectsIdPackagesNugetSymbolpackage + "/api/v4/projects/{id}/packages/nuget/symbolpackage/authorize": + put: + summary: The NuGet Symbol Package Authorize endpoint + description: This feature was introduced in GitLab 14.1 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: The NuGet Symbol Package Authorize endpoint + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: putApiV4ProjectsIdPackagesNugetSymbolpackageAuthorize + "/api/v4/projects/{id}/packages/nuget/*package_name/*package_version": + delete: + summary: The NuGet Package Delete endpoint + description: This feature was introduced in GitLab 16.5 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: package_name + description: The NuGet package name + type: string + required: true + example: mynugetpkg + - in: query + name: package_version + description: The NuGet package version + type: string + required: true + example: 1.0.1 + responses: + '204': + description: The NuGet Package Delete endpoint + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: deleteApiV4ProjectsIdPackagesNuget*packageName*packageVersion + "/api/v4/projects/{id}/packages/nuget/v2/authorize": + put: + summary: The NuGet V2 Feed Package Authorize endpoint + description: This feature was introduced in GitLab 16.2 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: The NuGet V2 Feed Package Authorize endpoint + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - nuget_packages + operationId: putApiV4ProjectsIdPackagesNugetV2Authorize + "/api/v4/projects/{project_id}/packages/nuget/v2/FindPackagesById\\(\\)": + get: + summary: The NuGet V2 Feed Find Packages by ID endpoint + description: This feature was introduced in GitLab 16.4 + produces: + - application/json + parameters: + - in: path + name: project_id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: id + description: The NuGet package name + type: string + required: true + example: mynugetpkg + responses: + '200': + description: The NuGet V2 Feed Find Packages by ID endpoint + '404': + description: Not Found + '400': + description: Bad Request + tags: + - nuget_packages + operationId: getApiV4ProjectsProjectIdPackagesNugetV2Findpackagesbyid\(\) + "/api/v4/projects/{project_id}/packages/nuget/v2/Packages\\(\\)": + get: + summary: The NuGet V2 Feed Enumerate Packages endpoint + description: This feature was introduced in GitLab 16.4 + produces: + - application/json + parameters: + - in: path + name: project_id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: "$filter" + description: The NuGet package name + type: string + required: true + example: mynugetpkg + responses: + '200': + description: The NuGet V2 Feed Enumerate Packages endpoint + '404': + description: Not Found + '400': + description: Bad Request + tags: + - nuget_packages + operationId: getApiV4ProjectsProjectIdPackagesNugetV2Packages\(\) + "/api/v4/projects/{project_id}/packages/nuget/v2/Packages\\(Id='*package_name',Version='*package_version'\\)": + get: + summary: The NuGet V2 Feed Single Package Metadata endpoint + description: This feature was introduced in GitLab 16.4 + produces: + - application/json + parameters: + - in: path + name: project_id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: package_name + description: The NuGet package name + type: string + required: true + example: mynugetpkg + - in: query + name: package_version + description: The NuGet package version + type: string + required: true + example: 1.3.0.17 + responses: + '200': + description: The NuGet V2 Feed Single Package Metadata endpoint + '404': + description: Not Found + '400': + description: Bad Request + tags: + - nuget_packages + operationId: getApiV4ProjectsProjectIdPackagesNugetV2Packages\(id='*packageName',version='*packageVersion'\) + "/api/v4/projects/{id}/packages/{package_id}/package_files": + get: + summary: List package files + description: Get a list of package files of a single package + produces: + - application/json + parameters: + - in: path + name: id + description: ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_id + description: ID of a package + type: integer + format: int32 + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: order_by + description: Return package files ordered by `id`, `created_at` or `file_name` + type: string + default: id + enum: + - id + - created_at + - file_name + required: false + - in: query + name: sort + description: Return package files sorted in `asc` or `desc` order. + type: string + default: asc + enum: + - asc + - desc + required: false + responses: + '200': + description: List package files + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_PackageFile" + tags: + - package_files + operationId: getApiV4ProjectsIdPackagesPackageIdPackageFiles + "/api/v4/projects/{id}/packages/{package_id}/package_files/{package_file_id}": + delete: + summary: Delete a package file + description: This feature was introduced in GitLab 13.12 + produces: + - application/json + parameters: + - in: path + name: id + description: ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_id + description: ID of a package + type: integer + format: int32 + required: true + - in: path + name: package_file_id + description: ID of a package file + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a package file + '403': + description: Forbidden + '404': + description: Not found + tags: + - package_files + operationId: deleteApiV4ProjectsIdPackagesPackageIdPackageFilesPackageFileId + "/api/v4/projects/{id}/pages": + delete: + summary: Unpublish pages + description: Remove pages. The user must have administrator access. This feature + was introduced in GitLab 12.6 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + responses: + '204': + description: Unpublish pages + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - pages + operationId: deleteApiV4ProjectsIdPages + patch: + summary: Update pages settings + description: Update page settings for a project. User must have administrative + access. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - name: patchApiV4ProjectsIdPages + in: body + required: true + schema: + "$ref": "#/definitions/patchApiV4ProjectsIdPages" + responses: + '200': + description: Update pages settings + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - pages + operationId: patchApiV4ProjectsIdPages + get: + summary: Get pages settings + description: Get pages URL and other settings. This feature was introduced in + Gitlab 16.8 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + responses: + '200': + description: Get pages settings + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - pages + operationId: getApiV4ProjectsIdPages + "/api/v4/projects/{id}/pages/domains": + get: + description: Get all pages domains + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get all pages domains + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_PagesDomain" + tags: + - pages_domains + operationId: getApiV4ProjectsIdPagesDomains + post: + description: Create a new pages domain + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - name: postApiV4ProjectsIdPagesDomains + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdPagesDomains" + responses: + '201': + description: Create a new pages domain + schema: + "$ref": "#/definitions/API_Entities_PagesDomain" + tags: + - projects + operationId: postApiV4ProjectsIdPagesDomains + "/api/v4/projects/{id}/pages/domains/{domain}": + get: + description: Get a single pages domain + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: domain + description: The domain + type: string + required: true + responses: + '200': + description: Get a single pages domain + schema: + "$ref": "#/definitions/API_Entities_PagesDomain" + tags: + - projects + operationId: getApiV4ProjectsIdPagesDomainsDomain + put: + description: Updates a pages domain + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: domain + description: The domain + type: string + required: true + - name: putApiV4ProjectsIdPagesDomainsDomain + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPagesDomainsDomain" + responses: + '200': + description: Updates a pages domain + tags: + - projects + operationId: putApiV4ProjectsIdPagesDomainsDomain + delete: + description: Delete a pages domain + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: domain + description: The domain + type: string + required: true + responses: + '204': + description: Delete a pages domain + tags: + - projects + operationId: deleteApiV4ProjectsIdPagesDomainsDomain + "/api/v4/projects/{id}/pages/domains/{domain}/verify": + put: + description: Verify a pages domain + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project owned by the authenticated + user + type: string + required: true + - in: path + name: domain + description: The domain to verify + type: string + required: true + responses: + '200': + description: Verify a pages domain + schema: + "$ref": "#/definitions/API_Entities_PagesDomain" + tags: + - projects + operationId: putApiV4ProjectsIdPagesDomainsDomainVerify + "/api/v4/projects/{id}/avatar": + get: + summary: Download a project avatar + description: This feature was introduced in GitLab 16.9 + produces: + - application/json + parameters: + - in: path + name: id + description: ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Download a project avatar + tags: + - project_avatar + operationId: getApiV4ProjectsIdAvatar + "/api/v4/projects/{id}/clusters": + get: + summary: List project clusters + description: This feature was introduced in GitLab 11.7. Returns a list of project + clusters. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List project clusters + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Cluster" + '403': + description: Forbidden + tags: + - clusters + operationId: getApiV4ProjectsIdClusters + "/api/v4/projects/{id}/clusters/{cluster_id}": + get: + summary: Get a single project cluster + description: This feature was introduced in GitLab 11.7. Gets a single project + cluster. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: cluster_id + description: The cluster ID + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single project cluster + schema: + "$ref": "#/definitions/API_Entities_ClusterProject" + '403': + description: Forbidden + '404': + description: Not found + tags: + - clusters + operationId: getApiV4ProjectsIdClustersClusterId + put: + summary: Edit project cluster + description: This feature was introduced in GitLab 11.7. Updates an existing + project cluster. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: cluster_id + description: The cluster ID + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdClustersClusterId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdClustersClusterId" + responses: + '200': + description: Edit project cluster + schema: + "$ref": "#/definitions/API_Entities_ClusterProject" + '400': + description: Validation error + '403': + description: Forbidden + '404': + description: Not found + tags: + - clusters + operationId: putApiV4ProjectsIdClustersClusterId + delete: + summary: Delete project cluster + description: This feature was introduced in GitLab 11.7. Deletes an existing + project cluster. Does not remove existing resources within the connected Kubernetes + cluster. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: cluster_id + description: The Cluster ID + type: integer + format: int32 + required: true + responses: + '403': + description: Forbidden + '204': + description: Delete project cluster + schema: + "$ref": "#/definitions/API_Entities_ClusterProject" + '404': + description: Not found + tags: + - clusters + operationId: deleteApiV4ProjectsIdClustersClusterId + "/api/v4/projects/{id}/clusters/user": + post: + summary: Add existing cluster to project + description: This feature was introduced in GitLab 11.7. Adds an existing Kubernetes + cluster to the project. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdClustersUser + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdClustersUser" + responses: + '201': + description: Add existing cluster to project + schema: + "$ref": "#/definitions/API_Entities_ClusterProject" + '400': + description: Validation error + '403': + description: Forbidden + '404': + description: Not found + tags: + - clusters + operationId: postApiV4ProjectsIdClustersUser + "/api/v4/projects/{id}/registry/repositories": + get: + summary: List container repositories within a project + description: This feature was introduced in GitLab 11.8. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: tags + description: Determines if tags should be included + type: boolean + default: false + required: false + - in: query + name: tags_count + description: Determines if the tags count should be included + type: boolean + default: false + required: false + responses: + '200': + description: List container repositories within a project + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_ContainerRegistry_Repository" + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - container_registry + operationId: getApiV4ProjectsIdRegistryRepositories + "/api/v4/projects/{id}/registry/repositories/{repository_id}": + delete: + summary: Delete repository + description: This feature was introduced in GitLab 11.8. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: repository_id + description: The ID of the repository + type: integer + format: int32 + required: true + responses: + '204': + description: Success + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - container_registry + operationId: deleteApiV4ProjectsIdRegistryRepositoriesRepositoryId + "/api/v4/projects/{id}/registry/repositories/{repository_id}/tags": + get: + summary: List tags of a repository + description: This feature was introduced in GitLab 11.8. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: repository_id + description: The ID of the repository + type: integer + format: int32 + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List tags of a repository + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_ContainerRegistry_Tag" + '401': + description: Unauthorized + '404': + description: Not Found + '405': + description: Method Not Allowed + tags: + - container_registry + operationId: getApiV4ProjectsIdRegistryRepositoriesRepositoryIdTags + delete: + summary: Delete repository tags (in bulk) + description: This feature was introduced in GitLab 11.8. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: repository_id + description: The ID of the repository + type: integer + format: int32 + required: true + - in: query + name: name_regex_delete + description: The tag name regexp to delete, specify .* to delete all + type: string + required: false + - in: query + name: name_regex + description: The tag name regexp to delete, specify .* to delete all + type: string + required: false + - in: query + name: name_regex_keep + description: The tag name regexp to retain + type: string + required: false + - in: query + name: keep_n + description: Keep n of latest tags with matching name + type: integer + format: int32 + required: false + - in: query + name: older_than + description: 'Delete older than: 1h, 1d, 1month' + type: string + required: false + responses: + '204': + description: Success + '400': + description: Bad Request + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - container_registry + operationId: deleteApiV4ProjectsIdRegistryRepositoriesRepositoryIdTags + "/api/v4/projects/{id}/registry/repositories/{repository_id}/tags/{tag_name}": + get: + summary: Get details about a repository tag + description: This feature was introduced in GitLab 11.8. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: repository_id + description: The ID of the repository + type: integer + format: int32 + required: true + - in: path + name: tag_name + description: The name of the tag + type: string + required: true + responses: + '200': + description: Get details about a repository tag + schema: + "$ref": "#/definitions/API_Entities_ContainerRegistry_TagDetails" + '400': + description: Bad Request + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - container_registry + operationId: getApiV4ProjectsIdRegistryRepositoriesRepositoryIdTagsTagName + delete: + summary: Delete repository tag + description: This feature was introduced in GitLab 11.8. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: repository_id + description: The ID of the repository + type: integer + format: int32 + required: true + - in: path + name: tag_name + description: The name of the tag + type: string + required: true + responses: + '204': + description: Success + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - container_registry + operationId: deleteApiV4ProjectsIdRegistryRepositoriesRepositoryIdTagsTagName + "/api/v4/projects/{id}/registry/protection/repository/rules": + get: + description: Get list of container registry protection rules for a project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Get list of container registry protection rules for a project + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Projects_ContainerRegistry_Protection_Rule" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - projects + operationId: getApiV4ProjectsIdRegistryProtectionRepositoryRules + post: + description: Create a container protection rule for a project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdRegistryProtectionRepositoryRules + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdRegistryProtectionRepositoryRules" + responses: + '201': + description: Create a container protection rule for a project + schema: + "$ref": "#/definitions/API_Entities_Projects_ContainerRegistry_Protection_Rule" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + '422': + description: Unprocessable Entity + tags: + - projects + operationId: postApiV4ProjectsIdRegistryProtectionRepositoryRules + "/api/v4/projects/{id}/registry/protection/repository/rules/{protection_rule_id}": + patch: + description: Update a container protection rule for a project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: protection_rule_id + description: The ID of the container protection rule + type: integer + format: int32 + required: true + - name: patchApiV4ProjectsIdRegistryProtectionRepositoryRulesProtectionRuleId + in: body + required: true + schema: + "$ref": "#/definitions/patchApiV4ProjectsIdRegistryProtectionRepositoryRulesProtectionRuleId" + responses: + '200': + description: Update a container protection rule for a project + schema: + "$ref": "#/definitions/API_Entities_Projects_ContainerRegistry_Protection_Rule" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + '422': + description: Unprocessable Entity + tags: + - projects + operationId: patchApiV4ProjectsIdRegistryProtectionRepositoryRulesProtectionRuleId + delete: + description: Delete container protection rule + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: protection_rule_id + description: The ID of the container protection rule + type: integer + format: int32 + required: true + responses: + '204': + description: 204 No Content + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - projects + operationId: deleteApiV4ProjectsIdRegistryProtectionRepositoryRulesProtectionRuleId + "/api/v4/projects/{id}/debian_distributions": + post: + summary: Create a Debian Distribution + description: This feature was introduced in 14.0 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdDebianDistributions + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdDebianDistributions" + responses: + '201': + description: Create a Debian Distribution + schema: + "$ref": "#/definitions/API_Entities_Packages_Debian_Distribution" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_distribution + operationId: postApiV4ProjectsIdDebianDistributions + get: + summary: Get a list of Debian Distributions + description: This feature was introduced in 14.0 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: codename + description: The Debian Codename + type: string + required: false + example: sid + - in: query + name: suite + description: The Debian Suite + type: string + required: false + example: unstable + - in: query + name: origin + description: The Debian Origin + type: string + required: false + example: Grep + - in: query + name: label + description: The Debian Label + type: string + required: false + example: grep.be + - in: query + name: version + description: The Debian Version + type: string + required: false + example: '12' + - in: query + name: description + description: The Debian Description + type: string + required: false + example: My description + - in: query + name: valid_time_duration_seconds + description: The duration before the Release file should be considered expired + by the client + type: integer + format: int32 + required: false + example: 604800 + - in: query + name: components + description: The list of Components + type: array + items: + type: string + required: false + example: main + - in: query + name: architectures + description: The list of Architectures + type: array + items: + type: string + required: false + example: amd64 + responses: + '200': + description: Get a list of Debian Distributions + schema: + "$ref": "#/definitions/API_Entities_Packages_Debian_Distribution" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_distribution + operationId: getApiV4ProjectsIdDebianDistributions + "/api/v4/projects/{id}/debian_distributions/{codename}": + get: + summary: Get a Debian Distribution + description: This feature was introduced in 14.0 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: codename + description: The Debian Codename + type: string + required: true + example: sid + responses: + '200': + description: Get a Debian Distribution + schema: + "$ref": "#/definitions/API_Entities_Packages_Debian_Distribution" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_distribution + operationId: getApiV4ProjectsIdDebianDistributionsCodename + put: + summary: Update a Debian Distribution + description: This feature was introduced in 14.0 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: codename + description: The Debian Codename + type: string + required: true + example: sid + - name: putApiV4ProjectsIdDebianDistributionsCodename + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdDebianDistributionsCodename" + responses: + '200': + description: Update a Debian Distribution + schema: + "$ref": "#/definitions/API_Entities_Packages_Debian_Distribution" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_distribution + operationId: putApiV4ProjectsIdDebianDistributionsCodename + delete: + summary: Delete a Debian Distribution + description: This feature was introduced in 14.0 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: codename + description: The Debian Codename + type: string + required: true + example: sid + - in: query + name: suite + description: The Debian Suite + type: string + required: false + example: unstable + - in: query + name: origin + description: The Debian Origin + type: string + required: false + example: Grep + - in: query + name: label + description: The Debian Label + type: string + required: false + example: grep.be + - in: query + name: version + description: The Debian Version + type: string + required: false + example: '12' + - in: query + name: description + description: The Debian Description + type: string + required: false + example: My description + - in: query + name: valid_time_duration_seconds + description: The duration before the Release file should be considered expired + by the client + type: integer + format: int32 + required: false + example: 604800 + - in: query + name: components + description: The list of Components + type: array + items: + type: string + required: false + example: main + - in: query + name: architectures + description: The list of Architectures + type: array + items: + type: string + required: false + example: amd64 + responses: + '202': + description: Delete a Debian Distribution + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_distribution + operationId: deleteApiV4ProjectsIdDebianDistributionsCodename + "/api/v4/projects/{id}/debian_distributions/{codename}/key.asc": + get: + summary: Get a Debian Distribution Key + description: This feature was introduced in 14.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: codename + description: The Debian Codename + type: string + required: true + example: sid + responses: + '200': + description: Get a Debian Distribution Key + schema: + "$ref": "#/definitions/API_Entities_Packages_Debian_Distribution" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - debian_distribution + operationId: getApiV4ProjectsIdDebianDistributionsCodenameKeyAsc + "/api/v4/projects/{id}/events": + get: + description: List a project's visible events + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: action + description: Event action to filter on + type: string + required: false + - in: query + name: target_type + description: Event target type to filter on + type: string + enum: + - issue + - milestone + - merge_request + - note + - project + - snippet + - user + - wiki + - design + required: false + - in: query + name: before + description: Include only events created before this date + type: string + format: date + required: false + - in: query + name: after + description: Include only events created after this date + type: string + format: date + required: false + - in: query + name: sort + description: Return events sorted in ascending and descending order + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List a project's visible events + schema: + "$ref": "#/definitions/API_Entities_Event" + tags: + - projects + operationId: getApiV4ProjectsIdEvents + "/api/v4/projects/{id}/export": + get: + summary: Get export status + description: This feature was introduced in GitLab 10.6. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Get export status + schema: + "$ref": "#/definitions/API_Entities_ProjectExportStatus" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '503': + description: Service unavailable + tags: + - project_export + operationId: getApiV4ProjectsIdExport + post: + summary: Start export + description: This feature was introduced in GitLab 10.6. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdExport + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdExport" + responses: + '202': + description: Start export + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '429': + description: Too many requests + '503': + description: Service unavailable + tags: + - project_export + operationId: postApiV4ProjectsIdExport + "/api/v4/projects/{id}/export/download": + get: + summary: Download export + description: This feature was introduced in GitLab 10.6. + produces: + - application/octet-stream + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Download export + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '503': + description: Service unavailable + tags: + - project_export + operationId: getApiV4ProjectsIdExportDownload + "/api/v4/projects/{id}/export_relations": + post: + summary: Start relations export + description: This feature was introduced in GitLab 14.4 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdExportRelations + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdExportRelations" + responses: + '202': + description: Start relations export + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '503': + description: Service unavailable + tags: + - project_export + operationId: postApiV4ProjectsIdExportRelations + "/api/v4/projects/{id}/export_relations/download": + get: + summary: Download relations export + description: This feature was introduced in GitLab 14.4 + produces: + - application/octet-stream + - application/gzip + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: relation + description: Project relation name + type: string + required: true + - in: query + name: batched + description: Whether to download in batches + type: boolean + required: false + - in: query + name: batch_number + description: Batch number to download + type: integer + format: int32 + required: false + responses: + '200': + description: Download relations export + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '500': + description: Internal Server Error + '503': + description: Service unavailable + tags: + - project_export + operationId: getApiV4ProjectsIdExportRelationsDownload + "/api/v4/projects/{id}/export_relations/status": + get: + summary: Relations export status + description: This feature was introduced in GitLab 14.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: relation + description: Project relation name + type: string + required: false + responses: + '200': + description: Relations export status + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_BulkImports_ExportStatus" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '503': + description: Service unavailable + tags: + - project_export + operationId: getApiV4ProjectsIdExportRelationsStatus + "/api/v4/projects/{id}/hooks/{hook_id}/url_variables/{key}": + put: + description: Set a url variable + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: hook_id + description: The ID of the hook + type: integer + format: int32 + required: true + - in: path + name: key + description: The key of the variable + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdHooksHookIdUrlVariablesKey + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdHooksHookIdUrlVariablesKey" + responses: + '200': + description: Set a url variable + tags: + - projects + operationId: putApiV4ProjectsIdHooksHookIdUrlVariablesKey + delete: + description: Un-Set a url variable + produces: + - application/json + parameters: + - in: path + name: hook_id + description: The ID of the hook + type: integer + format: int32 + required: true + - in: path + name: key + description: The key of the variable + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '204': + description: Un-Set a url variable + tags: + - projects + operationId: deleteApiV4ProjectsIdHooksHookIdUrlVariablesKey + "/api/v4/projects/{id}/hooks/{hook_id}/custom_headers/{key}": + put: + description: Set a custom header + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: hook_id + description: The ID of the hook + type: integer + format: int32 + required: true + - in: path + name: key + description: The key of the custom header + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdHooksHookIdCustomHeadersKey + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdHooksHookIdCustomHeadersKey" + responses: + '200': + description: Set a custom header + tags: + - projects + operationId: putApiV4ProjectsIdHooksHookIdCustomHeadersKey + delete: + description: Un-Set a custom header + produces: + - application/json + parameters: + - in: path + name: hook_id + description: The ID of the hook + type: integer + format: int32 + required: true + - in: path + name: key + description: The key of the custom header + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '204': + description: Un-Set a custom header + tags: + - projects + operationId: deleteApiV4ProjectsIdHooksHookIdCustomHeadersKey + "/api/v4/projects/{id}/hooks": + get: + summary: List project hooks + description: Get a list of project hooks + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List project hooks + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_ProjectHook" + tags: + - project_hooks + operationId: getApiV4ProjectsIdHooks + post: + summary: Add project hook + description: Adds a hook to a specified project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdHooks + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdHooks" + responses: + '201': + description: Add project hook + schema: + "$ref": "#/definitions/API_Entities_ProjectHook" + '400': + description: Validation error + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - project_hooks + operationId: postApiV4ProjectsIdHooks + "/api/v4/projects/{id}/hooks/{hook_id}": + get: + summary: Get project hook + description: Get a specific hook for a project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: hook_id + description: The ID of a project hook + type: integer + format: int32 + required: true + responses: + '200': + description: Get project hook + schema: + "$ref": "#/definitions/API_Entities_ProjectHook" + '404': + description: Not found + tags: + - project_hooks + operationId: getApiV4ProjectsIdHooksHookId + put: + summary: Edit project hook + description: Edits a hook for a specified project. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: hook_id + description: The ID of the project hook + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdHooksHookId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdHooksHookId" + responses: + '200': + description: Edit project hook + schema: + "$ref": "#/definitions/API_Entities_ProjectHook" + '400': + description: Validation error + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - project_hooks + operationId: putApiV4ProjectsIdHooksHookId + delete: + summary: Delete a project hook + description: Removes a hook from a project. This is an idempotent method and + can be called multiple times. Either the hook is available or not. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: hook_id + description: The ID of the project hook + type: integer + format: int32 + required: true + responses: + '204': + description: Not found + tags: + - project_hooks + operationId: deleteApiV4ProjectsIdHooksHookId + "/api/v4/projects/{id}/hooks/{hook_id}/events": + get: + summary: Get events for a given hook id + description: List web hook logs by hook id + produces: + - application/json + parameters: + - in: query + name: status + type: array + items: + type: string + enum: + - '100' + - '101' + - '102' + - '103' + - '200' + - '201' + - '202' + - '203' + - '204' + - '205' + - '206' + - '207' + - '208' + - '226' + - '300' + - '301' + - '302' + - '303' + - '304' + - '305' + - '306' + - '307' + - '308' + - '400' + - '401' + - '402' + - '403' + - '404' + - '405' + - '406' + - '407' + - '408' + - '409' + - '410' + - '411' + - '412' + - '413' + - '414' + - '415' + - '416' + - '417' + - '421' + - '422' + - '423' + - '424' + - '425' + - '426' + - '428' + - '429' + - '431' + - '451' + - '500' + - '501' + - '502' + - '503' + - '504' + - '505' + - '506' + - '507' + - '508' + - '509' + - '510' + - '511' + - successful + - client_failure + - server_failure + required: false + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + minimum: 1 + maximum: 20 + required: false + example: 20 + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: hook_id + type: integer + format: int32 + required: true + responses: + '200': + description: Get events for a given hook id + '400': + description: Bad request + '404': + description: Not found + '403': + description: Forbidden + tags: + - projects + operationId: getApiV4ProjectsIdHooksHookIdEvents + "/api/v4/projects/{id}/hooks/{hook_id}/test/{trigger}": + post: + summary: Triggers a hook test + description: Triggers a hook test + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: hook_id + description: The ID of the hook + type: integer + format: int32 + required: true + - in: path + name: trigger + description: The type of trigger hook + type: string + enum: + - confidential_issues_events + - confidential_note_events + - deployment_events + - emoji_events + - feature_flag_events + - issues_events + - job_events + - merge_requests_events + - milestone_events + - note_events + - pipeline_events + - push_events + - releases_events + - resource_access_token_events + - tag_push_events + - wiki_page_events + - vulnerability_events + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '201': + description: Triggers a hook test + '400': + description: Bad request + '404': + description: Not found + '422': + description: Unprocessable entity + '429': + description: Too many requests + tags: + - projects + operationId: postApiV4ProjectsIdHooksHookIdTestTrigger + "/api/v4/projects/{id}/hooks/{hook_id}/events/{hook_log_id}/resend": + post: + summary: Resend a webhook event + description: Resend a webhook event + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: hook_id + type: integer + format: int32 + required: true + - in: path + name: hook_log_id + type: integer + format: int32 + required: true + responses: + '201': + description: Resend a webhook event + '422': + description: Unprocessable entity + '404': + description: Not found + '429': + description: Too many requests + tags: + - projects + operationId: postApiV4ProjectsIdHooksHookIdEventsHookLogIdResend + "/api/v4/projects/import/authorize": + post: + summary: Workhorse authorize the project import upload + description: This feature was introduced in GitLab 12.9 + produces: + - application/json + consumes: + - application/json + responses: + '201': + description: Workhorse authorize the project import upload + tags: + - project_import + operationId: postApiV4ProjectsImportAuthorize + "/api/v4/projects/import": + post: + summary: Create a new project import + description: This feature was introduced in GitLab 10.6. + produces: + - application/json + consumes: + - multipart/form-data + parameters: + - in: formData + name: path + description: The new project path and name + type: string + required: true + - in: formData + name: file + description: The project export file to be imported + type: file + required: true + - in: formData + name: name + description: The name of the project to be imported. Defaults to the path + of the project if not provided. + type: string + required: false + - in: formData + name: namespace + description: The ID or name of the namespace that the project will be imported + into. Defaults to the current user's namespace. + type: string + required: false + - in: formData + name: overwrite + description: If there is a project in the same namespace and with the same + name overwrite it + type: boolean + default: false + required: false + - in: formData + name: override_params[description] + description: The description of the project + type: string + required: false + - in: formData + name: override_params[build_git_strategy] + description: The Git strategy. Defaults to `fetch` + type: string + enum: + - fetch + - clone + required: false + - in: formData + name: override_params[build_timeout] + description: Build timeout + type: integer + format: int32 + required: false + - in: formData + name: override_params[auto_cancel_pending_pipelines] + description: Auto-cancel pending pipelines + type: string + enum: + - disabled + - enabled + required: false + - in: formData + name: override_params[ci_config_path] + description: The path to CI config file. Defaults to `.gitlab-ci.yml` + type: string + required: false + - in: formData + name: override_params[service_desk_enabled] + description: Disable or enable the service desk + type: boolean + required: false + - in: formData + name: override_params[issues_enabled] + description: Flag indication if the issue tracker is enabled + type: boolean + required: false + - in: formData + name: override_params[merge_requests_enabled] + description: Flag indication if merge requests are enabled + type: boolean + required: false + - in: formData + name: override_params[wiki_enabled] + description: Flag indication if the wiki is enabled + type: boolean + required: false + - in: formData + name: override_params[jobs_enabled] + description: Flag indication if jobs are enabled + type: boolean + required: false + - in: formData + name: override_params[snippets_enabled] + description: Flag indication if snippets are enabled + type: boolean + required: false + - in: formData + name: override_params[issues_access_level] + description: Issues access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[repository_access_level] + description: Repository access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[merge_requests_access_level] + description: Merge requests access level. One of `disabled`, `private` or + `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[forking_access_level] + description: Forks access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[wiki_access_level] + description: Wiki access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[builds_access_level] + description: Builds access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[snippets_access_level] + description: Snippets access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[pages_access_level] + description: Pages access level. One of `disabled`, `private`, `enabled` or + `public` + type: string + enum: + - disabled + - private + - enabled + - public + required: false + - in: formData + name: override_params[analytics_access_level] + description: Analytics access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[container_registry_access_level] + description: Controls visibility of the container registry. One of `disabled`, + `private` or `enabled`. `private` will make the container registry accessible + only to project members (reporter role and above). `enabled` will make the + container registry accessible to everyone who has access to the project. + `disabled` will disable the container registry + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[security_and_compliance_access_level] + description: Security and compliance access level. One of `disabled`, `private` + or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[releases_access_level] + description: Releases access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[environments_access_level] + description: Environments access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[feature_flags_access_level] + description: Feature flags access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[infrastructure_access_level] + description: Infrastructure access level. One of `disabled`, `private` or + `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[monitor_access_level] + description: Monitor access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[model_experiments_access_level] + description: Model experiments access level. One of `disabled`, `private` + or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[model_registry_access_level] + description: Model registry access level. One of `disabled`, `private` or + `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[emails_disabled] + description: 'Deprecated: Use emails_enabled instead.' + type: boolean + required: false + - in: formData + name: override_params[emails_enabled] + description: Enable email notifications + type: boolean + required: false + - in: formData + name: override_params[show_default_award_emojis] + description: Show default award emojis + type: boolean + required: false + - in: formData + name: override_params[show_diff_preview_in_email] + description: Include the code diff preview in merge request notification emails + type: boolean + required: false + - in: formData + name: override_params[warn_about_potentially_unwanted_characters] + description: Warn about potentially unwanted characters + type: boolean + required: false + - in: formData + name: override_params[enforce_auth_checks_on_uploads] + description: Enforce auth check on uploads + type: boolean + required: false + - in: formData + name: override_params[shared_runners_enabled] + description: Flag indication if shared runners are enabled for that project + type: boolean + required: false + - in: formData + name: override_params[group_runners_enabled] + description: Flag indication if group runners are enabled for that project + type: boolean + required: false + - in: formData + name: override_params[resolve_outdated_diff_discussions] + description: Automatically resolve merge request diff threads on lines changed + with a push + type: boolean + required: false + - in: formData + name: override_params[remove_source_branch_after_merge] + description: Remove the source branch by default after merge + type: boolean + required: false + - in: formData + name: override_params[container_registry_enabled] + description: 'Deprecated: Use :container_registry_access_level instead. Flag + indication if the container registry is enabled for that project' + type: boolean + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][cadence] + description: Container expiration policy cadence for recurring job + type: string + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][keep_n] + description: Container expiration policy number of images to keep + type: integer + format: int32 + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][older_than] + description: Container expiration policy remove images older than value + type: string + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][name_regex] + description: Container expiration policy regex for image removal + type: string + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][name_regex_keep] + description: Container expiration policy regex for image retention + type: string + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][enabled] + description: Flag indication if container expiration policy is enabled + type: boolean + required: false + - in: formData + name: override_params[lfs_enabled] + description: Flag indication if Git LFS is enabled for that project + type: boolean + required: false + - in: formData + name: override_params[visibility] + description: The visibility of the project. + type: string + enum: + - private + - internal + - public + required: false + - in: formData + name: override_params[public_builds] + description: 'Deprecated: Use public_jobs instead.' + type: boolean + required: false + - in: formData + name: override_params[public_jobs] + description: Perform public builds + type: boolean + required: false + - in: formData + name: override_params[request_access_enabled] + description: Allow users to request member access + type: boolean + required: false + - in: formData + name: override_params[only_allow_merge_if_pipeline_succeeds] + description: Only allow to merge if builds succeed + type: boolean + required: false + - in: formData + name: override_params[allow_merge_on_skipped_pipeline] + description: Allow to merge if pipeline is skipped + type: boolean + required: false + - in: formData + name: override_params[only_allow_merge_if_all_discussions_are_resolved] + description: Only allow to merge if all threads are resolved + type: boolean + required: false + - in: formData + name: override_params[tag_list] + description: 'Deprecated: Use :topics instead' + type: array + items: + type: string + required: false + - in: formData + name: override_params[topics] + description: The list of topics for a project + type: array + items: + type: string + required: false + - in: formData + name: override_params[avatar] + description: Avatar image for project + type: file + required: false + - in: formData + name: override_params[printing_merge_request_link_enabled] + description: Show link to create/view merge request when pushing from the + command line + type: boolean + required: false + - in: formData + name: override_params[merge_method] + description: The merge method used when merging merge requests + type: string + enum: + - ff + - rebase_merge + - merge + required: false + - in: formData + name: override_params[suggestion_commit_message] + description: The commit message used to apply merge request suggestions + type: string + required: false + - in: formData + name: override_params[merge_commit_template] + description: Template used to create merge commit message + type: string + required: false + - in: formData + name: override_params[squash_commit_template] + description: Template used to create squash commit message + type: string + required: false + - in: formData + name: override_params[issue_branch_template] + description: Template used to create a branch from an issue + type: string + required: false + - in: formData + name: override_params[auto_devops_enabled] + description: Flag indication if Auto DevOps is enabled + type: boolean + required: false + - in: formData + name: override_params[auto_devops_deploy_strategy] + description: Auto Deploy strategy + type: string + enum: + - continuous + - manual + - timed_incremental + required: false + - in: formData + name: override_params[autoclose_referenced_issues] + description: Flag indication if referenced issues auto-closing is enabled + type: boolean + required: false + - in: formData + name: override_params[repository_storage] + description: Which storage shard the repository is on. Available only to admins + type: string + required: false + - in: formData + name: override_params[packages_enabled] + description: Enable project packages feature + type: boolean + required: false + - in: formData + name: override_params[squash_option] + description: Squash default for project. One of `never`, `always`, `default_on`, + or `default_off`. + type: string + enum: + - never + - always + - default_on + - default_off + required: false + - in: formData + name: override_params[mr_default_target_self] + description: Merge requests of this forked project targets itself by default + type: boolean + required: false + - in: formData + name: override_params[merge_request_title_regex] + description: The regex the Merge Request must adhere to + type: string + required: false + - in: formData + name: override_params[merge_request_title_regex_description] + description: The description for the regex the Merge Request must adhere to + type: string + required: false + - in: formData + name: override_params[only_allow_merge_if_all_status_checks_passed] + description: Blocks merge requests from merging unless all status checks have + passed + type: boolean + required: false + - in: formData + name: override_params[approvals_before_merge] + description: How many approvers should approve merge request by default + type: integer + format: int32 + required: false + - in: formData + name: override_params[mirror] + description: "[Deprecated] Enables pull mirroring in a project" + type: boolean + required: false + - in: formData + name: override_params[mirror_trigger_builds] + description: "[Deprecated] Pull mirroring triggers builds" + type: boolean + required: false + - in: formData + name: override_params[external_authorization_classification_label] + description: The classification label for the project + type: string + required: false + - in: formData + name: override_params[requirements_access_level] + description: Requirements feature access level. One of `disabled`, `private` + or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[prevent_merge_without_jira_issue] + description: Require an associated issue from Jira + type: boolean + required: false + - in: formData + name: override_params[auto_duo_code_review_enabled] + description: Enable automatic reviews by GitLab Duo on merge requests + type: boolean + required: false + - in: formData + name: file.path + description: Path to locally stored body (generated by Workhorse) + type: string + required: false + - in: formData + name: file.name + description: Real filename as send in Content-Disposition (generated by Workhorse) + type: string + required: false + - in: formData + name: file.type + description: Real content type as send in Content-Type (generated by Workhorse) + type: string + required: false + - in: formData + name: file.size + description: Real size of file (generated by Workhorse) + type: integer + format: int32 + required: false + - in: formData + name: file.md5 + description: MD5 checksum of the file (generated by Workhorse) + type: string + required: false + - in: formData + name: file.sha1 + description: SHA1 checksum of the file (generated by Workhorse) + type: string + required: false + - in: formData + name: file.sha256 + description: SHA256 checksum of the file (generated by Workhorse) + type: string + required: false + - in: formData + name: file.etag + description: Etag of the file (generated by Workhorse) + type: string + required: false + - in: formData + name: file.remote_id + description: Remote_id of the file (generated by Workhorse) + type: string + required: false + - in: formData + name: file.remote_url + description: Remote_url of the file (generated by Workhorse) + type: string + required: false + responses: + '201': + description: Create a new project import + schema: + "$ref": "#/definitions/API_Entities_ProjectImportStatus" + '401': + description: Unauthorized + '403': + description: Forbidden + '400': + description: Bad request + '404': + description: Not found + '503': + description: Service unavailable + tags: + - project_import + operationId: postApiV4ProjectsImport + "/api/v4/projects/{id}/import": + get: + summary: Get a project import status + description: This feature was introduced in GitLab 10.6. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Get a project import status + schema: + "$ref": "#/definitions/API_Entities_ProjectImportStatus" + '401': + description: Unauthorized + '403': + description: Forbidden + '400': + description: Bad request + '404': + description: Not found + '503': + description: Service unavailable + tags: + - project_import + operationId: getApiV4ProjectsIdImport + "/api/v4/projects/remote-import": + post: + summary: Create a new project import using a remote object storage path + description: This feature was introduced in GitLab 13.2. + produces: + - application/json + consumes: + - multipart/form-data + parameters: + - in: formData + name: url + description: The URL for the file. + type: string + required: true + - in: formData + name: path + description: The new project path and name + type: string + required: true + - in: formData + name: name + description: The name of the project to be imported. Defaults to the path + of the project if not provided. + type: string + required: false + - in: formData + name: namespace + description: The ID or name of the namespace that the project will be imported + into. Defaults to the current user's namespace. + type: string + required: false + - in: formData + name: overwrite + description: If there is a project in the same namespace and with the same + name overwrite it + type: boolean + default: false + required: false + - in: formData + name: override_params[description] + description: The description of the project + type: string + required: false + - in: formData + name: override_params[build_git_strategy] + description: The Git strategy. Defaults to `fetch` + type: string + enum: + - fetch + - clone + required: false + - in: formData + name: override_params[build_timeout] + description: Build timeout + type: integer + format: int32 + required: false + - in: formData + name: override_params[auto_cancel_pending_pipelines] + description: Auto-cancel pending pipelines + type: string + enum: + - disabled + - enabled + required: false + - in: formData + name: override_params[ci_config_path] + description: The path to CI config file. Defaults to `.gitlab-ci.yml` + type: string + required: false + - in: formData + name: override_params[service_desk_enabled] + description: Disable or enable the service desk + type: boolean + required: false + - in: formData + name: override_params[issues_enabled] + description: Flag indication if the issue tracker is enabled + type: boolean + required: false + - in: formData + name: override_params[merge_requests_enabled] + description: Flag indication if merge requests are enabled + type: boolean + required: false + - in: formData + name: override_params[wiki_enabled] + description: Flag indication if the wiki is enabled + type: boolean + required: false + - in: formData + name: override_params[jobs_enabled] + description: Flag indication if jobs are enabled + type: boolean + required: false + - in: formData + name: override_params[snippets_enabled] + description: Flag indication if snippets are enabled + type: boolean + required: false + - in: formData + name: override_params[issues_access_level] + description: Issues access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[repository_access_level] + description: Repository access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[merge_requests_access_level] + description: Merge requests access level. One of `disabled`, `private` or + `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[forking_access_level] + description: Forks access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[wiki_access_level] + description: Wiki access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[builds_access_level] + description: Builds access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[snippets_access_level] + description: Snippets access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[pages_access_level] + description: Pages access level. One of `disabled`, `private`, `enabled` or + `public` + type: string + enum: + - disabled + - private + - enabled + - public + required: false + - in: formData + name: override_params[analytics_access_level] + description: Analytics access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[container_registry_access_level] + description: Controls visibility of the container registry. One of `disabled`, + `private` or `enabled`. `private` will make the container registry accessible + only to project members (reporter role and above). `enabled` will make the + container registry accessible to everyone who has access to the project. + `disabled` will disable the container registry + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[security_and_compliance_access_level] + description: Security and compliance access level. One of `disabled`, `private` + or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[releases_access_level] + description: Releases access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[environments_access_level] + description: Environments access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[feature_flags_access_level] + description: Feature flags access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[infrastructure_access_level] + description: Infrastructure access level. One of `disabled`, `private` or + `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[monitor_access_level] + description: Monitor access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[model_experiments_access_level] + description: Model experiments access level. One of `disabled`, `private` + or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[model_registry_access_level] + description: Model registry access level. One of `disabled`, `private` or + `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[emails_disabled] + description: 'Deprecated: Use emails_enabled instead.' + type: boolean + required: false + - in: formData + name: override_params[emails_enabled] + description: Enable email notifications + type: boolean + required: false + - in: formData + name: override_params[show_default_award_emojis] + description: Show default award emojis + type: boolean + required: false + - in: formData + name: override_params[show_diff_preview_in_email] + description: Include the code diff preview in merge request notification emails + type: boolean + required: false + - in: formData + name: override_params[warn_about_potentially_unwanted_characters] + description: Warn about potentially unwanted characters + type: boolean + required: false + - in: formData + name: override_params[enforce_auth_checks_on_uploads] + description: Enforce auth check on uploads + type: boolean + required: false + - in: formData + name: override_params[shared_runners_enabled] + description: Flag indication if shared runners are enabled for that project + type: boolean + required: false + - in: formData + name: override_params[group_runners_enabled] + description: Flag indication if group runners are enabled for that project + type: boolean + required: false + - in: formData + name: override_params[resolve_outdated_diff_discussions] + description: Automatically resolve merge request diff threads on lines changed + with a push + type: boolean + required: false + - in: formData + name: override_params[remove_source_branch_after_merge] + description: Remove the source branch by default after merge + type: boolean + required: false + - in: formData + name: override_params[container_registry_enabled] + description: 'Deprecated: Use :container_registry_access_level instead. Flag + indication if the container registry is enabled for that project' + type: boolean + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][cadence] + description: Container expiration policy cadence for recurring job + type: string + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][keep_n] + description: Container expiration policy number of images to keep + type: integer + format: int32 + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][older_than] + description: Container expiration policy remove images older than value + type: string + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][name_regex] + description: Container expiration policy regex for image removal + type: string + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][name_regex_keep] + description: Container expiration policy regex for image retention + type: string + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][enabled] + description: Flag indication if container expiration policy is enabled + type: boolean + required: false + - in: formData + name: override_params[lfs_enabled] + description: Flag indication if Git LFS is enabled for that project + type: boolean + required: false + - in: formData + name: override_params[visibility] + description: The visibility of the project. + type: string + enum: + - private + - internal + - public + required: false + - in: formData + name: override_params[public_builds] + description: 'Deprecated: Use public_jobs instead.' + type: boolean + required: false + - in: formData + name: override_params[public_jobs] + description: Perform public builds + type: boolean + required: false + - in: formData + name: override_params[request_access_enabled] + description: Allow users to request member access + type: boolean + required: false + - in: formData + name: override_params[only_allow_merge_if_pipeline_succeeds] + description: Only allow to merge if builds succeed + type: boolean + required: false + - in: formData + name: override_params[allow_merge_on_skipped_pipeline] + description: Allow to merge if pipeline is skipped + type: boolean + required: false + - in: formData + name: override_params[only_allow_merge_if_all_discussions_are_resolved] + description: Only allow to merge if all threads are resolved + type: boolean + required: false + - in: formData + name: override_params[tag_list] + description: 'Deprecated: Use :topics instead' + type: array + items: + type: string + required: false + - in: formData + name: override_params[topics] + description: The list of topics for a project + type: array + items: + type: string + required: false + - in: formData + name: override_params[avatar] + description: Avatar image for project + type: file + required: false + - in: formData + name: override_params[printing_merge_request_link_enabled] + description: Show link to create/view merge request when pushing from the + command line + type: boolean + required: false + - in: formData + name: override_params[merge_method] + description: The merge method used when merging merge requests + type: string + enum: + - ff + - rebase_merge + - merge + required: false + - in: formData + name: override_params[suggestion_commit_message] + description: The commit message used to apply merge request suggestions + type: string + required: false + - in: formData + name: override_params[merge_commit_template] + description: Template used to create merge commit message + type: string + required: false + - in: formData + name: override_params[squash_commit_template] + description: Template used to create squash commit message + type: string + required: false + - in: formData + name: override_params[issue_branch_template] + description: Template used to create a branch from an issue + type: string + required: false + - in: formData + name: override_params[auto_devops_enabled] + description: Flag indication if Auto DevOps is enabled + type: boolean + required: false + - in: formData + name: override_params[auto_devops_deploy_strategy] + description: Auto Deploy strategy + type: string + enum: + - continuous + - manual + - timed_incremental + required: false + - in: formData + name: override_params[autoclose_referenced_issues] + description: Flag indication if referenced issues auto-closing is enabled + type: boolean + required: false + - in: formData + name: override_params[repository_storage] + description: Which storage shard the repository is on. Available only to admins + type: string + required: false + - in: formData + name: override_params[packages_enabled] + description: Enable project packages feature + type: boolean + required: false + - in: formData + name: override_params[squash_option] + description: Squash default for project. One of `never`, `always`, `default_on`, + or `default_off`. + type: string + enum: + - never + - always + - default_on + - default_off + required: false + - in: formData + name: override_params[mr_default_target_self] + description: Merge requests of this forked project targets itself by default + type: boolean + required: false + - in: formData + name: override_params[merge_request_title_regex] + description: The regex the Merge Request must adhere to + type: string + required: false + - in: formData + name: override_params[merge_request_title_regex_description] + description: The description for the regex the Merge Request must adhere to + type: string + required: false + - in: formData + name: override_params[only_allow_merge_if_all_status_checks_passed] + description: Blocks merge requests from merging unless all status checks have + passed + type: boolean + required: false + - in: formData + name: override_params[approvals_before_merge] + description: How many approvers should approve merge request by default + type: integer + format: int32 + required: false + - in: formData + name: override_params[mirror] + description: "[Deprecated] Enables pull mirroring in a project" + type: boolean + required: false + - in: formData + name: override_params[mirror_trigger_builds] + description: "[Deprecated] Pull mirroring triggers builds" + type: boolean + required: false + - in: formData + name: override_params[external_authorization_classification_label] + description: The classification label for the project + type: string + required: false + - in: formData + name: override_params[requirements_access_level] + description: Requirements feature access level. One of `disabled`, `private` + or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[prevent_merge_without_jira_issue] + description: Require an associated issue from Jira + type: boolean + required: false + - in: formData + name: override_params[auto_duo_code_review_enabled] + description: Enable automatic reviews by GitLab Duo on merge requests + type: boolean + required: false + responses: + '201': + description: Create a new project import using a remote object storage path + schema: + "$ref": "#/definitions/API_Entities_ProjectImportStatus" + '401': + description: Unauthorized + '403': + description: Forbidden + '400': + description: Bad request + '404': + description: Not found + '429': + description: Too many requests + '503': + description: Service unavailable + tags: + - project_import + operationId: postApiV4ProjectsRemoteImport + "/api/v4/projects/import-relation/authorize": + post: + summary: Workhorse authorize the project relation import upload + description: This feature was introduced in GitLab 16.11 + produces: + - application/json + consumes: + - application/json + responses: + '201': + description: Workhorse authorize the project relation import upload + tags: + - project_import + operationId: postApiV4ProjectsImportRelationAuthorize + "/api/v4/projects/import-relation": + post: + summary: Re-import a relation into a project + description: This feature was introduced in GitLab 16.11. + produces: + - application/json + consumes: + - multipart/form-data + parameters: + - in: formData + name: path + description: The project path and name + type: string + required: true + - in: formData + name: file + description: The project export file from which to extract the relation. + type: file + required: true + - in: formData + name: relation + description: The relation to import. Must be one of issues, merge_requests, + ci_pipelines, or milestones. + type: string + required: true + - in: formData + name: file.path + description: Path to locally stored body (generated by Workhorse) + type: string + required: false + - in: formData + name: file.name + description: Real filename as sent in Content-Disposition (generated by Workhorse) + type: string + required: false + - in: formData + name: file.type + description: Real content type as send in Content-Type (generated by Workhorse) + type: string + required: false + - in: formData + name: file.size + description: Real size of file (generated by Workhorse) + type: integer + format: int32 + required: false + - in: formData + name: file.md5 + description: MD5 checksum of the file (generated by Workhorse) + type: string + required: false + - in: formData + name: file.sha1 + description: SHA1 checksum of the file (generated by Workhorse) + type: string + required: false + - in: formData + name: file.sha256 + description: SHA256 checksum of the file (generated by Workhorse) + type: string + required: false + - in: formData + name: file.etag + description: Etag of the file (generated by Workhorse) + type: string + required: false + - in: formData + name: file.remote_id + description: Remote_id of the file (generated by Workhorse) + type: string + required: false + - in: formData + name: file.remote_url + description: Remote_url of the file (generated by Workhorse) + type: string + required: false + responses: + '201': + description: Re-import a relation into a project + schema: + "$ref": "#/definitions/API_Entities_RelationImportTracker" + '401': + description: Unauthorized + '403': + description: Forbidden + '400': + description: Bad request + '404': + description: Not found + '503': + description: Service unavailable + tags: + - project_import + operationId: postApiV4ProjectsImportRelation + "/api/v4/projects/{id}/relation-imports": + get: + summary: Get the statuses of relation imports for specified project + description: This feature was introduced in GitLab 16.11. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Get the statuses of relation imports for specified project + schema: + "$ref": "#/definitions/API_Entities_ProjectImportStatus" + '401': + description: Unauthorized + '403': + description: Forbidden + '400': + description: Bad request + '404': + description: Not found + '503': + description: Service unavailable + tags: + - project_import + operationId: getApiV4ProjectsIdRelationImports + "/api/v4/projects/remote-import-s3": + post: + summary: Create a new project import using a file from AWS S3 + description: This feature was introduced in GitLab 14.9. + produces: + - application/json + consumes: + - multipart/form-data + parameters: + - in: formData + name: region + description: AWS region + type: string + required: true + - in: formData + name: bucket_name + description: Bucket name + type: string + required: true + - in: formData + name: file_key + description: File key + type: string + required: true + - in: formData + name: access_key_id + description: Access key id + type: string + required: true + - in: formData + name: secret_access_key + description: Secret access key + type: string + required: true + - in: formData + name: path + description: The new project path and name + type: string + required: true + - in: formData + name: name + description: The name of the project to be imported. Defaults to the path + of the project if not provided. + type: string + required: false + - in: formData + name: namespace + description: The ID or name of the namespace that the project will be imported + into. Defaults to the current user's namespace. + type: string + required: false + - in: formData + name: overwrite + description: If there is a project in the same namespace and with the same + name overwrite it + type: boolean + default: false + required: false + - in: formData + name: override_params[description] + description: The description of the project + type: string + required: false + - in: formData + name: override_params[build_git_strategy] + description: The Git strategy. Defaults to `fetch` + type: string + enum: + - fetch + - clone + required: false + - in: formData + name: override_params[build_timeout] + description: Build timeout + type: integer + format: int32 + required: false + - in: formData + name: override_params[auto_cancel_pending_pipelines] + description: Auto-cancel pending pipelines + type: string + enum: + - disabled + - enabled + required: false + - in: formData + name: override_params[ci_config_path] + description: The path to CI config file. Defaults to `.gitlab-ci.yml` + type: string + required: false + - in: formData + name: override_params[service_desk_enabled] + description: Disable or enable the service desk + type: boolean + required: false + - in: formData + name: override_params[issues_enabled] + description: Flag indication if the issue tracker is enabled + type: boolean + required: false + - in: formData + name: override_params[merge_requests_enabled] + description: Flag indication if merge requests are enabled + type: boolean + required: false + - in: formData + name: override_params[wiki_enabled] + description: Flag indication if the wiki is enabled + type: boolean + required: false + - in: formData + name: override_params[jobs_enabled] + description: Flag indication if jobs are enabled + type: boolean + required: false + - in: formData + name: override_params[snippets_enabled] + description: Flag indication if snippets are enabled + type: boolean + required: false + - in: formData + name: override_params[issues_access_level] + description: Issues access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[repository_access_level] + description: Repository access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[merge_requests_access_level] + description: Merge requests access level. One of `disabled`, `private` or + `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[forking_access_level] + description: Forks access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[wiki_access_level] + description: Wiki access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[builds_access_level] + description: Builds access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[snippets_access_level] + description: Snippets access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[pages_access_level] + description: Pages access level. One of `disabled`, `private`, `enabled` or + `public` + type: string + enum: + - disabled + - private + - enabled + - public + required: false + - in: formData + name: override_params[analytics_access_level] + description: Analytics access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[container_registry_access_level] + description: Controls visibility of the container registry. One of `disabled`, + `private` or `enabled`. `private` will make the container registry accessible + only to project members (reporter role and above). `enabled` will make the + container registry accessible to everyone who has access to the project. + `disabled` will disable the container registry + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[security_and_compliance_access_level] + description: Security and compliance access level. One of `disabled`, `private` + or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[releases_access_level] + description: Releases access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[environments_access_level] + description: Environments access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[feature_flags_access_level] + description: Feature flags access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[infrastructure_access_level] + description: Infrastructure access level. One of `disabled`, `private` or + `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[monitor_access_level] + description: Monitor access level. One of `disabled`, `private` or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[model_experiments_access_level] + description: Model experiments access level. One of `disabled`, `private` + or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[model_registry_access_level] + description: Model registry access level. One of `disabled`, `private` or + `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[emails_disabled] + description: 'Deprecated: Use emails_enabled instead.' + type: boolean + required: false + - in: formData + name: override_params[emails_enabled] + description: Enable email notifications + type: boolean + required: false + - in: formData + name: override_params[show_default_award_emojis] + description: Show default award emojis + type: boolean + required: false + - in: formData + name: override_params[show_diff_preview_in_email] + description: Include the code diff preview in merge request notification emails + type: boolean + required: false + - in: formData + name: override_params[warn_about_potentially_unwanted_characters] + description: Warn about potentially unwanted characters + type: boolean + required: false + - in: formData + name: override_params[enforce_auth_checks_on_uploads] + description: Enforce auth check on uploads + type: boolean + required: false + - in: formData + name: override_params[shared_runners_enabled] + description: Flag indication if shared runners are enabled for that project + type: boolean + required: false + - in: formData + name: override_params[group_runners_enabled] + description: Flag indication if group runners are enabled for that project + type: boolean + required: false + - in: formData + name: override_params[resolve_outdated_diff_discussions] + description: Automatically resolve merge request diff threads on lines changed + with a push + type: boolean + required: false + - in: formData + name: override_params[remove_source_branch_after_merge] + description: Remove the source branch by default after merge + type: boolean + required: false + - in: formData + name: override_params[container_registry_enabled] + description: 'Deprecated: Use :container_registry_access_level instead. Flag + indication if the container registry is enabled for that project' + type: boolean + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][cadence] + description: Container expiration policy cadence for recurring job + type: string + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][keep_n] + description: Container expiration policy number of images to keep + type: integer + format: int32 + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][older_than] + description: Container expiration policy remove images older than value + type: string + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][name_regex] + description: Container expiration policy regex for image removal + type: string + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][name_regex_keep] + description: Container expiration policy regex for image retention + type: string + required: false + - in: formData + name: override_params[container_expiration_policy_attributes][enabled] + description: Flag indication if container expiration policy is enabled + type: boolean + required: false + - in: formData + name: override_params[lfs_enabled] + description: Flag indication if Git LFS is enabled for that project + type: boolean + required: false + - in: formData + name: override_params[visibility] + description: The visibility of the project. + type: string + enum: + - private + - internal + - public + required: false + - in: formData + name: override_params[public_builds] + description: 'Deprecated: Use public_jobs instead.' + type: boolean + required: false + - in: formData + name: override_params[public_jobs] + description: Perform public builds + type: boolean + required: false + - in: formData + name: override_params[request_access_enabled] + description: Allow users to request member access + type: boolean + required: false + - in: formData + name: override_params[only_allow_merge_if_pipeline_succeeds] + description: Only allow to merge if builds succeed + type: boolean + required: false + - in: formData + name: override_params[allow_merge_on_skipped_pipeline] + description: Allow to merge if pipeline is skipped + type: boolean + required: false + - in: formData + name: override_params[only_allow_merge_if_all_discussions_are_resolved] + description: Only allow to merge if all threads are resolved + type: boolean + required: false + - in: formData + name: override_params[tag_list] + description: 'Deprecated: Use :topics instead' + type: array + items: + type: string + required: false + - in: formData + name: override_params[topics] + description: The list of topics for a project + type: array + items: + type: string + required: false + - in: formData + name: override_params[avatar] + description: Avatar image for project + type: file + required: false + - in: formData + name: override_params[printing_merge_request_link_enabled] + description: Show link to create/view merge request when pushing from the + command line + type: boolean + required: false + - in: formData + name: override_params[merge_method] + description: The merge method used when merging merge requests + type: string + enum: + - ff + - rebase_merge + - merge + required: false + - in: formData + name: override_params[suggestion_commit_message] + description: The commit message used to apply merge request suggestions + type: string + required: false + - in: formData + name: override_params[merge_commit_template] + description: Template used to create merge commit message + type: string + required: false + - in: formData + name: override_params[squash_commit_template] + description: Template used to create squash commit message + type: string + required: false + - in: formData + name: override_params[issue_branch_template] + description: Template used to create a branch from an issue + type: string + required: false + - in: formData + name: override_params[auto_devops_enabled] + description: Flag indication if Auto DevOps is enabled + type: boolean + required: false + - in: formData + name: override_params[auto_devops_deploy_strategy] + description: Auto Deploy strategy + type: string + enum: + - continuous + - manual + - timed_incremental + required: false + - in: formData + name: override_params[autoclose_referenced_issues] + description: Flag indication if referenced issues auto-closing is enabled + type: boolean + required: false + - in: formData + name: override_params[repository_storage] + description: Which storage shard the repository is on. Available only to admins + type: string + required: false + - in: formData + name: override_params[packages_enabled] + description: Enable project packages feature + type: boolean + required: false + - in: formData + name: override_params[squash_option] + description: Squash default for project. One of `never`, `always`, `default_on`, + or `default_off`. + type: string + enum: + - never + - always + - default_on + - default_off + required: false + - in: formData + name: override_params[mr_default_target_self] + description: Merge requests of this forked project targets itself by default + type: boolean + required: false + - in: formData + name: override_params[merge_request_title_regex] + description: The regex the Merge Request must adhere to + type: string + required: false + - in: formData + name: override_params[merge_request_title_regex_description] + description: The description for the regex the Merge Request must adhere to + type: string + required: false + - in: formData + name: override_params[only_allow_merge_if_all_status_checks_passed] + description: Blocks merge requests from merging unless all status checks have + passed + type: boolean + required: false + - in: formData + name: override_params[approvals_before_merge] + description: How many approvers should approve merge request by default + type: integer + format: int32 + required: false + - in: formData + name: override_params[mirror] + description: "[Deprecated] Enables pull mirroring in a project" + type: boolean + required: false + - in: formData + name: override_params[mirror_trigger_builds] + description: "[Deprecated] Pull mirroring triggers builds" + type: boolean + required: false + - in: formData + name: override_params[external_authorization_classification_label] + description: The classification label for the project + type: string + required: false + - in: formData + name: override_params[requirements_access_level] + description: Requirements feature access level. One of `disabled`, `private` + or `enabled` + type: string + enum: + - disabled + - private + - enabled + required: false + - in: formData + name: override_params[prevent_merge_without_jira_issue] + description: Require an associated issue from Jira + type: boolean + required: false + - in: formData + name: override_params[auto_duo_code_review_enabled] + description: Enable automatic reviews by GitLab Duo on merge requests + type: boolean + required: false + responses: + '201': + description: Create a new project import using a file from AWS S3 + schema: + "$ref": "#/definitions/API_Entities_ProjectImportStatus" + '401': + description: Unauthorized + '403': + description: Forbidden + '400': + description: Bad request + '404': + description: Not found + '429': + description: Too many requests + '503': + description: Service unavailable + tags: + - project_import + operationId: postApiV4ProjectsRemoteImportS3 + "/api/v4/projects/{id}/job_token_scope": + get: + description: Fetch CI_JOB_TOKEN access settings. + produces: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Fetch CI_JOB_TOKEN access settings. + schema: + "$ref": "#/definitions/API_Entities_ProjectJobTokenScope" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects_job_token_scope + operationId: getApiV4ProjectsIdJobTokenScope + patch: + description: Patch CI_JOB_TOKEN access settings. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: patchApiV4ProjectsIdJobTokenScope + in: body + required: true + schema: + "$ref": "#/definitions/patchApiV4ProjectsIdJobTokenScope" + responses: + '204': + description: Patch CI_JOB_TOKEN access settings. + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects_job_token_scope + operationId: patchApiV4ProjectsIdJobTokenScope + "/api/v4/projects/{id}/job_token_scope/allowlist": + get: + description: Fetch project inbound allowlist for CI_JOB_TOKEN access settings. + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Fetch project inbound allowlist for CI_JOB_TOKEN access settings. + schema: + "$ref": "#/definitions/API_Entities_BasicProjectDetails" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects_job_token_scope + operationId: getApiV4ProjectsIdJobTokenScopeAllowlist + post: + description: Add target project to allowlist. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: ID of user project + type: integer + format: int32 + required: true + example: 1 + - name: postApiV4ProjectsIdJobTokenScopeAllowlist + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdJobTokenScopeAllowlist" + responses: + '201': + description: Add target project to allowlist. + schema: + "$ref": "#/definitions/API_Entities_BasicProjectDetails" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - projects_job_token_scope + operationId: postApiV4ProjectsIdJobTokenScopeAllowlist + "/api/v4/projects/{id}/job_token_scope/groups_allowlist": + get: + description: Fetch project groups allowlist for CI_JOB_TOKEN access settings. + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Fetch project groups allowlist for CI_JOB_TOKEN access settings. + schema: + "$ref": "#/definitions/API_Entities_BasicProjectDetails" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects_job_token_scope + operationId: getApiV4ProjectsIdJobTokenScopeGroupsAllowlist + post: + description: Add target group to allowlist. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: ID of user project + type: integer + format: int32 + required: true + example: 1 + - name: postApiV4ProjectsIdJobTokenScopeGroupsAllowlist + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdJobTokenScopeGroupsAllowlist" + responses: + '201': + description: Add target group to allowlist. + schema: + "$ref": "#/definitions/API_Entities_BasicGroupDetails" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - projects_job_token_scope + operationId: postApiV4ProjectsIdJobTokenScopeGroupsAllowlist + "/api/v4/projects/{id}/job_token_scope/groups_allowlist/{target_group_id}": + delete: + description: Delete target group from allowlist. + produces: + - application/json + parameters: + - in: path + name: id + description: ID of user project + type: integer + format: int32 + required: true + example: 1 + - in: path + name: target_group_id + description: ID of the group to be removed from the allowlist + type: integer + format: int32 + required: true + example: 2 + responses: + '204': + description: Delete target group from allowlist. + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects_job_token_scope + operationId: deleteApiV4ProjectsIdJobTokenScopeGroupsAllowlistTargetGroupId + "/api/v4/projects/{id}/job_token_scope/allowlist/{target_project_id}": + delete: + description: Delete project from allowlist. + produces: + - application/json + parameters: + - in: path + name: id + description: ID of user project + type: integer + format: int32 + required: true + example: 1 + - in: path + name: target_project_id + description: ID of the project to be removed from the allowlist + type: integer + format: int32 + required: true + example: 2 + responses: + '204': + description: Delete project from allowlist. + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - projects_job_token_scope + operationId: deleteApiV4ProjectsIdJobTokenScopeAllowlistTargetProjectId + "/api/v4/projects/{id}/packages": + get: + summary: Get a list of project packages + description: This feature was introduced in GitLab 11.8 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: order_by + description: Return packages ordered by `created_at`, `name`, `version` or + `type` fields. + type: string + default: created_at + enum: + - created_at + - name + - version + - type + required: false + - in: query + name: sort + description: Return packages sorted in `asc` or `desc` order. + type: string + default: asc + enum: + - asc + - desc + required: false + - in: query + name: package_type + description: Return packages of a certain type + type: string + enum: + - maven + - npm + - conan + - nuget + - pypi + - composer + - generic + - golang + - debian + - rubygems + - helm + - terraform_module + - rpm + - ml_model + required: false + - in: query + name: package_name + description: Return packages with this name + type: string + required: false + - in: query + name: package_version + description: Return packages with this version + type: string + required: false + - in: query + name: include_versionless + description: Returns packages without a version + type: boolean + required: false + - in: query + name: status + description: Return packages with specified status + type: string + enum: + - default + - hidden + - processing + - error + - pending_destruction + - deprecated + required: false + responses: + '200': + description: Get a list of project packages + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Package" + '403': + description: Forbidden + '404': + description: Project Not Found + tags: + - project_packages + operationId: getApiV4ProjectsIdPackages + "/api/v4/projects/{id}/packages/{package_id}": + get: + summary: Get a single project package + description: This feature was introduced in GitLab 11.9 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_id + description: The ID of a package + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single project package + schema: + "$ref": "#/definitions/API_Entities_Package" + '403': + description: Forbidden + '404': + description: Not Found + tags: + - project_packages + operationId: getApiV4ProjectsIdPackagesPackageId + delete: + summary: Delete a project package + description: This feature was introduced in GitLab 11.9 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_id + description: The ID of a package + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a project package + '403': + description: Forbidden + '404': + description: Not Found + tags: + - project_packages + operationId: deleteApiV4ProjectsIdPackagesPackageId + "/api/v4/projects/{id}/packages/{package_id}/pipelines": + get: + summary: Get the pipelines for a single project package + description: This feature was introduced in GitLab 16.1 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + minimum: 1 + maximum: 20 + required: false + example: 20 + - in: path + name: package_id + description: The ID of a package + type: integer + format: int32 + required: true + - in: query + name: cursor + description: Cursor for obtaining the next set of records + type: string + required: false + responses: + '200': + description: Get the pipelines for a single project package + schema: + "$ref": "#/definitions/API_Entities_Package_Pipeline" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - project_packages + operationId: getApiV4ProjectsIdPackagesPackageIdPipelines + "/api/v4/projects/{id}/packages/protection/rules": + get: + description: Get list of package protection rules for a project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Get list of package protection rules for a project + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Projects_Packages_Protection_Rule" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - projects + operationId: getApiV4ProjectsIdPackagesProtectionRules + post: + description: Create a package protection rule for a project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdPackagesProtectionRules + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdPackagesProtectionRules" + responses: + '201': + description: Create a package protection rule for a project + schema: + "$ref": "#/definitions/API_Entities_Projects_Packages_Protection_Rule" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + '422': + description: Unprocessable Entity + tags: + - projects + operationId: postApiV4ProjectsIdPackagesProtectionRules + "/api/v4/projects/{id}/packages/protection/rules/{package_protection_rule_id}": + patch: + description: Update a package protection rule for a project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_protection_rule_id + description: The ID of the package protection rule + type: integer + format: int32 + required: true + - name: patchApiV4ProjectsIdPackagesProtectionRulesPackageProtectionRuleId + in: body + required: true + schema: + "$ref": "#/definitions/patchApiV4ProjectsIdPackagesProtectionRulesPackageProtectionRuleId" + responses: + '200': + description: Update a package protection rule for a project + schema: + "$ref": "#/definitions/API_Entities_Projects_Packages_Protection_Rule" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + '422': + description: Unprocessable Entity + tags: + - projects + operationId: patchApiV4ProjectsIdPackagesProtectionRulesPackageProtectionRuleId + delete: + description: Delete package protection rule + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: package_protection_rule_id + description: The ID of the package protection rule + type: integer + format: int32 + required: true + responses: + '204': + description: 204 No Content + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - projects + operationId: deleteApiV4ProjectsIdPackagesProtectionRulesPackageProtectionRuleId + "/api/v4/projects/{id}/snapshot": + get: + summary: Download a (possibly inconsistent) snapshot of a repository + description: This feature was introduced in GitLab 10.7 + produces: + - application/x-tar + parameters: + - in: query + name: wiki + description: Set to true to receive the wiki repository + type: boolean + required: false + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Download a (possibly inconsistent) snapshot of a repository + schema: + type: file + '401': + description: Unauthorized + tags: + - projects + operationId: getApiV4ProjectsIdSnapshot + "/api/v4/projects/{id}/snippets": + get: + description: Get all project snippets + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get all project snippets + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_ProjectSnippet" + '404': + description: Not found + tags: + - project_snippets + operationId: getApiV4ProjectsIdSnippets + post: + description: Create a new project snippet + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdSnippets + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdSnippets" + responses: + '201': + description: Create a new project snippet + schema: + "$ref": "#/definitions/API_Entities_ProjectSnippet" + '400': + description: Validation error + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - project_snippets + operationId: postApiV4ProjectsIdSnippets + "/api/v4/projects/{id}/snippets/{snippet_id}": + get: + description: Get a single project snippet + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: snippet_id + description: The ID of a project snippet + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single project snippet + schema: + "$ref": "#/definitions/API_Entities_ProjectSnippet" + '404': + description: Not found + tags: + - project_snippets + operationId: getApiV4ProjectsIdSnippetsSnippetId + put: + description: Update an existing project snippet + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: snippet_id + description: The ID of a project snippet + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdSnippetsSnippetId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdSnippetsSnippetId" + responses: + '200': + description: Update an existing project snippet + schema: + "$ref": "#/definitions/API_Entities_ProjectSnippet" + '400': + description: Validation error + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - project_snippets + operationId: putApiV4ProjectsIdSnippetsSnippetId + delete: + description: Delete a project snippet + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: snippet_id + description: The ID of a project snippet + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a project snippet + '400': + description: Validation error + '404': + description: Not found + tags: + - project_snippets + operationId: deleteApiV4ProjectsIdSnippetsSnippetId + "/api/v4/projects/{id}/snippets/{snippet_id}/raw": + get: + description: Get a raw project snippet + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: snippet_id + description: The ID of a project snippet + type: integer + format: int32 + required: true + responses: + '200': + description: Get a raw project snippet + schema: + "$ref": "#/definitions/API_Entities_ProjectSnippet" + '404': + description: Not found + tags: + - project_snippets + operationId: getApiV4ProjectsIdSnippetsSnippetIdRaw + "/api/v4/projects/{id}/snippets/{snippet_id}/files/{ref}/{file_path}/raw": + get: + description: Get raw project snippet file contents from the repository + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: file_path + description: The url encoded path to the file, e.g. lib%2Fclass%2Erb + type: string + required: true + - in: path + name: ref + description: The name of branch, tag or commit + type: string + required: true + - in: path + name: snippet_id + type: integer + format: int32 + required: true + responses: + '200': + description: Get raw project snippet file contents from the repository + schema: + "$ref": "#/definitions/API_Entities_ProjectSnippet" + '404': + description: Not found + tags: + - project_snippets + operationId: getApiV4ProjectsIdSnippetsSnippetIdFilesRefFilePathRaw + "/api/v4/projects/{id}/snippets/{snippet_id}/user_agent_detail": + get: + description: Get the user agent details for a project snippet + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: snippet_id + description: The ID of a project snippet + type: integer + format: int32 + required: true + responses: + '200': + description: Get the user agent details for a project snippet + schema: + "$ref": "#/definitions/API_Entities_UserAgentDetail" + '404': + description: Not found + tags: + - project_snippets + operationId: getApiV4ProjectsIdSnippetsSnippetIdUserAgentDetail + "/api/v4/projects/{id}/statistics": + get: + description: Get the list of project fetch statistics for the last 30 days + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Get the list of project fetch statistics for the last 30 days + schema: + "$ref": "#/definitions/API_Entities_ProjectDailyStatistics" + '404': + description: 404 Project Not Found + '401': + description: 401 Unauthorized + tags: + - projects + operationId: getApiV4ProjectsIdStatistics + "/api/v4/projects/{id}/templates/{type}": + get: + summary: Get a list of templates available to this project + description: This endpoint was introduced in GitLab 11.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: type + description: The type (dockerfiles|gitignores|gitlab_ci_ymls|licenses|issues|merge_requests) + of the template + type: string + enum: + - dockerfiles + - gitignores + - gitlab_ci_ymls + - licenses + - issues + - merge_requests + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get a list of templates available to this project + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_TemplatesList" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdTemplatesType + "/api/v4/projects/{id}/templates/{type}/{name}": + get: + summary: Download a template available to this project + description: This endpoint was introduced in GitLab 11.4 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: type + description: The type (dockerfiles|gitignores|gitlab_ci_ymls|licenses|issues|merge_requests) + of the template + type: string + enum: + - dockerfiles + - gitignores + - gitlab_ci_ymls + - licenses + - issues + - merge_requests + required: true + - in: path + name: name + description: The key of the template, as obtained from the collection endpoint. + type: string + required: true + example: MIT + - in: query + name: source_template_project_id + description: The project id where a given template is being stored. This is + useful when multiple templates from different projects have the same name + type: integer + format: int32 + required: false + example: 1 + - in: query + name: project + description: The project name to use when expanding placeholders in the template. + Only affects licenses + type: string + required: false + example: GitLab + - in: query + name: fullname + description: The full name of the copyright holder to use when expanding placeholders + in the template. Only affects licenses + type: string + required: false + example: GitLab B.V. + responses: + '200': + description: Download a template available to this project + schema: + "$ref": "#/definitions/API_Entities_License" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdTemplatesTypeName + "/api/v4/projects/{id}/custom_attributes": + get: + description: Get all custom attributes on a project + produces: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get all custom attributes on a project + schema: + "$ref": "#/definitions/API_Entities_CustomAttribute" + tags: + - projects + operationId: getApiV4ProjectsIdCustomAttributes + "/api/v4/projects/{id}/custom_attributes/{key}": + get: + description: Get a custom attribute on a project + produces: + - application/json + parameters: + - in: path + name: key + description: The key of the custom attribute + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a custom attribute on a project + schema: + "$ref": "#/definitions/API_Entities_CustomAttribute" + tags: + - projects + operationId: getApiV4ProjectsIdCustomAttributesKey + put: + description: Set a custom attribute on a project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: key + description: The key of the custom attribute + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdCustomAttributesKey + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdCustomAttributesKey" + responses: + '200': + description: Set a custom attribute on a project + tags: + - projects + operationId: putApiV4ProjectsIdCustomAttributesKey + delete: + description: Delete a custom attribute on a project + produces: + - application/json + parameters: + - in: path + name: key + description: The key of the custom attribute + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a custom attribute on a project + tags: + - projects + operationId: deleteApiV4ProjectsIdCustomAttributesKey + "/api/v4/projects/{id}/restore": + post: + description: Restore a project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '201': + description: Restore a project + schema: + "$ref": "#/definitions/API_Entities_Project" + tags: + - projects + operationId: postApiV4ProjectsIdRestore + "/api/v4/projects": + get: + description: Get a list of visible projects for authenticated user + produces: + - application/json + parameters: + - in: query + name: order_by + description: Return projects ordered by field. storage_size, repository_size, + wiki_size, packages_size are only available to admins. Similarity is available + when searching and is limited to projects the user has access to. + type: string + default: created_at + enum: + - id + - name + - path + - created_at + - updated_at + - last_activity_at + - similarity + - star_count + - storage_size + - repository_size + - wiki_size + - packages_size + required: false + - in: query + name: sort + description: Return projects sorted in ascending and descending order + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: archived + description: Limit by archived status + type: boolean + required: false + - in: query + name: visibility + description: Limit by visibility + type: string + enum: + - private + - internal + - public + required: false + - in: query + name: search + description: Return list of projects matching the search criteria + type: string + required: false + - in: query + name: search_namespaces + description: Include ancestor namespaces when matching search criteria + type: boolean + required: false + - in: query + name: owned + description: Limit by owned by authenticated user + type: boolean + default: false + required: false + - in: query + name: starred + description: Limit by starred status + type: boolean + default: false + required: false + - in: query + name: imported + description: Limit by imported by authenticated user + type: boolean + default: false + required: false + - in: query + name: membership + description: Limit by projects that the current user is a member of + type: boolean + default: false + required: false + - in: query + name: with_issues_enabled + description: Limit by enabled issues feature + type: boolean + default: false + required: false + - in: query + name: with_merge_requests_enabled + description: Limit by enabled merge requests feature + type: boolean + default: false + required: false + - in: query + name: with_programming_language + description: Limit to repositories which use the given programming language + type: string + required: false + - in: query + name: min_access_level + description: Limit by minimum access level of authenticated user + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + required: false + - in: query + name: id_after + description: Limit results to projects with IDs greater than the specified + ID + type: integer + format: int32 + required: false + - in: query + name: id_before + description: Limit results to projects with IDs less than the specified ID + type: integer + format: int32 + required: false + - in: query + name: last_activity_after + description: 'Limit results to projects with last_activity after specified + time. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: last_activity_before + description: 'Limit results to projects with last_activity before specified + time. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: repository_storage + description: Which storage shard the repository is on. Available only to admins + type: string + required: false + - in: query + name: topic + description: Comma-separated list of topics. Limit results to projects having + all topics + type: array + items: + type: string + required: false + - in: query + name: topic_id + description: Limit results to projects with the assigned topic given by the + topic ID + type: integer + format: int32 + required: false + - in: query + name: updated_before + description: 'Return projects updated before the specified datetime. Format: + ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: updated_after + description: 'Return projects updated after the specified datetime. Format: + ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: include_pending_delete + description: Include projects in pending delete state. Can only be set by + admins + type: boolean + required: false + - in: query + name: marked_for_deletion_on + description: Date when the project was marked for deletion + type: string + format: date + required: false + - in: query + name: active + description: Limit by projects that are not archived and not marked for deletion + type: boolean + required: false + - in: query + name: wiki_checksum_failed + description: Limit by projects where wiki checksum is failed + type: boolean + default: false + required: false + - in: query + name: repository_checksum_failed + description: Limit by projects where repository checksum is failed + type: boolean + default: false + required: false + - in: query + name: include_hidden + description: Include hidden projects. Can only be set by admins + type: boolean + default: false + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: simple + description: Return only the ID, URL, name, and path of each project + type: boolean + default: false + required: false + - in: query + name: statistics + description: Include project statistics + type: boolean + default: false + required: false + - in: query + name: with_custom_attributes + description: Include custom attributes in the response + type: boolean + default: false + required: false + responses: + '200': + description: Get a list of visible projects for authenticated user + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_BasicProjectDetails" + '400': + description: Bad request + tags: + - projects + operationId: getApiV4Projects + post: + description: Create new project + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4Projects + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4Projects" + responses: + '201': + description: Create new project + schema: + "$ref": "#/definitions/API_Entities_Project" + '403': + description: Unauthenticated + '404': + description: Not found + '400': + description: Bad request + tags: + - projects + operationId: postApiV4Projects + "/api/v4/projects/user/{user_id}": + post: + description: Create new project for a specified user. Only available to admin + users. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: user_id + description: The ID of a user + type: integer + format: int32 + required: true + example: 1 + - name: postApiV4ProjectsUserUserId + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsUserUserId" + responses: + '201': + description: Create new project for a specified user. Only available to + admin users. + schema: + "$ref": "#/definitions/API_Entities_Project" + '403': + description: Unauthenticated + '404': + description: Not found + '400': + description: Bad request + tags: + - projects + operationId: postApiV4ProjectsUserUserId + "/api/v4/projects/{id}/share_locations": + get: + description: Returns group that can be shared with the given project + produces: + - application/json + parameters: + - in: path + name: id + description: The id of the project + type: integer + format: int32 + required: true + - in: query + name: search + description: Return list of groups matching the search criteria + type: string + required: false + responses: + '200': + description: Returns group that can be shared with the given project + schema: + "$ref": "#/definitions/API_Entities_Group" + tags: + - projects + operationId: getApiV4ProjectsIdShareLocations + "/api/v4/projects/{id}": + get: + description: Get a single project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: statistics + description: Include project statistics + type: boolean + default: false + required: false + - in: query + name: with_custom_attributes + description: Include custom attributes in the response + type: boolean + default: false + required: false + - in: query + name: license + description: Include project license data + type: boolean + default: false + required: false + responses: + '200': + description: Get a single project + schema: + "$ref": "#/definitions/API_Entities_ProjectWithAccess" + tags: + - projects + operationId: getApiV4ProjectsId + put: + description: Update an existing project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: putApiV4ProjectsId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsId" + responses: + '200': + description: Update an existing project + schema: + "$ref": "#/definitions/API_Entities_Project" + '400': + description: Bad request + '403': + description: Unauthenticated + tags: + - projects + operationId: putApiV4ProjectsId + delete: + description: Delete a project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '202': + description: Delete a project + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - projects + operationId: deleteApiV4ProjectsId + "/api/v4/projects/{id}/fork": + post: + description: Fork new project for the current user or provided namespace. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdFork + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdFork" + responses: + '201': + description: Fork new project for the current user or provided namespace. + schema: + "$ref": "#/definitions/API_Entities_Project" + '403': + description: Unauthenticated + '404': + description: Not found + '409': + description: Conflict + tags: + - projects + operationId: postApiV4ProjectsIdFork + delete: + description: Remove a forked_from relationship + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '204': + description: Remove a forked_from relationship + '304': + description: Not modified + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - projects + operationId: deleteApiV4ProjectsIdFork + "/api/v4/projects/{id}/forks": + get: + description: List forks of this project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: order_by + description: Return projects ordered by field. storage_size, repository_size, + wiki_size, packages_size are only available to admins. Similarity is available + when searching and is limited to projects the user has access to. + type: string + default: created_at + enum: + - id + - name + - path + - created_at + - updated_at + - last_activity_at + - similarity + - star_count + - storage_size + - repository_size + - wiki_size + - packages_size + required: false + - in: query + name: sort + description: Return projects sorted in ascending and descending order + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: archived + description: Limit by archived status + type: boolean + required: false + - in: query + name: visibility + description: Limit by visibility + type: string + enum: + - private + - internal + - public + required: false + - in: query + name: search + description: Return list of projects matching the search criteria + type: string + required: false + - in: query + name: search_namespaces + description: Include ancestor namespaces when matching search criteria + type: boolean + required: false + - in: query + name: owned + description: Limit by owned by authenticated user + type: boolean + default: false + required: false + - in: query + name: starred + description: Limit by starred status + type: boolean + default: false + required: false + - in: query + name: imported + description: Limit by imported by authenticated user + type: boolean + default: false + required: false + - in: query + name: membership + description: Limit by projects that the current user is a member of + type: boolean + default: false + required: false + - in: query + name: with_issues_enabled + description: Limit by enabled issues feature + type: boolean + default: false + required: false + - in: query + name: with_merge_requests_enabled + description: Limit by enabled merge requests feature + type: boolean + default: false + required: false + - in: query + name: with_programming_language + description: Limit to repositories which use the given programming language + type: string + required: false + - in: query + name: min_access_level + description: Limit by minimum access level of authenticated user + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + required: false + - in: query + name: id_after + description: Limit results to projects with IDs greater than the specified + ID + type: integer + format: int32 + required: false + - in: query + name: id_before + description: Limit results to projects with IDs less than the specified ID + type: integer + format: int32 + required: false + - in: query + name: last_activity_after + description: 'Limit results to projects with last_activity after specified + time. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: last_activity_before + description: 'Limit results to projects with last_activity before specified + time. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: repository_storage + description: Which storage shard the repository is on. Available only to admins + type: string + required: false + - in: query + name: topic + description: Comma-separated list of topics. Limit results to projects having + all topics + type: array + items: + type: string + required: false + - in: query + name: topic_id + description: Limit results to projects with the assigned topic given by the + topic ID + type: integer + format: int32 + required: false + - in: query + name: updated_before + description: 'Return projects updated before the specified datetime. Format: + ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: updated_after + description: 'Return projects updated after the specified datetime. Format: + ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: include_pending_delete + description: Include projects in pending delete state. Can only be set by + admins + type: boolean + required: false + - in: query + name: marked_for_deletion_on + description: Date when the project was marked for deletion + type: string + format: date + required: false + - in: query + name: active + description: Limit by projects that are not archived and not marked for deletion + type: boolean + required: false + - in: query + name: wiki_checksum_failed + description: Limit by projects where wiki checksum is failed + type: boolean + default: false + required: false + - in: query + name: repository_checksum_failed + description: Limit by projects where repository checksum is failed + type: boolean + default: false + required: false + - in: query + name: include_hidden + description: Include hidden projects. Can only be set by admins + type: boolean + default: false + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: simple + description: Return only the ID, URL, name, and path of each project + type: boolean + default: false + required: false + - in: query + name: with_custom_attributes + description: Include custom attributes in the response + type: boolean + default: false + required: false + responses: + '200': + description: List forks of this project + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Project" + tags: + - projects + operationId: getApiV4ProjectsIdForks + "/api/v4/projects/{id}/pages_access": + get: + description: Check pages access of this project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Check pages access of this project + '403': + description: Unauthenticated + tags: + - projects + operationId: getApiV4ProjectsIdPagesAccess + "/api/v4/projects/{id}/archive": + post: + description: Archive a project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '201': + description: Archive a project + schema: + "$ref": "#/definitions/API_Entities_Project" + '403': + description: Unauthenticated + tags: + - projects + operationId: postApiV4ProjectsIdArchive + "/api/v4/projects/{id}/unarchive": + post: + description: Unarchive a project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '201': + description: Unarchive a project + schema: + "$ref": "#/definitions/API_Entities_Project" + '403': + description: Unauthenticated + tags: + - projects + operationId: postApiV4ProjectsIdUnarchive + "/api/v4/projects/{id}/star": + post: + description: Star a project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '201': + description: Star a project + schema: + "$ref": "#/definitions/API_Entities_Project" + '304': + description: Not modified + '403': + description: Unauthenticated + tags: + - projects + operationId: postApiV4ProjectsIdStar + "/api/v4/projects/{id}/unstar": + post: + description: Unstar a project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '201': + description: Unstar a project + schema: + "$ref": "#/definitions/API_Entities_Project" + '304': + description: Not modified + '403': + description: Unauthenticated + tags: + - projects + operationId: postApiV4ProjectsIdUnstar + "/api/v4/projects/{id}/starrers": + get: + description: Get the users who starred a project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: search + description: Return list of users matching the search criteria + type: string + required: false + example: user + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get the users who starred a project + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_UserBasic" + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdStarrers + "/api/v4/projects/{id}/languages": + get: + description: Get languages in project repository + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Get languages in project repository + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdLanguages + "/api/v4/projects/{id}/fork/{forked_from_id}": + post: + description: Mark this project as forked from another + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: forked_from_id + description: The ID of the project it was forked from + type: string + required: true + example: gitlab + responses: + '201': + description: Mark this project as forked from another + schema: + "$ref": "#/definitions/API_Entities_Project" + '401': + description: Unauthorized + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdForkForkedFromId + "/api/v4/projects/{id}/share": + post: + description: Share the project with a group + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdShare + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdShare" + responses: + '201': + description: Share the project with a group + schema: + "$ref": "#/definitions/API_Entities_ProjectGroupLink" + '400': + description: Bad request + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - projects + operationId: postApiV4ProjectsIdShare + "/api/v4/projects/{id}/share/{group_id}": + delete: + description: Remove a group share + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: group_id + description: The ID of the group + type: integer + format: int32 + required: true + responses: + '204': + description: Remove a group share + '400': + description: Bad request + '404': + description: Not found + tags: + - projects + operationId: deleteApiV4ProjectsIdShareGroupId + "/api/v4/projects/{id}/import_project_members/{project_id}": + post: + summary: Import members from another project + description: This feature was introduced in GitLab 14.2 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: project_id + description: The ID of the source project to import the members from. + type: integer + format: int32 + required: true + responses: + '200': + description: Import members from another project + '403': + description: Unauthenticated + '404': + description: Project Not Found + '422': + description: Import failed + tags: + - projects + operationId: postApiV4ProjectsIdImportProjectMembersProjectId + "/api/v4/projects/{id}/users": + get: + description: Get the users list of a project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: search + description: Return list of users matching the search criteria + type: string + required: false + example: user + - in: query + name: skip_users + description: Filter out users with the specified IDs + type: array + items: + type: integer + format: int32 + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get the users list of a project + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_UserBasic" + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdUsers + "/api/v4/projects/{id}/groups": + get: + description: Get ancestor and shared groups for a project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: search + description: Return list of groups matching the search criteria + type: string + required: false + example: group + - in: query + name: skip_groups + description: Array of group ids to exclude from list + type: array + items: + type: integer + format: int32 + required: false + - in: query + name: with_shared + description: Include shared groups + type: boolean + default: false + required: false + - in: query + name: shared_visible_only + description: Limit to shared groups user has access to + type: boolean + default: false + required: false + - in: query + name: shared_min_access_level + description: Limit returned shared groups by minimum access level to the project + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get ancestor and shared groups for a project + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_PublicGroupDetails" + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - projects + operationId: getApiV4ProjectsIdGroups + "/api/v4/projects/{id}/invited_groups": + get: + description: Get a list of invited groups in this project + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: relation + description: Filter by group relation + type: array + items: + type: string + enum: + - direct + - inherited + required: false + - in: query + name: search + description: Search for a specific group + type: string + required: false + - in: query + name: min_access_level + description: Limit by minimum access level of authenticated user + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: with_custom_attributes + description: Include custom attributes in the response + type: boolean + default: false + required: false + responses: + '200': + description: Get a list of invited groups in this project + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Group" + tags: + - projects + operationId: getApiV4ProjectsIdInvitedGroups + "/api/v4/projects/{id}/housekeeping": + post: + summary: Start the housekeeping task for a project + description: This feature was introduced in GitLab 9.0. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdHousekeeping + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdHousekeeping" + responses: + '201': + description: Start the housekeeping task for a project + '401': + description: Unauthorized + '403': + description: Unauthenticated + '409': + description: Conflict + tags: + - projects + operationId: postApiV4ProjectsIdHousekeeping + "/api/v4/projects/{id}/repository_size": + post: + summary: Start a task to recalculate repository size for a project + description: This feature was introduced in GitLab 15.0. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '201': + description: Start a task to recalculate repository size for a project + '401': + description: Unauthorized + '403': + description: Unauthenticated + tags: + - projects + operationId: postApiV4ProjectsIdRepositorySize + "/api/v4/projects/{id}/transfer": + put: + description: Transfer a project to a new namespace + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: putApiV4ProjectsIdTransfer + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdTransfer" + responses: + '200': + description: Transfer a project to a new namespace + schema: + "$ref": "#/definitions/API_Entities_Project" + '400': + description: Bad request + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - projects + operationId: putApiV4ProjectsIdTransfer + "/api/v4/projects/{id}/transfer_locations": + get: + description: Get the namespaces to where the project can be transferred + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: search + description: Return list of namespaces matching the search criteria + type: string + required: false + example: search + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get the namespaces to where the project can be transferred + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_PublicGroupDetails" + '403': + description: Unauthenticated + tags: + - projects + operationId: getApiV4ProjectsIdTransferLocations + "/api/v4/projects/{id}/storage": + get: + description: Show the storage information + produces: + - application/json + parameters: + - in: path + name: id + description: ID of a project + type: string + required: true + responses: + '200': + description: Show the storage information + schema: + "$ref": "#/definitions/API_Entities_ProjectRepositoryStorage" + '403': + description: Unauthenticated + tags: + - projects + operationId: getApiV4ProjectsIdStorage + "/api/v4/projects/{id}/audit_events": + get: + description: Get a list of audit events in this project. + produces: + - application/json + parameters: + - in: query + name: created_after + description: Return audit events created after the specified time + type: string + format: date-time + required: false + example: '2016-01-19T09:05:50.355Z' + - in: query + name: created_before + description: Return audit events created before the specified time + type: string + format: date-time + required: false + example: '2016-01-19T09:05:50.355Z' + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a list of audit events in this project. + schema: + type: array + items: + "$ref": "#/definitions/EE_API_Entities_AuditEvent" + tags: + - projects + operationId: getApiV4ProjectsIdAuditEvents + "/api/v4/projects/{id}/audit_events/{audit_event_id}": + get: + description: Get a specific audit event in this project. + produces: + - application/json + parameters: + - in: path + name: audit_event_id + description: The ID of the audit event + type: integer + format: int32 + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a specific audit event in this project. + schema: + "$ref": "#/definitions/EE_API_Entities_AuditEvent" + tags: + - projects + operationId: getApiV4ProjectsIdAuditEventsAuditEventId + "/api/v4/projects/{id}/protected_branches": + get: + description: Get a project's protected branches + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: gitlab-org/gitlab + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: search + description: Search for a protected branch by name + type: string + required: false + example: mai + responses: + '200': + description: Get a project's protected branches + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_ProtectedBranch" + '404': + description: 404 Project Not Found + '401': + description: 401 Unauthorized + tags: + - projects + operationId: getApiV4ProjectsIdProtectedBranches + post: + description: Protect a single branch + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: gitlab-org/gitlab + - name: postApiV4ProjectsIdProtectedBranches + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdProtectedBranches" + responses: + '201': + description: Protect a single branch + schema: + "$ref": "#/definitions/API_Entities_ProtectedBranch" + '422': + description: name is missing + '409': + description: Protected branch 'main' already exists + '404': + description: 404 Project Not Found + '401': + description: 401 Unauthorized + tags: + - projects + operationId: postApiV4ProjectsIdProtectedBranches + "/api/v4/projects/{id}/protected_branches/{name}": + get: + description: Get a single protected branch + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: gitlab-org/gitlab + - in: path + name: name + description: The name of the branch or wildcard + type: string + required: true + example: main + responses: + '200': + description: Get a single protected branch + schema: + "$ref": "#/definitions/API_Entities_ProtectedBranch" + '404': + description: 404 Project Not Found + '401': + description: 401 Unauthorized + tags: + - projects + operationId: getApiV4ProjectsIdProtectedBranchesName + patch: + description: Update a protected branch + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: gitlab-org/gitlab + - in: path + name: name + description: The name of the branch + type: string + required: true + example: main + - name: patchApiV4ProjectsIdProtectedBranchesName + in: body + required: true + schema: + "$ref": "#/definitions/patchApiV4ProjectsIdProtectedBranchesName" + responses: + '200': + description: Update a protected branch + schema: + "$ref": "#/definitions/API_Entities_ProtectedBranch" + '422': + description: Push access levels access level has already been taken + '404': + description: 404 Project Not Found + '401': + description: 401 Unauthorized + '400': + description: 400 Bad request + tags: + - projects + operationId: patchApiV4ProjectsIdProtectedBranchesName + delete: + description: Unprotect a single branch + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: gitlab-org/gitlab + - in: path + name: name + description: The name of the protected branch + type: string + required: true + example: main + responses: + '204': + description: Unprotect a single branch + '404': + description: 404 Project Not Found + '401': + description: 401 Unauthorized + tags: + - projects + operationId: deleteApiV4ProjectsIdProtectedBranchesName + "/api/v4/projects/{id}/protected_tags": + get: + summary: Get a project's protected tags + description: This feature was introduced in GitLab 11.3. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get a project's protected tags + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_ProtectedTag" + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - protected_tags + operationId: getApiV4ProjectsIdProtectedTags + post: + summary: Protect a single tag or wildcard + description: This feature was introduced in GitLab 11.3. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdProtectedTags + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdProtectedTags" + responses: + '201': + description: Protect a single tag or wildcard + schema: + "$ref": "#/definitions/API_Entities_ProtectedTag" + '403': + description: Unauthenticated + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - protected_tags + operationId: postApiV4ProjectsIdProtectedTags + "/api/v4/projects/{id}/protected_tags/{name}": + get: + summary: Get a single protected tag + description: This feature was introduced in GitLab 11.3. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: name + description: The name of the tag or wildcard + type: string + required: true + example: release* + responses: + '200': + description: Get a single protected tag + schema: + "$ref": "#/definitions/API_Entities_ProtectedTag" + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - protected_tags + operationId: getApiV4ProjectsIdProtectedTagsName + delete: + summary: Unprotect a single tag + description: This feature was introduced in GitLab 11.3. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: name + description: The name of the protected tag + type: string + required: true + example: release-1-0 + responses: + '204': + description: Unprotect a single tag + '403': + description: Unauthenticated + '404': + description: Not found + '412': + description: Precondition Failed + tags: + - protected_tags + operationId: deleteApiV4ProjectsIdProtectedTagsName + "/api/v4/projects/{id}/packages/pypi/files/{sha256}/*file_identifier": + get: + summary: The PyPi package download endpoint + description: This feature was introduced in GitLab 12.10 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: file_identifier + description: The PyPi package file identifier + type: string + required: true + example: my.pypi.package-0.0.1.tar.gz + - in: path + name: sha256 + description: The PyPi package sha256 check sum + type: string + required: true + example: 5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff + responses: + '200': + description: The PyPi package download endpoint + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - pypi_packages + operationId: getApiV4ProjectsIdPackagesPypiFilesSha256*fileIdentifier + "/api/v4/projects/{id}/packages/pypi/simple": + get: + summary: The PyPi Simple Project Index Endpoint + description: This feature was introduced in GitLab 15.1 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: The PyPi Simple Project Index Endpoint + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - pypi_packages + operationId: getApiV4ProjectsIdPackagesPypiSimple + "/api/v4/projects/{id}/packages/pypi/simple/*package_name": + get: + summary: The PyPi Simple Project Package Endpoint + description: This feature was introduced in GitLab 12.10 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: package_name + description: The PyPi package name + type: string + required: true + example: my.pypi.package + responses: + '200': + description: The PyPi Simple Project Package Endpoint + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - pypi_packages + operationId: getApiV4ProjectsIdPackagesPypiSimple*packageName + "/api/v4/projects/{id}/packages/pypi": + post: + summary: The PyPi Package upload endpoint + description: This feature was introduced in GitLab 12.10 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdPackagesPypi + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdPackagesPypi" + responses: + '201': + description: The PyPi Package upload endpoint + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + '422': + description: Unprocessable Entity + tags: + - pypi_packages + operationId: postApiV4ProjectsIdPackagesPypi + "/api/v4/projects/{id}/packages/pypi/authorize": + post: + summary: Authorize the PyPi package upload from workhorse + description: This feature was introduced in GitLab 12.10 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '200': + description: Authorize the PyPi package upload from workhorse + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - pypi_packages + operationId: postApiV4ProjectsIdPackagesPypiAuthorize + "/api/v4/projects/{id}/releases": + get: + summary: List Releases + description: Returns a paginated list of releases. This feature was introduced + in GitLab 11.7. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: order_by + description: The field to use as order. Either `released_at` (default) or + `created_at` + type: string + default: released_at + enum: + - released_at + - created_at + required: false + - in: query + name: sort + description: The direction of the order. Either `desc` (default) for descending + order or `asc` for ascending order + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: include_html_description + description: If `true`, a response includes HTML rendered markdown of the + release description + type: boolean + required: false + - in: query + name: updated_before + description: 'Return releases updated before the specified datetime. Format: + ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: updated_after + description: 'Return releases updated after the specified datetime. Format: + ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + responses: + '200': + description: List Releases + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Release" + tags: + - releases + operationId: getApiV4ProjectsIdReleases + post: + summary: Create a release + description: Creates a release. Developer level access to the project is required + to create a release. This feature was introduced in GitLab 11.7. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdReleases + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdReleases" + responses: + '201': + description: Create a release + schema: + "$ref": "#/definitions/API_Entities_Release" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '409': + description: Conflict + '422': + description: Unprocessable entity + tags: + - releases + operationId: postApiV4ProjectsIdReleases + "/api/v4/projects/{id}/releases/{tag_name}": + get: + summary: Get a release by a tag name + description: Gets a release for the given tag. This feature was introduced in + GitLab 11.7. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: tag_name + description: The Git tag the release is associated with + type: string + required: true + - in: query + name: include_html_description + description: If `true`, a response includes HTML rendered markdown of the + release description + type: boolean + required: false + responses: + '200': + description: Get a release by a tag name + schema: + "$ref": "#/definitions/API_Entities_Release" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - releases + operationId: getApiV4ProjectsIdReleasesTagName + put: + summary: Update a release + description: Updates a release. Developer level access to the project is required + to update a release. This feature was introduced in GitLab 11.7. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: tag_name + description: The Git tag the release is associated with + type: string + required: true + - name: putApiV4ProjectsIdReleasesTagName + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdReleasesTagName" + responses: + '200': + description: Update a release + schema: + "$ref": "#/definitions/API_Entities_Release" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - releases + operationId: putApiV4ProjectsIdReleasesTagName + delete: + summary: Delete a release + description: Delete a release. Deleting a release doesn't delete the associated + tag. Maintainer level access to the project is required to delete a release. + This feature was introduced in GitLab 11.7. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: tag_name + description: The Git tag the release is associated with + type: string + required: true + responses: + '400': + description: Bad request + '204': + description: Delete a release + schema: + "$ref": "#/definitions/API_Entities_Release" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - releases + operationId: deleteApiV4ProjectsIdReleasesTagName + "/api/v4/projects/{id}/releases/{tag_name}/downloads/*direct_asset_path": + get: + summary: Download a project release asset file + description: This feature was introduced in GitLab 15.4. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: tag_name + description: The Git tag the release is associated with + type: string + required: true + - in: query + name: direct_asset_path + description: The path to the file to download, as specified when creating + the release asset + type: string + required: true + responses: + '200': + description: Download a project release asset file + '401': + description: Unauthorized + '404': + description: Not found + tags: + - releases + operationId: getApiV4ProjectsIdReleasesTagNameDownloads*directAssetPath + "/api/v4/projects/{id}/releases/permalink/latest(/)(*suffix_path)": + get: + summary: Get the latest project release + description: This feature was introduced in GitLab 15.4. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: suffix_path + description: The path to be suffixed to the latest release + type: string + required: true + responses: + '200': + description: Get the latest project release + '401': + description: Unauthorized + '404': + description: Not found + tags: + - releases + operationId: getApiV4ProjectsIdReleasesPermalinkLatest()(*suffixPath) + "/api/v4/projects/{id}/releases/{tag_name}/evidence": + post: + summary: Collect release evidence + description: Creates an evidence for an existing Release. This feature was introduced + in GitLab 12.10. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: tag_name + description: The Git tag the release is associated with + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '201': + description: Collect release evidence + schema: + "$ref": "#/definitions/API_Entities_Release" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - releases + operationId: postApiV4ProjectsIdReleasesTagNameEvidence + "/api/v4/projects/{id}/releases/{tag_name}/assets/links": + get: + summary: List links of a release + description: Get assets as links from a release. This feature was introduced + in GitLab 11.7. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: tag_name + description: The tag associated with the release + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List links of a release + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Releases_Link" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - release_links + operationId: getApiV4ProjectsIdReleasesTagNameAssetsLinks + post: + summary: Create a release link + description: Create an asset as a link from a release. This feature was introduced + in GitLab 11.7. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: tag_name + description: The tag associated with the release + type: string + required: true + - name: postApiV4ProjectsIdReleasesTagNameAssetsLinks + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdReleasesTagNameAssetsLinks" + responses: + '201': + description: Create a release link + schema: + "$ref": "#/definitions/API_Entities_Releases_Link" + '400': + description: Bad request + '401': + description: Unauthorized + tags: + - release_links + operationId: postApiV4ProjectsIdReleasesTagNameAssetsLinks + "/api/v4/projects/{id}/releases/{tag_name}/assets/links/{link_id}": + get: + summary: Get a release link + description: Get an asset as a link from a release. This feature was introduced + in GitLab 11.7. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: tag_name + description: The tag associated with the release + type: string + required: true + - in: path + name: link_id + description: The ID of the link + type: integer + format: int32 + required: true + responses: + '200': + description: Get a release link + schema: + "$ref": "#/definitions/API_Entities_Releases_Link" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - release_links + operationId: getApiV4ProjectsIdReleasesTagNameAssetsLinksLinkId + put: + summary: Update a release link + description: Update an asset as a link from a release. This feature was introduced + in GitLab 11.7. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: tag_name + description: The tag associated with the release + type: string + required: true + - in: path + name: link_id + description: The ID of the link + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdReleasesTagNameAssetsLinksLinkId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdReleasesTagNameAssetsLinksLinkId" + responses: + '200': + description: Update a release link + schema: + "$ref": "#/definitions/API_Entities_Releases_Link" + '400': + description: Bad request + '401': + description: Unauthorized + tags: + - release_links + operationId: putApiV4ProjectsIdReleasesTagNameAssetsLinksLinkId + delete: + summary: Delete a release link + description: Deletes an asset as a link from a release. This feature was introduced + in GitLab 11.7. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: tag_name + description: The tag associated with the release + type: string + required: true + - in: path + name: link_id + description: The ID of the link + type: integer + format: int32 + required: true + responses: + '204': + description: Bad request + '401': + description: Unauthorized + tags: + - release_links + operationId: deleteApiV4ProjectsIdReleasesTagNameAssetsLinksLinkId + "/api/v4/projects/{id}/remote_mirrors": + get: + description: List the project's remote mirrors + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List the project's remote mirrors + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_RemoteMirror" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - remote_mirrors + operationId: getApiV4ProjectsIdRemoteMirrors + post: + description: Create remote mirror for a project + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdRemoteMirrors + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdRemoteMirrors" + responses: + '201': + description: Create remote mirror for a project + schema: + "$ref": "#/definitions/API_Entities_RemoteMirror" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - remote_mirrors + operationId: postApiV4ProjectsIdRemoteMirrors + "/api/v4/projects/{id}/remote_mirrors/{mirror_id}": + get: + description: Get a single remote mirror + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: mirror_id + description: The ID of a remote mirror + type: string + required: true + responses: + '200': + description: Get a single remote mirror + schema: + "$ref": "#/definitions/API_Entities_RemoteMirror" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - remote_mirrors + operationId: getApiV4ProjectsIdRemoteMirrorsMirrorId + put: + description: Update the attributes of a single remote mirror + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: mirror_id + description: The ID of a remote mirror + type: string + required: true + - name: putApiV4ProjectsIdRemoteMirrorsMirrorId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdRemoteMirrorsMirrorId" + responses: + '200': + description: Update the attributes of a single remote mirror + schema: + "$ref": "#/definitions/API_Entities_RemoteMirror" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - remote_mirrors + operationId: putApiV4ProjectsIdRemoteMirrorsMirrorId + delete: + summary: Delete a single remote mirror + description: This feature was introduced in GitLab 14.10 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: mirror_id + description: The ID of a remote mirror + type: string + required: true + responses: + '204': + description: Delete a single remote mirror + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - remote_mirrors + operationId: deleteApiV4ProjectsIdRemoteMirrorsMirrorId + "/api/v4/projects/{id}/remote_mirrors/{mirror_id}/sync": + post: + description: Triggers a push mirror operation + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: mirror_id + description: The ID of a remote mirror + type: string + required: true + responses: + '204': + description: Triggers a push mirror operation + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - remote_mirrors + operationId: postApiV4ProjectsIdRemoteMirrorsMirrorIdSync + "/api/v4/projects/{id}/remote_mirrors/{mirror_id}/public_key": + get: + description: Get the public key of a single remote mirror + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: mirror_id + description: The ID of a remote mirror + type: string + required: true + responses: + '200': + description: Get the public key of a single remote mirror + '401': + description: Unauthorized + '404': + description: Not found + tags: + - remote_mirrors + operationId: getApiV4ProjectsIdRemoteMirrorsMirrorIdPublicKey + "/api/v4/projects/{id}/repository/tree": + get: + description: Get a project repository tree + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 1 + - in: query + name: ref + description: The name of a repository branch or tag, if not given the default + branch is used + type: string + required: false + example: main + - in: query + name: path + description: The path of the tree + type: string + required: false + example: files/html + - in: query + name: recursive + description: Used to get a recursive tree + type: boolean + default: false + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: pagination + description: Specify the pagination method ("none" is only valid if "recursive" + is true) + type: string + default: legacy + enum: + - legacy + - keyset + - none + required: false + - in: query + name: page_token + description: Record from which to start the keyset pagination + type: string + required: false + example: a1e8f8d745cc87e3a9248358d9352bb7f9a0aeba + responses: + '200': + description: Get a project repository tree + schema: + "$ref": "#/definitions/API_Entities_TreeObject" + tags: + - projects + operationId: getApiV4ProjectsIdRepositoryTree + "/api/v4/projects/{id}/repository/blobs/{sha}/raw": + get: + description: Get raw blob contents from the repository + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 1 + - in: path + name: sha + description: The commit hash + type: string + required: true + example: 7d70e02340bac451f281cecf0a980907974bd8be + responses: + '200': + description: Get raw blob contents from the repository + tags: + - projects + operationId: getApiV4ProjectsIdRepositoryBlobsShaRaw + "/api/v4/projects/{id}/repository/blobs/{sha}": + get: + description: Get a blob from the repository + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 1 + - in: path + name: sha + description: The commit hash + type: string + required: true + example: 7d70e02340bac451f281cecf0a980907974bd8be + responses: + '200': + description: Get a blob from the repository + tags: + - projects + operationId: getApiV4ProjectsIdRepositoryBlobsSha + "/api/v4/projects/{id}/repository/archive": + get: + description: Get an archive of the repository + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 1 + - in: query + name: sha + description: The commit sha of the archive to be downloaded + type: string + required: false + example: 7d70e02340bac451f281cecf0a980907974bd8be + - in: query + name: format + description: The archive format + type: string + required: false + example: tar.gz + - in: query + name: path + description: Subfolder of the repository to be downloaded + type: string + required: false + example: files/archives + - in: query + name: include_lfs_blobs + description: Used to exclude LFS objects from archive + type: boolean + default: true + required: false + - in: query + name: exclude_paths + description: Comma-separated list of paths to exclude from the archive + type: array + items: + type: string + required: false + responses: + '200': + description: Get an archive of the repository + tags: + - projects + operationId: getApiV4ProjectsIdRepositoryArchive + "/api/v4/projects/{id}/repository/compare": + get: + description: Compare two branches, tags, or commits + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 1 + - in: query + name: from + description: The commit, branch name, or tag name to start comparison + type: string + required: true + example: main + - in: query + name: to + description: The commit, branch name, or tag name to stop comparison + type: string + required: true + example: feature + - in: query + name: from_project_id + description: The project to compare from + type: integer + format: int32 + required: false + example: 1 + - in: query + name: straight + description: Comparison method, `true` for direct comparison between `from` + and `to` (`from`..`to`), `false` to compare using merge base (`from`...`to`) + type: boolean + default: false + required: false + - in: query + name: unidiff + description: A diff in a Unified diff format + type: boolean + default: false + required: false + responses: + '200': + description: Compare two branches, tags, or commits + schema: + "$ref": "#/definitions/API_Entities_Compare" + tags: + - projects + operationId: getApiV4ProjectsIdRepositoryCompare + "/api/v4/projects/{id}/repository/health": + get: + description: Get repository health + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 1 + - in: query + name: generate + description: Triggers a new health report to be generated + type: boolean + default: false + required: false + responses: + '200': + description: Get repository health + schema: + "$ref": "#/definitions/API_Entities_RepositoryHealth" + tags: + - projects + operationId: getApiV4ProjectsIdRepositoryHealth + "/api/v4/projects/{id}/repository/contributors": + get: + description: Get repository contributors + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 1 + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: ref + description: The name of a repository branch or tag, if not given the default + branch is used + type: string + required: false + example: main + - in: query + name: order_by + description: Return contributors ordered by `name` or `email` or `commits` + type: string + default: commits + enum: + - email + - name + - commits + required: false + - in: query + name: sort + description: Sort by asc (ascending) or desc (descending) + type: string + default: asc + enum: + - asc + - desc + required: false + responses: + '200': + description: Get repository contributors + schema: + "$ref": "#/definitions/API_Entities_Contributor" + tags: + - projects + operationId: getApiV4ProjectsIdRepositoryContributors + "/api/v4/projects/{id}/repository/merge_base": + get: + description: Get the common ancestor between commits + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 1 + - in: query + name: refs + description: The refs to find the common ancestor of, multiple refs can be + passed + type: array + items: + type: string + required: true + example: main + responses: + '200': + description: Get the common ancestor between commits + schema: + "$ref": "#/definitions/API_Entities_Commit" + tags: + - projects + operationId: getApiV4ProjectsIdRepositoryMergeBase + "/api/v4/projects/{id}/repository/changelog": + get: + summary: Generates a changelog section for a release and returns it + description: This feature was introduced in GitLab 14.6 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 1 + - in: query + name: version + description: The version of the release, using the semantic versioning format + type: string + required: true + example: 1.0.0 + - in: query + name: from + description: The first commit in the range of commits to use for the changelog + type: string + required: false + example: ed899a2f4b50b4370feeea94676502b42383c746 + - in: query + name: to + description: The last commit in the range of commits to use for the changelog + type: string + required: false + example: 6104942438c14ec7bd21c6cd5bd995272b3faff6 + - in: query + name: date + description: The date and time of the release + type: string + format: date-time + required: false + example: '2021-09-20T11:50:22.001+00:00' + - in: query + name: trailer + description: The Git trailer to use for determining if commits are to be included + in the changelog + type: string + default: Changelog + required: false + example: Changelog + - in: query + name: config_file + description: The file path to the configuration file as stored in the project's + Git repository. Defaults to '.gitlab/changelog_config.yml' + type: string + required: false + example: ".gitlab/changelog_config.yml" + - in: query + name: config_file_ref + description: The git reference (for example, branch) where the changelog configuration + file is defined. Defaults to the default repository branch. + type: string + required: false + example: main + responses: + '200': + description: Generates a changelog section for a release and returns it + schema: + "$ref": "#/definitions/API_Entities_Changelog" + tags: + - projects + operationId: getApiV4ProjectsIdRepositoryChangelog + post: + summary: Generates a changelog section for a release and commits it in a changelog + file + description: This feature was introduced in GitLab 13.9 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + example: 1 + - name: postApiV4ProjectsIdRepositoryChangelog + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdRepositoryChangelog" + responses: + '200': + description: Generates a changelog section for a release and commits it + in a changelog file + tags: + - projects + operationId: postApiV4ProjectsIdRepositoryChangelog + "/api/v4/projects/{id}/access_tokens/self/rotate": + post: + summary: Rotate a resource access token + description: Rotates a resource access token by passing it to the API in a header + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The project ID + type: string + required: true + - name: postApiV4ProjectsIdAccessTokensSelfRotate + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdAccessTokensSelfRotate" + responses: + '200': + description: Rotate a resource access token + schema: + "$ref": "#/definitions/API_Entities_ResourceAccessTokenWithToken" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '405': + description: Method not allowed + tags: + - personal_access_tokens + operationId: postApiV4ProjectsIdAccessTokensSelfRotate + "/api/v4/projects/{id}/issues/{eventable_id}/resource_milestone_events": + get: + summary: List project Issue milestone events + description: Gets a list of all milestone events for a single Issue + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: eventable_id + description: The ID of the eventable + type: integer + format: int32 + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List project Issue milestone events + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_ResourceMilestoneEvent" + tags: + - resource_milestone_events + operationId: getApiV4ProjectsIdIssuesEventableIdResourceMilestoneEvents + "/api/v4/projects/{id}/issues/{eventable_id}/resource_milestone_events/{event_id}": + get: + summary: Get single Issue milestone event + description: Returns a single milestone event for a specific project Issue + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: event_id + description: The ID of a resource milestone event + type: string + required: true + - in: path + name: eventable_id + description: The ID of the eventable + type: integer + format: int32 + required: true + responses: + '200': + description: Get single Issue milestone event + schema: + "$ref": "#/definitions/API_Entities_ResourceMilestoneEvent" + '404': + description: Not found + tags: + - resource_milestone_events + operationId: getApiV4ProjectsIdIssuesEventableIdResourceMilestoneEventsEventId + "/api/v4/projects/{id}/merge_requests/{eventable_id}/resource_milestone_events": + get: + summary: List project Merge request milestone events + description: Gets a list of all milestone events for a single Merge request + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: eventable_id + description: The ID of the eventable + type: integer + format: int32 + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List project Merge request milestone events + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_ResourceMilestoneEvent" + tags: + - resource_milestone_events + operationId: getApiV4ProjectsIdMergeRequestsEventableIdResourceMilestoneEvents + "/api/v4/projects/{id}/merge_requests/{eventable_id}/resource_milestone_events/{event_id}": + get: + summary: Get single Merge request milestone event + description: Returns a single milestone event for a specific project Merge request + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: event_id + description: The ID of a resource milestone event + type: string + required: true + - in: path + name: eventable_id + description: The ID of the eventable + type: integer + format: int32 + required: true + responses: + '200': + description: Get single Merge request milestone event + schema: + "$ref": "#/definitions/API_Entities_ResourceMilestoneEvent" + '404': + description: Not found + tags: + - resource_milestone_events + operationId: getApiV4ProjectsIdMergeRequestsEventableIdResourceMilestoneEventsEventId + "/api/v4/projects/{id}/packages/rpm/repodata/*file_name": + get: + summary: Download repository metadata files + description: This feature was introduced in GitLab 15.7 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: file_name + description: Repository metadata file name + type: string + required: true + responses: + '200': + description: Download repository metadata files + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - rpm_packages + operationId: getApiV4ProjectsIdPackagesRpmRepodata*fileName + "/api/v4/projects/{id}/packages/rpm/*package_file_id/*file_name": + get: + summary: Download RPM package files + description: This feature was introduced in GitLab 15.7 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: package_file_id + description: RPM package file id + type: integer + format: int32 + required: true + - in: query + name: file_name + description: RPM package file name + type: string + required: true + responses: + '200': + description: Download RPM package files + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - rpm_packages + operationId: getApiV4ProjectsIdPackagesRpm*packageFileId*fileName + "/api/v4/projects/{id}/packages/rpm": + post: + summary: Upload a RPM package + description: This feature was introduced in GitLab 15.7 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '201': + description: Upload a RPM package + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - rpm_packages + operationId: postApiV4ProjectsIdPackagesRpm + "/api/v4/projects/{id}/packages/rpm/authorize": + post: + summary: Authorize package upload from workhorse + description: This feature was introduced in GitLab 15.7 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + responses: + '201': + description: Authorize package upload from workhorse + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - rpm_packages + operationId: postApiV4ProjectsIdPackagesRpmAuthorize + "/api/v4/projects/{id}/packages/rubygems/{file_name}": + get: + summary: Download the spec index file + description: This feature was introduced in GitLab 13.9 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: integer + format: int32 + required: true + - in: path + name: file_name + description: Spec file name + type: file + required: true + responses: + '200': + description: Download the spec index file + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - rubygem_packages + operationId: getApiV4ProjectsIdPackagesRubygemsFileName + "/api/v4/projects/{id}/packages/rubygems/quick/Marshal.4.8/{file_name}": + get: + summary: Download the gemspec file + description: This feature was introduced in GitLab 13.9 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: integer + format: int32 + required: true + - in: path + name: file_name + description: Gemspec file name + type: file + required: true + responses: + '200': + description: Download the gemspec file + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - rubygem_packages + operationId: getApiV4ProjectsIdPackagesRubygemsQuickMarshal48FileName + "/api/v4/projects/{id}/packages/rubygems/gems/{file_name}": + get: + summary: Download the .gem package + description: This feature was introduced in GitLab 13.9 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: integer + format: int32 + required: true + - in: path + name: file_name + description: Package file name + type: file + required: true + responses: + '200': + description: Download the .gem package + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - rubygem_packages + operationId: getApiV4ProjectsIdPackagesRubygemsGemsFileName + "/api/v4/projects/{id}/packages/rubygems/api/v1/gems/authorize": + post: + summary: Authorize a gem upload from workhorse + description: This feature was introduced in GitLab 13.9 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: integer + format: int32 + required: true + responses: + '200': + description: Authorize a gem upload from workhorse + '401': + description: Unauthorized + '403': + description: Forbidden + tags: + - rubygem_packages + operationId: postApiV4ProjectsIdPackagesRubygemsApiV1GemsAuthorize + "/api/v4/projects/{id}/packages/rubygems/api/v1/gems": + post: + summary: Upload a gem + description: This feature was introduced in GitLab 13.9 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdPackagesRubygemsApiV1Gems + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdPackagesRubygemsApiV1Gems" + responses: + '201': + description: Upload a gem + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - rubygem_packages + operationId: postApiV4ProjectsIdPackagesRubygemsApiV1Gems + "/api/v4/projects/{id}/packages/rubygems/api/v1/dependencies": + get: + summary: Fetch a list of dependencies + description: This feature was introduced in GitLab 13.9 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: integer + format: int32 + required: true + - in: query + name: gems + description: Comma delimited gem names + type: array + items: + type: string + required: false + responses: + '200': + description: Fetch a list of dependencies + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - rubygem_packages + operationId: getApiV4ProjectsIdPackagesRubygemsApiV1Dependencies + "/api/v4/projects/{id}/repository/submodules/{submodule}": + put: + description: Update existing submodule reference in repository + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of a project + type: string + required: true + example: gitlab-org/gitlab + - in: path + name: submodule + description: Url encoded full path to submodule. + type: string + required: true + example: gitlab-org/gitlab-shell + - name: putApiV4ProjectsIdRepositorySubmodulesSubmodule + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdRepositorySubmodulesSubmodule" + responses: + '200': + description: Update existing submodule reference in repository + schema: + "$ref": "#/definitions/API_Entities_CommitDetail" + '404': + description: 404 Project Not Found + '401': + description: 401 Unauthorized + '400': + description: The repository is empty + tags: + - projects + operationId: putApiV4ProjectsIdRepositorySubmodulesSubmodule + "/api/v4/projects/{id}/repository/tags": + get: + description: Get a project repository tags + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: sort + description: Return tags sorted in updated by `asc` or `desc` order. + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: order_by + description: Return tags ordered by `name`, `updated`, `version` fields. + type: string + default: updated + enum: + - name + - updated + - version + required: false + - in: query + name: search + description: Return list of tags matching the search criteria + type: string + required: false + - in: query + name: page_token + description: Name of tag to start the paginaition from + type: string + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get a project repository tags + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Tag" + '403': + description: Unauthenticated + '404': + description: Not found + '422': + description: Unprocessable entity + '503': + description: Service unavailable + tags: + - tags + operationId: getApiV4ProjectsIdRepositoryTags + post: + description: Create a new repository tag + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - name: postApiV4ProjectsIdRepositoryTags + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdRepositoryTags" + responses: + '201': + description: Create a new repository tag + schema: + "$ref": "#/definitions/API_Entities_Tag" + '400': + description: Bad request + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - tags + operationId: postApiV4ProjectsIdRepositoryTags + "/api/v4/projects/{id}/repository/tags/{tag_name}": + get: + description: Get a single repository tag + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: tag_name + description: The name of the tag + type: string + required: true + responses: + '200': + description: Get a single repository tag + schema: + "$ref": "#/definitions/API_Entities_Tag" + '403': + description: Unauthenticated + '404': + description: Not found + tags: + - tags + operationId: getApiV4ProjectsIdRepositoryTagsTagName + delete: + description: Delete a repository tag + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: tag_name + description: The name of the tag + type: string + required: true + responses: + '204': + description: Delete a repository tag + '400': + description: Bad request + '403': + description: Unauthenticated + '404': + description: Not found + '412': + description: Precondition failed + tags: + - tags + operationId: deleteApiV4ProjectsIdRepositoryTagsTagName + "/api/v4/projects/{id}/repository/tags/{tag_name}/signature": + get: + description: Get a tag's signature + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: tag_name + description: The name of the tag + type: string + required: true + responses: + '200': + description: Get a tag's signature + schema: + "$ref": "#/definitions/API_Entities_TagSignature" + '404': + description: Not found + tags: + - tags + operationId: getApiV4ProjectsIdRepositoryTagsTagNameSignature + "/api/v4/projects/{id}/packages/terraform/modules/{module_name}/{module_system}": + get: + summary: Download the latest version of a module + description: This feature was introduced in GitLab 16.7 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or full path of a project + type: string + required: true + - in: path + name: module_name + description: Module name + type: string + required: true + example: infra-registry + - in: path + name: module_system + description: Module system + type: string + required: true + example: aws + - in: query + name: terraform-get + description: Terraform get redirection flag + type: string + enum: + - '1' + required: false + responses: + '204': + description: Download the latest version of a module + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - terraform_registry + operationId: getApiV4ProjectsIdPackagesTerraformModulesModuleNameModuleSystem + "/api/v4/projects/{id}/packages/terraform/modules/{module_name}/{module_system}/*module_version": + get: + summary: Download a specific version of a module + description: This feature was introduced in GitLab 16.7 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or full path of a project + type: string + required: true + - in: path + name: module_name + description: Module name + type: string + required: true + example: infra-registry + - in: path + name: module_system + description: Module system + type: string + required: true + example: aws + - in: query + name: module_version + description: Module version + type: string + required: true + - in: query + name: terraform-get + description: Terraform get redirection flag + type: string + enum: + - '1' + required: false + responses: + '204': + description: Download a specific version of a module + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - terraform_registry + operationId: getApiV4ProjectsIdPackagesTerraformModulesModuleNameModuleSystem*moduleVersion + "/api/v4/projects/{id}/packages/terraform/modules/{module_name}/{module_system}/*module_version/file/authorize": + put: + summary: Workhorse authorize Terraform Module package file + description: This feature was introduced in GitLab 13.11 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or full path of a project + type: string + required: true + - in: path + name: module_name + description: Module name + type: string + required: true + example: infra-registry + - in: path + name: module_system + description: Module system + type: string + required: true + example: aws + - name: putApiV4ProjectsIdPackagesTerraformModulesModuleNameModuleSystem*moduleVersionFileAuthorize + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdPackagesTerraformModulesModuleNameModuleSystem*moduleVersionFileAuthorize" + responses: + '200': + description: Workhorse authorize Terraform Module package file + '403': + description: Forbidden + tags: + - terraform_registry + operationId: putApiV4ProjectsIdPackagesTerraformModulesModuleNameModuleSystem*moduleVersionFileAuthorize + "/api/v4/projects/{id}/packages/terraform/modules/{module_name}/{module_system}/*module_version/file": + put: + summary: Upload Terraform Module package file + description: This feature was introduced in GitLab 13.11 + produces: + - application/json + consumes: + - multipart/form-data + parameters: + - in: path + name: id + description: The ID or full path of a project + type: string + required: true + - in: path + name: module_name + description: Module name + type: string + required: true + example: infra-registry + - in: path + name: module_system + description: Module system + type: string + required: true + example: aws + - in: formData + name: module_version + description: Module version + type: string + required: true + - in: formData + name: file + description: The package file to be published (generated by Multipart middleware) + type: file + required: true + responses: + '201': + description: Upload Terraform Module package file + '400': + description: Invalid file + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - terraform_registry + operationId: putApiV4ProjectsIdPackagesTerraformModulesModuleNameModuleSystem*moduleVersionFile + "/api/v4/projects/{id}/terraform/state/{name}": + get: + summary: Get a Terraform state by its name + description: Get a Terraform state by its name + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: name + description: The name of a Terraform state + type: string + required: true + - in: query + name: ID + description: Terraform state lock ID + type: string + required: false + responses: + '200': + description: Get a Terraform state by its name + '204': + description: Empty state + '403': + description: Forbidden + '404': + description: Not found + '422': + description: Validation failure + tags: + - terraform_state + operationId: getApiV4ProjectsIdTerraformStateName + post: + summary: Add a new Terraform state or update an existing one + description: Add a new Terraform state or update an existing one + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: name + type: integer + format: int32 + required: true + responses: + '200': + description: Add a new Terraform state or update an existing one + '204': + description: No data provided + '403': + description: Forbidden + '422': + description: Validation failure + '413': + description: Request Entity Too Large + tags: + - terraform_state + operationId: postApiV4ProjectsIdTerraformStateName + delete: + summary: Delete a Terraform state of a certain name + description: Delete a Terraform state of a certain name + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: name + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a Terraform state of a certain name + '403': + description: Forbidden + '404': + description: Not found + '422': + description: Validation failure + tags: + - terraform_state + operationId: deleteApiV4ProjectsIdTerraformStateName + "/api/v4/projects/{id}/terraform/state/{name}/lock": + post: + summary: Lock a Terraform state of a certain name + description: Lock a Terraform state of a certain name + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: name + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdTerraformStateNameLock + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdTerraformStateNameLock" + responses: + '200': + description: Lock a Terraform state of a certain name + '403': + description: Forbidden + '404': + description: Not found + '409': + description: Conflict + '422': + description: Validation failure + tags: + - terraform_state + operationId: postApiV4ProjectsIdTerraformStateNameLock + delete: + summary: Unlock a Terraform state of a certain name + description: Unlock a Terraform state of a certain name + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: query + name: ID + description: Terraform state lock ID + type: string + required: false + - in: path + name: name + type: integer + format: int32 + required: true + responses: + '204': + description: Unlock a Terraform state of a certain name + '403': + description: Forbidden + '404': + description: Not found + '409': + description: Conflict + '422': + description: Validation failure + tags: + - terraform_state + operationId: deleteApiV4ProjectsIdTerraformStateNameLock + "/api/v4/projects/{id}/terraform/state/{name}/versions/{serial}": + get: + summary: Get a Terraform state version + description: Get a Terraform state version + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: name + description: The name of a Terraform state + type: string + required: true + - in: path + name: serial + description: The version number of the state + type: integer + format: int32 + required: true + responses: + '200': + description: Get a Terraform state version + schema: + type: file + '403': + description: Forbidden + '404': + description: Not found + tags: + - terraform_state + operationId: getApiV4ProjectsIdTerraformStateNameVersionsSerial + delete: + summary: Delete a Terraform state version + description: Delete a Terraform state version + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of the project + type: string + required: true + - in: path + name: name + type: integer + format: int32 + required: true + - in: path + name: serial + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a Terraform state version + '403': + description: Forbidden + '404': + description: Not found + tags: + - terraform_state + operationId: deleteApiV4ProjectsIdTerraformStateNameVersionsSerial + "/api/v4/projects/{id}/wikis": + get: + description: Get a list of wiki pages + produces: + - application/json + parameters: + - in: query + name: with_content + description: Include pages' content + type: boolean + default: false + required: false + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a list of wiki pages + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_WikiPageBasic" + '404': + description: Not found + tags: + - wikis + operationId: getApiV4ProjectsIdWikis + post: + description: Create a wiki page + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdWikis + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdWikis" + responses: + '201': + description: Create a wiki page + schema: + "$ref": "#/definitions/API_Entities_WikiPage" + '400': + description: Validation error + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - wikis + operationId: postApiV4ProjectsIdWikis + "/api/v4/projects/{id}/wikis/{slug}": + get: + description: Get a wiki page + produces: + - application/json + parameters: + - in: path + name: slug + description: The slug of a wiki page + type: string + required: true + - in: query + name: version + description: The version hash of a wiki page + type: string + required: false + - in: query + name: render_html + description: Render content to HTML + type: boolean + default: false + required: false + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get a wiki page + schema: + "$ref": "#/definitions/API_Entities_WikiPage" + '404': + description: Not found + tags: + - wikis + operationId: getApiV4ProjectsIdWikisSlug + put: + description: Update a wiki page + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - in: path + name: slug + type: integer + format: int32 + required: true + - name: putApiV4ProjectsIdWikisSlug + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ProjectsIdWikisSlug" + responses: + '200': + description: Update a wiki page + schema: + "$ref": "#/definitions/API_Entities_WikiPage" + '400': + description: Validation error + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - wikis + operationId: putApiV4ProjectsIdWikisSlug + delete: + description: Delete a wiki page + produces: + - application/json + parameters: + - in: path + name: slug + description: The slug of a wiki page + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a wiki page + '400': + description: Validation error + '404': + description: Not found + tags: + - wikis + operationId: deleteApiV4ProjectsIdWikisSlug + "/api/v4/projects/{id}/wikis/attachments": + post: + summary: Upload an attachment to the wiki repository + description: This feature was introduced in GitLab 11.3. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: postApiV4ProjectsIdWikisAttachments + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ProjectsIdWikisAttachments" + responses: + '201': + description: Upload an attachment to the wiki repository + schema: + "$ref": "#/definitions/API_Entities_WikiAttachment" + '404': + description: Not found + tags: + - wikis + operationId: postApiV4ProjectsIdWikisAttachments + "/api/v4/admin/batched_background_migrations/{id}": + get: + description: Retrieve a batched background migration + produces: + - application/json + parameters: + - in: query + name: database + description: The name of the database + type: string + default: main + enum: + - main + - ci + - sec + - embedding + - geo + required: false + - in: path + name: id + description: The batched background migration id + type: integer + format: int32 + required: true + responses: + '200': + description: Retrieve a batched background migration + schema: + "$ref": "#/definitions/API_Entities_BatchedBackgroundMigration" + '401': + description: 401 Unauthorized + '403': + description: 403 Forbidden + '404': + description: 404 Not found + tags: + - batched_background_migrations + operationId: getApiV4AdminBatchedBackgroundMigrationsId + "/api/v4/admin/batched_background_migrations/{id}/resume": + put: + description: Resume a batched background migration + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The batched background migration id + type: integer + format: int32 + required: true + - name: putApiV4AdminBatchedBackgroundMigrationsIdResume + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4AdminBatchedBackgroundMigrationsIdResume" + responses: + '200': + description: Resume a batched background migration + schema: + "$ref": "#/definitions/API_Entities_BatchedBackgroundMigration" + '401': + description: 401 Unauthorized + '403': + description: 403 Forbidden + '404': + description: 404 Not found + '422': + description: You can resume only `paused` batched background migrations. + tags: + - batched_background_migrations + operationId: putApiV4AdminBatchedBackgroundMigrationsIdResume + "/api/v4/admin/batched_background_migrations/{id}/pause": + put: + description: Pause a batched background migration + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The batched background migration id + type: integer + format: int32 + required: true + - name: putApiV4AdminBatchedBackgroundMigrationsIdPause + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4AdminBatchedBackgroundMigrationsIdPause" + responses: + '200': + description: Pause a batched background migration + schema: + "$ref": "#/definitions/API_Entities_BatchedBackgroundMigration" + '401': + description: 401 Unauthorized + '403': + description: 403 Forbidden + '404': + description: 404 Not found + '422': + description: You can pause only `active` batched background migrations. + tags: + - batched_background_migrations + operationId: putApiV4AdminBatchedBackgroundMigrationsIdPause + "/api/v4/admin/batched_background_migrations": + get: + description: Get the list of batched background migrations + produces: + - application/json + parameters: + - in: query + name: database + description: The name of the database, the default `main` + type: string + default: main + enum: + - main + - ci + - sec + - embedding + - geo + required: false + - in: query + name: job_class_name + description: Filter migrations by job class name. + type: string + required: false + responses: + '200': + description: Get the list of batched background migrations + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_BatchedBackgroundMigration" + '401': + description: 401 Unauthorized + '403': + description: 403 Forbidden + tags: + - batched_background_migrations + operationId: getApiV4AdminBatchedBackgroundMigrations + "/api/v4/admin/ci/variables": + get: + description: List all instance-level variables + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List all instance-level variables + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + tags: + - ci_variables + operationId: getApiV4AdminCiVariables + post: + description: Create a new instance-level variable + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4AdminCiVariables + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4AdminCiVariables" + responses: + '201': + description: Create a new instance-level variable + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + '400': + description: 400 Bad Request + tags: + - ci_variables + operationId: postApiV4AdminCiVariables + "/api/v4/admin/ci/variables/{key}": + get: + description: Get the details of a specific instance-level variable + produces: + - application/json + parameters: + - in: path + name: key + description: The key of a variable + type: string + required: true + responses: + '200': + description: Get the details of a specific instance-level variable + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + '404': + description: Instance Variable Not Found + tags: + - ci_variables + operationId: getApiV4AdminCiVariablesKey + put: + description: Update an instance-level variable + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: key + description: The key of a variable + type: string + required: true + - name: putApiV4AdminCiVariablesKey + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4AdminCiVariablesKey" + responses: + '200': + description: Update an instance-level variable + schema: + "$ref": "#/definitions/API_Entities_Ci_Variable" + '404': + description: Instance Variable Not Found + tags: + - ci_variables + operationId: putApiV4AdminCiVariablesKey + delete: + description: Delete an existing instance-level variable + produces: + - application/json + parameters: + - in: path + name: key + description: The key of a variable + type: string + required: true + responses: + '204': + description: Instance Variable Not Found + tags: + - ci_variables + operationId: deleteApiV4AdminCiVariablesKey + "/api/v4/admin/databases/{database_name}/dictionary/tables/{table_name}": + get: + description: Retrieve dictionary details + produces: + - application/json + parameters: + - in: path + name: database_name + description: The database name + type: string + enum: + - main + - ci + required: true + - in: path + name: table_name + description: The table name + type: string + required: true + responses: + '200': + description: Retrieve dictionary details + schema: + "$ref": "#/definitions/API_Entities_Dictionary_Table" + '401': + description: 401 Unauthorized + '403': + description: 403 Forbidden + '404': + description: 404 Not found + tags: + - admin + operationId: getApiV4AdminDatabasesDatabaseNameDictionaryTablesTableName + "/api/v4/admin/clusters": + get: + summary: List instance clusters + description: This feature was introduced in GitLab 13.2. Returns a list of instance + clusters. + produces: + - application/json + responses: + '200': + description: List instance clusters + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Cluster" + '403': + description: Forbidden + tags: + - clusters + operationId: getApiV4AdminClusters + "/api/v4/admin/clusters/{cluster_id}": + get: + summary: Get a single instance cluster + description: This feature was introduced in GitLab 13.2. Returns a single instance + cluster. + produces: + - application/json + parameters: + - in: path + name: cluster_id + description: The cluster ID + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single instance cluster + schema: + "$ref": "#/definitions/API_Entities_Cluster" + '403': + description: Forbidden + '404': + description: Not found + tags: + - clusters + operationId: getApiV4AdminClustersClusterId + put: + summary: Edit instance cluster + description: This feature was introduced in GitLab 13.2. Updates an existing + instance cluster. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: cluster_id + description: The cluster ID + type: integer + format: int32 + required: true + - name: putApiV4AdminClustersClusterId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4AdminClustersClusterId" + responses: + '200': + description: Edit instance cluster + schema: + "$ref": "#/definitions/API_Entities_Cluster" + '400': + description: Validation error + '403': + description: Forbidden + '404': + description: Not found + tags: + - clusters + operationId: putApiV4AdminClustersClusterId + delete: + summary: Delete instance cluster + description: This feature was introduced in GitLab 13.2. Deletes an existing + instance cluster. Does not remove existing resources within the connected + Kubernetes cluster. + produces: + - application/json + parameters: + - in: path + name: cluster_id + description: The cluster ID + type: integer + format: int32 + required: true + responses: + '403': + description: Forbidden + '204': + description: Delete instance cluster + schema: + "$ref": "#/definitions/API_Entities_Cluster" + '404': + description: Not found + tags: + - clusters + operationId: deleteApiV4AdminClustersClusterId + "/api/v4/admin/clusters/add": + post: + summary: Add existing instance cluster + description: This feature was introduced in GitLab 13.2. Adds an existing Kubernetes + instance cluster. + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4AdminClustersAdd + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4AdminClustersAdd" + responses: + '201': + description: Add existing instance cluster + schema: + "$ref": "#/definitions/API_Entities_Cluster" + '400': + description: Validation error + '403': + description: Forbidden + '404': + description: Not found + tags: + - clusters + operationId: postApiV4AdminClustersAdd + "/api/v4/admin/migrations/{timestamp}/mark": + post: + description: Mark the migration as successfully executed + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: timestamp + description: The migration version timestamp + type: integer + format: int32 + required: true + - name: postApiV4AdminMigrationsTimestampMark + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4AdminMigrationsTimestampMark" + responses: + '201': + description: 201 Created + '401': + description: 401 Unauthorized + '403': + description: 403 Forbidden + '404': + description: 404 Not found + '422': + description: You can mark only pending migrations + tags: + - migrations + operationId: postApiV4AdminMigrationsTimestampMark + "/api/v4/broadcast_messages": + get: + summary: Get all broadcast messages + description: This feature was introduced in GitLab 8.12. + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get all broadcast messages + schema: + "$ref": "#/definitions/API_Entities_System_BroadcastMessage" + tags: + - broadcast_messages + operationId: getApiV4BroadcastMessages + post: + summary: Create a broadcast message + description: This feature was introduced in GitLab 8.12. + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4BroadcastMessages + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4BroadcastMessages" + responses: + '201': + description: Create a broadcast message + schema: + "$ref": "#/definitions/API_Entities_System_BroadcastMessage" + tags: + - broadcast_messages + operationId: postApiV4BroadcastMessages + "/api/v4/broadcast_messages/{id}": + get: + summary: Get a specific broadcast message + description: This feature was introduced in GitLab 8.12. + produces: + - application/json + parameters: + - in: path + name: id + description: Broadcast message ID + type: integer + format: int32 + required: true + responses: + '200': + description: Get a specific broadcast message + schema: + "$ref": "#/definitions/API_Entities_System_BroadcastMessage" + tags: + - broadcast_messages + operationId: getApiV4BroadcastMessagesId + put: + summary: Update a broadcast message + description: This feature was introduced in GitLab 8.12. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: Broadcast message ID + type: integer + format: int32 + required: true + - name: putApiV4BroadcastMessagesId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4BroadcastMessagesId" + responses: + '200': + description: Update a broadcast message + schema: + "$ref": "#/definitions/API_Entities_System_BroadcastMessage" + tags: + - broadcast_messages + operationId: putApiV4BroadcastMessagesId + delete: + summary: Delete a broadcast message + description: This feature was introduced in GitLab 8.12. + produces: + - application/json + parameters: + - in: path + name: id + description: Broadcast message ID + type: integer + format: int32 + required: true + responses: + '200': + description: Delete a broadcast message + schema: + "$ref": "#/definitions/API_Entities_System_BroadcastMessage" + tags: + - broadcast_messages + operationId: deleteApiV4BroadcastMessagesId + "/api/v4/applications": + post: + summary: Create a new application + description: This feature was introduced in GitLab 10.5 + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4Applications + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4Applications" + responses: + '200': + description: Create a new application + schema: + "$ref": "#/definitions/API_Entities_ApplicationWithSecret" + tags: + - applications + operationId: postApiV4Applications + get: + summary: Get applications + description: List all registered applications + produces: + - application/json + responses: + '200': + description: Get applications + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Application" + tags: + - applications + operationId: getApiV4Applications + "/api/v4/applications/{id}": + delete: + summary: Delete an application + description: Delete a specific application + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of the application (not the application_id) + type: integer + format: int32 + required: true + responses: + '204': + description: Delete an application + tags: + - applications + operationId: deleteApiV4ApplicationsId + "/api/v4/applications/{id}/renew-secret": + post: + summary: Renew an application secret + description: Renew the secret of a specific application + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of the application (not the application_id) + type: integer + format: int32 + required: true + responses: + '200': + description: Renew an application secret + schema: + "$ref": "#/definitions/API_Entities_ApplicationWithSecret" + tags: + - applications + operationId: postApiV4ApplicationsIdRenewSecret + "/api/v4/avatar": + get: + description: Return avatar url for a user + produces: + - application/json + parameters: + - in: query + name: email + description: Public email address of the user + type: string + required: true + - in: query + name: size + description: Single pixel dimension for Gravatar images + type: integer + format: int32 + required: false + responses: + '200': + description: Return avatar url for a user + schema: + "$ref": "#/definitions/API_Entities_Avatar" + tags: + - avatar + operationId: getApiV4Avatar + "/api/v4/bulk_imports": + post: + summary: Start a new GitLab Migration + description: This feature was introduced in GitLab 14.2. + produces: + - application/json + consumes: + - application/x-www-form-urlencoded + parameters: + - in: formData + name: configuration[url] + description: Source GitLab instance URL + type: string + required: true + - in: formData + name: configuration[access_token] + description: Access token to the source GitLab instance + type: string + required: true + - in: formData + name: entities[source_type] + description: Source entity type + type: array + required: true + items: + type: string + enum: + - group_entity + - project_entity + - in: formData + name: entities[source_full_path] + description: Relative path of the source entity to import + type: array + required: true + example: "'source/full/path' not 'https://example.com/source/full/path'" + items: + type: string + - in: formData + name: entities[destination_namespace] + description: Destination namespace for the entity + type: array + required: true + example: "'destination_namespace' or 'destination/namespace'" + items: + type: string + - in: formData + name: entities[destination_slug] + description: Destination slug for the entity + type: array + required: false + example: "'destination_slug' not 'destination/slug'" + items: + type: string + - in: formData + name: entities[destination_name] + description: 'Deprecated: Use :destination_slug instead. Destination slug + for the entity' + type: array + required: false + example: "'destination_slug' not 'destination/slug'" + items: + type: string + - in: formData + name: entities[migrate_projects] + description: Indicates group migration should include nested projects + type: array + default: true + required: false + items: + type: boolean + - in: formData + name: entities[migrate_memberships] + description: The option to migrate memberships or not + type: array + default: true + required: false + items: + type: boolean + responses: + '200': + description: Start a new GitLab Migration + schema: + "$ref": "#/definitions/API_Entities_BulkImport" + '401': + description: Unauthorized + '400': + description: Bad request + '404': + description: Not found + '422': + description: Unprocessable entity + '503': + description: Service unavailable + tags: + - bulk_imports + operationId: postApiV4BulkImports + get: + summary: List all GitLab Migrations + description: This feature was introduced in GitLab 14.1. + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: sort + description: Return GitLab Migrations sorted in created by `asc` or `desc` + order. + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: status + description: Return GitLab Migrations with specified status + type: string + enum: + - created + - started + - finished + - timeout + - failed + - canceled + required: false + responses: + '200': + description: List all GitLab Migrations + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_BulkImport" + '401': + description: Unauthorized + '404': + description: Not found + '503': + description: Service unavailable + tags: + - bulk_imports + operationId: getApiV4BulkImports + "/api/v4/bulk_imports/entities": + get: + summary: List all GitLab Migrations' entities + description: This feature was introduced in GitLab 14.1. + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: sort + description: Return GitLab Migrations sorted in created by `asc` or `desc` + order. + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: status + description: Return all GitLab Migrations' entities with specified status + type: string + enum: + - created + - started + - finished + - timeout + - failed + - canceled + required: false + responses: + '200': + description: List all GitLab Migrations' entities + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_BulkImports" + '401': + description: Unauthorized + '404': + description: Not found + '503': + description: Service unavailable + tags: + - bulk_imports + operationId: getApiV4BulkImportsEntities + "/api/v4/bulk_imports/{import_id}": + get: + summary: Get GitLab Migration details + description: This feature was introduced in GitLab 14.1. + produces: + - application/json + parameters: + - in: path + name: import_id + description: The ID of user's GitLab Migration + type: integer + format: int32 + required: true + responses: + '200': + description: Get GitLab Migration details + schema: + "$ref": "#/definitions/API_Entities_BulkImport" + '401': + description: Unauthorized + '404': + description: Not found + '503': + description: Service unavailable + tags: + - bulk_imports + operationId: getApiV4BulkImportsImportId + "/api/v4/bulk_imports/{import_id}/entities": + get: + summary: List GitLab Migration entities + description: This feature was introduced in GitLab 14.1. + produces: + - application/json + parameters: + - in: path + name: import_id + description: The ID of user's GitLab Migration + type: integer + format: int32 + required: true + - in: query + name: status + description: Return import entities with specified status + type: string + enum: + - created + - started + - finished + - timeout + - failed + - canceled + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List GitLab Migration entities + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_BulkImports" + '401': + description: Unauthorized + '404': + description: Not found + '503': + description: Service unavailable + tags: + - bulk_imports + operationId: getApiV4BulkImportsImportIdEntities + "/api/v4/bulk_imports/{import_id}/entities/{entity_id}": + get: + summary: Get GitLab Migration entity details + description: This feature was introduced in GitLab 14.1. + produces: + - application/json + parameters: + - in: path + name: import_id + description: The ID of user's GitLab Migration + type: integer + format: int32 + required: true + - in: path + name: entity_id + description: The ID of GitLab Migration entity + type: integer + format: int32 + required: true + responses: + '200': + description: Get GitLab Migration entity details + schema: + "$ref": "#/definitions/API_Entities_BulkImports" + '401': + description: Unauthorized + '404': + description: Not found + '503': + description: Service unavailable + tags: + - bulk_imports + operationId: getApiV4BulkImportsImportIdEntitiesEntityId + "/api/v4/bulk_imports/{import_id}/entities/{entity_id}/failures": + get: + summary: Get GitLab Migration entity failures + description: This feature was introduced in GitLab 16.6 + produces: + - application/json + parameters: + - in: path + name: import_id + description: The ID of user's GitLab Migration + type: integer + format: int32 + required: true + - in: path + name: entity_id + description: The ID of GitLab Migration entity + type: integer + format: int32 + required: true + responses: + '200': + description: Get GitLab Migration entity failures + schema: + "$ref": "#/definitions/API_Entities_BulkImports_EntityFailure" + '401': + description: Unauthorized + '404': + description: Not found + '503': + description: Service unavailable + tags: + - bulk_imports + operationId: getApiV4BulkImportsImportIdEntitiesEntityIdFailures + "/api/v4/bulk_imports/{import_id}/cancel": + post: + summary: Cancel GitLab Migration + description: This feature was introduced in GitLab 17.1 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: import_id + description: The ID of user's GitLab Migration + type: integer + format: int32 + required: true + responses: + '200': + description: Cancel GitLab Migration + schema: + "$ref": "#/definitions/API_Entities_BulkImport" + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '503': + description: Service unavailable + tags: + - bulk_imports + operationId: postApiV4BulkImportsImportIdCancel + "/api/v4/job": + get: + description: Get current job using job token + produces: + - application/json + responses: + '200': + description: Get current job using job token + schema: + "$ref": "#/definitions/API_Entities_Ci_Job" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - job + operationId: getApiV4Job + "/api/v4/job/allowed_agents": + get: + summary: Get current agents + description: Retrieves a list of agents for the given job token + produces: + - application/json + responses: + '200': + description: Get current agents + schema: + "$ref": "#/definitions/API_Entities_Ci_Job" + '400': + description: Bad request + '401': + description: Unauthorized + '404': + description: Not found + tags: + - job + operationId: getApiV4JobAllowedAgents + "/api/v4/runners": + post: + summary: Register a new runner + description: Register a new runner for the instance + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4Runners + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4Runners" + responses: + '201': + description: Register a new runner + schema: + "$ref": "#/definitions/API_Entities_Ci_RunnerRegistrationDetails" + '400': + description: Bad Request + '403': + description: Forbidden + '410': + description: Gone + tags: + - runners + operationId: postApiV4Runners + delete: + summary: Delete a runner by authentication token + description: Delete a registered runner + produces: + - application/json + parameters: + - in: query + name: token + description: The runner's authentication token + type: string + required: true + responses: + '204': + description: Delete a registered runner + '403': + description: Forbidden + tags: + - runners + operationId: deleteApiV4Runners + get: + summary: List owned runners + description: Get runners available for user + produces: + - application/json + parameters: + - in: query + name: scope + description: 'Deprecated: Use `type` or `status` instead. The scope of runners + to return' + type: string + enum: + - specific + - shared + - instance_type + - group_type + - project_type + - active + - paused + - online + - offline + - never_contacted + - stale + required: false + - in: query + name: type + description: The type of runners to return + type: string + enum: + - instance_type + - group_type + - project_type + required: false + - in: query + name: paused + description: Whether to include only runners that are accepting or ignoring + new jobs + type: boolean + required: false + - in: query + name: status + description: The status of runners to return + type: string + enum: + - active + - paused + - online + - offline + - never_contacted + - stale + required: false + - in: query + name: tag_list + description: A list of runner tags + type: array + items: + type: string + required: false + example: "['macos', 'shell']" + - in: query + name: version_prefix + description: The version prefix of runners to return + type: string + required: false + example: "'15.1.' or '16.'" + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get runners available for user + schema: + "$ref": "#/definitions/API_Entities_Ci_Runner" + '400': + description: Scope contains invalid value + '401': + description: Unauthorized + tags: + - runners + operationId: getApiV4Runners + "/api/v4/runners/managers": + delete: + summary: Internal endpoint that deletes a runner manager by authentication token + and system ID. + description: Delete a registered runner manager + produces: + - application/json + parameters: + - in: query + name: token + description: The runner's authentication token + type: string + required: true + - in: query + name: system_id + description: The runner's system identifier. + type: string + required: true + responses: + '204': + description: Runner manager was deleted + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - runners + operationId: deleteApiV4RunnersManagers + "/api/v4/runners/verify": + post: + summary: Verify authentication for a registered runner + description: Validate authentication credentials + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4RunnersVerify + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4RunnersVerify" + responses: + '200': + description: Credentials are valid + '403': + description: Forbidden + '422': + description: Runner is orphaned + tags: + - runners + operationId: postApiV4RunnersVerify + "/api/v4/runners/reset_authentication_token": + post: + description: Reset runner authentication token with current token + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4RunnersResetAuthenticationToken + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4RunnersResetAuthenticationToken" + responses: + '201': + description: Reset runner authentication token with current token + schema: + "$ref": "#/definitions/API_Entities_Ci_ResetTokenResult" + '403': + description: Forbidden + tags: + - runners + operationId: postApiV4RunnersResetAuthenticationToken + "/api/v4/runners/all": + get: + summary: List all runners + description: Get a list of all runners in the GitLab instance (shared and project). + Access is restricted to users with either administrator access or auditor + access. + produces: + - application/json + parameters: + - in: query + name: scope + description: 'Deprecated: Use `type` or `status` instead. The scope of runners + to return' + type: string + enum: + - specific + - shared + - instance_type + - group_type + - project_type + - active + - paused + - online + - offline + - never_contacted + - stale + required: false + - in: query + name: type + description: The type of runners to return + type: string + enum: + - instance_type + - group_type + - project_type + required: false + - in: query + name: paused + description: Whether to include only runners that are accepting or ignoring + new jobs + type: boolean + required: false + - in: query + name: status + description: The status of runners to return + type: string + enum: + - active + - paused + - online + - offline + - never_contacted + - stale + required: false + - in: query + name: tag_list + description: A list of runner tags + type: array + items: + type: string + required: false + example: "['macos', 'shell']" + - in: query + name: version_prefix + description: The version prefix of runners to return + type: string + required: false + example: "'15.1.' or '16.'" + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get all runners - shared and project + schema: + "$ref": "#/definitions/API_Entities_Ci_Runner" + '400': + description: Scope contains invalid value + '401': + description: Unauthorized + tags: + - runners + operationId: getApiV4RunnersAll + "/api/v4/runners/{id}": + get: + summary: Get runner's details + description: At least the Maintainer role is required to get runner details + at the project and group level. Instance-level runner details via this endpoint + are available to all signed in users. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a runner + type: integer + format: int32 + required: true + responses: + '200': + description: Get runner's details + schema: + "$ref": "#/definitions/API_Entities_Ci_RunnerDetails" + '401': + description: Unauthorized + '403': + description: No access granted + '404': + description: Runner not found + tags: + - runners + operationId: getApiV4RunnersId + put: + summary: Update details of a runner + description: Update runner's details + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a runner + type: integer + format: int32 + required: true + - name: putApiV4RunnersId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4RunnersId" + responses: + '200': + description: Update runner's details + schema: + "$ref": "#/definitions/API_Entities_Ci_RunnerDetails" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: No access granted + '404': + description: Runner not found + tags: + - runners + operationId: putApiV4RunnersId + delete: + summary: Delete a runner + description: Remove a runner + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a runner + type: integer + format: int32 + required: true + responses: + '401': + description: Unauthorized + '204': + description: Remove a runner + schema: + "$ref": "#/definitions/API_Entities_Ci_Runner" + '403': + description: No access granted + '404': + description: Runner not found + '412': + description: Precondition Failed + tags: + - runners + operationId: deleteApiV4RunnersId + "/api/v4/runners/{id}/managers": + get: + description: Get a list of all runner's managers + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a runner + type: integer + format: int32 + required: true + responses: + '200': + description: Get a list of all runner's managers + schema: + "$ref": "#/definitions/API_Entities_Ci_RunnerManager" + '403': + description: Forbidden + tags: + - runners + operationId: getApiV4RunnersIdManagers + "/api/v4/runners/{id}/jobs": + get: + summary: List runner's jobs + description: List jobs that are being processed or were processed by the specified + runner. The list of jobs is limited to projects where the user has at least + the Reporter role. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a runner + type: integer + format: int32 + required: true + - in: query + name: system_id + description: System ID associated with the runner manager + type: string + required: false + - in: query + name: status + description: Status of the job + type: string + enum: + - created + - waiting_for_resource + - preparing + - waiting_for_callback + - pending + - running + - success + - failed + - canceling + - canceled + - skipped + - manual + - scheduled + required: false + - in: query + name: order_by + description: Order by `id` + type: string + enum: + - id + required: false + - in: query + name: sort + description: Sort by `asc` or `desc` order. Specify `order_by` as well, including + for `id` + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: cursor + description: Cursor for obtaining the next set of records + type: string + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List jobs running on a runner + schema: + "$ref": "#/definitions/API_Entities_Ci_JobBasicWithProject" + '401': + description: Unauthorized + '403': + description: No access granted + '404': + description: Runner not found + tags: + - runners + - jobs + operationId: getApiV4RunnersIdJobs + "/api/v4/runners/{id}/reset_authentication_token": + post: + summary: Reset runner's authentication token + description: Reset runner authentication token + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of the runner + type: integer + format: int32 + required: true + responses: + '201': + description: Reset runner authentication token + schema: + "$ref": "#/definitions/API_Entities_Ci_ResetTokenResult" + '403': + description: No access granted + '404': + description: Runner not found + tags: + - runners + operationId: postApiV4RunnersIdResetAuthenticationToken + "/api/v4/runners/reset_registration_token": + post: + summary: Reset instance's runner registration token + description: Reset runner registration token + produces: + - application/json + consumes: + - application/json + responses: + '201': + description: Reset runner registration token + schema: + "$ref": "#/definitions/API_Entities_Ci_ResetTokenResult" + '403': + description: Forbidden + tags: + - runners + - groups + operationId: postApiV4RunnersResetRegistrationToken + "/api/v4/jobs/request": + post: + description: Request a job + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4JobsRequest + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4JobsRequest" + responses: + '201': + description: Job was scheduled + '204': + description: No job for Runner + '403': + description: Forbidden + '409': + description: Conflict + '422': + description: Runner is orphaned + tags: + - jobs + operationId: postApiV4JobsRequest + "/api/v4/jobs/{id}": + put: + description: Update a job + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: Job's ID + type: integer + format: int32 + required: true + - name: putApiV4JobsId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4JobsId" + responses: + '200': + description: Job was updated + '202': + description: Update accepted + '400': + description: Unknown parameters + '403': + description: Forbidden + tags: + - jobs + operationId: putApiV4JobsId + "/api/v4/jobs/{id}/trace": + patch: + description: Append a patch to the job trace + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: Job's ID + type: integer + format: int32 + required: true + - name: patchApiV4JobsIdTrace + in: body + required: true + schema: + "$ref": "#/definitions/patchApiV4JobsIdTrace" + responses: + '202': + description: Trace was patched + '400': + description: Missing Content-Range header + '403': + description: Forbidden + '416': + description: Range not satisfiable + tags: + - jobs + operationId: patchApiV4JobsIdTrace + "/api/v4/jobs/{id}/artifacts/authorize": + post: + description: Authorize uploading job artifact + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: Job's ID + type: integer + format: int32 + required: true + - name: postApiV4JobsIdArtifactsAuthorize + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4JobsIdArtifactsAuthorize" + responses: + '200': + description: Upload allowed + '403': + description: Forbidden + '405': + description: Artifacts support not enabled + '413': + description: File too large + tags: + - jobs + operationId: postApiV4JobsIdArtifactsAuthorize + "/api/v4/jobs/{id}/artifacts": + post: + description: Upload a job artifact + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: Job's ID + type: integer + format: int32 + required: true + - name: postApiV4JobsIdArtifacts + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4JobsIdArtifacts" + responses: + '201': + description: Artifact uploaded + '400': + description: Bad request + '403': + description: Forbidden + '405': + description: Artifacts support not enabled + '413': + description: File too large + tags: + - jobs + operationId: postApiV4JobsIdArtifacts + get: + description: Download the artifacts file for job + produces: + - application/json + parameters: + - in: path + name: id + description: Job's ID + type: integer + format: int32 + required: true + - in: query + name: token + description: Job's authentication token + type: string + required: false + - in: query + name: direct_download + description: Perform direct download from remote storage instead of proxying + artifacts + type: boolean + default: false + required: false + responses: + '200': + description: Download allowed + '302': + description: Found + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Artifact not found + tags: + - jobs + operationId: getApiV4JobsIdArtifacts + "/api/v4/group/{id}/-/packages/composer/packages": + get: + summary: Composer packages endpoint at group level + description: This feature was introduced in GitLab 13.1 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of a group + type: string + required: true + responses: + '200': + description: Composer packages endpoint at group level + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - composer_packages + operationId: getApiV4GroupIdPackagesComposerPackages + "/api/v4/group/{id}/-/packages/composer/p/{sha}": + get: + summary: Composer packages endpoint at group level for packages list + description: This feature was introduced in GitLab 13.1 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of a group + type: string + required: true + - in: path + name: sha + description: Shasum of current json + type: string + required: true + example: 673594f85a55fe3c0eb45df7bd2fa9d95a1601ab + responses: + '200': + description: Composer packages endpoint at group level for packages list + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - composer_packages + operationId: getApiV4GroupIdPackagesComposerPSha + "/api/v4/group/{id}/-/packages/composer/p2/*package_name": + get: + summary: Composer v2 packages p2 endpoint at group level for package versions + metadata + description: This feature was introduced in GitLab 13.1 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of a group + type: string + required: true + - in: query + name: package_name + description: The Composer package name + type: string + required: true + example: my-composer-package + responses: + '200': + description: Composer v2 packages p2 endpoint at group level for package + versions metadata + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - composer_packages + operationId: getApiV4GroupIdPackagesComposerP2*packageName + "/api/v4/group/{id}/-/packages/composer/*package_name": + get: + summary: Composer packages endpoint at group level for package versions metadata + description: This feature was introduced in GitLab 12.1 + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or URL-encoded path of a group + type: string + required: true + - in: query + name: package_name + description: The Composer package name + type: string + required: true + example: my-composer-package + responses: + '200': + description: Composer packages endpoint at group level for package versions + metadata + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - composer_packages + operationId: getApiV4GroupIdPackagesComposer*packageName + "/api/v4/packages/conan/v1/users/authenticate": + get: + summary: Authenticate user against conan CLI + description: This feature was introduced in GitLab 12.2 + produces: + - application/json + responses: + '200': + description: Authenticate user against conan CLI + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4PackagesConanV1UsersAuthenticate + "/api/v4/packages/conan/v1/users/check_credentials": + get: + summary: Check for valid user credentials per conan CLI + description: This feature was introduced in GitLab 12.4 + produces: + - application/json + responses: + '200': + description: Check for valid user credentials per conan CLI + '401': + description: Unauthorized + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4PackagesConanV1UsersCheckCredentials + "/api/v4/packages/conan/v1/conans/search": + get: + summary: Search for packages + description: This feature was introduced in GitLab 12.4 + produces: + - application/json + parameters: + - in: query + name: q + description: Search query + type: string + required: true + example: Hello* + responses: + '200': + description: Search for packages + '400': + description: Bad Request + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4PackagesConanV1ConansSearch + "/api/v4/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}/search": + get: + summary: Get package references metadata + description: This feature was introduced in GitLab 18.0 + produces: + - application/json + parameters: + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + responses: + '200': + description: Get package references metadata + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4PackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannelSearch + "/api/v4/packages/conan/v1/ping": + get: + summary: Ping the Conan API + description: This feature was introduced in GitLab 12.2 + produces: + - application/json + responses: + '200': + description: Ping the Conan API + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4PackagesConanV1Ping + ? "/api/v4/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}/packages/{conan_package_reference}" + : get: + summary: Package Snapshot + description: This feature was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: conan_package_reference + description: Conan package ID + type: string + required: true + example: 103f6067a947f366ef91fc1b7da351c588d1827f + responses: + '200': + description: Package Snapshot + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_PackageSnapshot" + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4PackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannelPackagesConanPackageReference + "/api/v4/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}": + get: + summary: Recipe Snapshot + description: This feature was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + responses: + '200': + description: Recipe Snapshot + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_RecipeSnapshot" + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4PackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannel + delete: + summary: Delete Package + description: This feature was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + responses: + '204': + description: Delete Package + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: deleteApiV4PackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannel + ? "/api/v4/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}/packages/{conan_package_reference}/digest" + : get: + summary: Package Digest + description: This feature was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: conan_package_reference + description: Conan package ID + type: string + required: true + example: 103f6067a947f366ef91fc1b7da351c588d1827f + responses: + '200': + description: Package Digest + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_PackageManifest" + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4PackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannelPackagesConanPackageReferenceDigest + "/api/v4/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}/digest": + get: + summary: Recipe Digest + description: This feature was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + responses: + '200': + description: Recipe Digest + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_RecipeManifest" + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4PackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannelDigest + ? "/api/v4/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}/packages/{conan_package_reference}/download_urls" + : get: + summary: Package Download Urls + description: This feature was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: conan_package_reference + description: Conan package ID + type: string + required: true + example: 103f6067a947f366ef91fc1b7da351c588d1827f + responses: + '200': + description: Package Download Urls + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_PackageManifest" + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4PackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannelPackagesConanPackageReferenceDownloadUrls + "/api/v4/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}/download_urls": + get: + summary: Recipe Download Urls + description: This feature was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + responses: + '200': + description: Recipe Download Urls + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_RecipeManifest" + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4PackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannelDownloadUrls + ? "/api/v4/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}/packages/{conan_package_reference}/upload_urls" + : post: + summary: Package Upload Urls + description: This feature was introduced in GitLab 12.4 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: conan_package_reference + description: Conan package ID + type: string + required: true + example: 103f6067a947f366ef91fc1b7da351c588d1827f + responses: + '200': + description: Package Upload Urls + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_UploadUrls" + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: postApiV4PackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannelPackagesConanPackageReferenceUploadUrls + "/api/v4/packages/conan/v1/conans/{package_name}/{package_version}/{package_username}/{package_channel}/upload_urls": + post: + summary: Recipe Upload Urls + description: This feature was introduced in GitLab 12.4 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + responses: + '200': + description: Recipe Upload Urls + schema: + "$ref": "#/definitions/API_Entities_Packages_Conan_UploadUrls" + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: postApiV4PackagesConanV1ConansPackageNamePackageVersionPackageUsernamePackageChannelUploadUrls + ? "/api/v4/packages/conan/v1/files/{package_name}/{package_version}/{package_username}/{package_channel}/{recipe_revision}/export/{file_name}" + : get: + summary: Download recipe files + description: This feature was introduced in GitLab 12.6 + produces: + - application/json + parameters: + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Conan Recipe Revision + type: string + required: true + example: '0' + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conanfile.py + responses: + '200': + description: Download recipe files + '400': + description: Bad Request + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4PackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionExportFileName + put: + summary: Upload recipe package files + description: This feature was introduced in GitLab 12.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Conan Recipe Revision + type: string + required: true + example: '0' + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conanfile.py + - name: putApiV4PackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionExportFileName + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4PackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionExportFileName" + responses: + '200': + description: Upload recipe package files + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: putApiV4PackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionExportFileName + ? "/api/v4/packages/conan/v1/files/{package_name}/{package_version}/{package_username}/{package_channel}/{recipe_revision}/export/{file_name}/authorize" + : put: + summary: Workhorse authorize the conan recipe file + description: This feature was introduced in GitLab 12.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Conan Recipe Revision + type: string + required: true + example: '0' + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conanfile.py + responses: + '200': + description: Workhorse authorize the conan recipe file + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: putApiV4PackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionExportFileNameAuthorize + ? "/api/v4/packages/conan/v1/files/{package_name}/{package_version}/{package_username}/{package_channel}/{recipe_revision}/package/{conan_package_reference}/{package_revision}/{file_name}" + : get: + summary: Download package files + description: This feature was introduced in GitLab 12.5 + produces: + - application/json + parameters: + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Conan Recipe Revision + type: string + required: true + example: '0' + - in: path + name: conan_package_reference + description: Conan Package ID + type: string + required: true + example: 103f6067a947f366ef91fc1b7da351c588d1827f + - in: path + name: package_revision + description: Conan Package Revision + type: string + required: true + example: '0' + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conaninfo.txt + responses: + '200': + description: Download package files + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: getApiV4PackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionPackageConanPackageReferencePackageRevisionFileName + put: + summary: Upload package files + description: This feature was introduced in GitLab 12.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Conan Recipe Revision + type: string + required: true + example: '0' + - in: path + name: conan_package_reference + description: Conan Package ID + type: string + required: true + example: 103f6067a947f366ef91fc1b7da351c588d1827f + - in: path + name: package_revision + description: Conan Package Revision + type: string + required: true + example: '0' + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conaninfo.txt + - name: putApiV4PackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionPackageConanPackageReferencePackageRevisionFileName + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4PackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionPackageConanPackageReferencePackageRevisionFileName" + responses: + '200': + description: Upload package files + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: putApiV4PackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionPackageConanPackageReferencePackageRevisionFileName + ? "/api/v4/packages/conan/v1/files/{package_name}/{package_version}/{package_username}/{package_channel}/{recipe_revision}/package/{conan_package_reference}/{package_revision}/{file_name}/authorize" + : put: + summary: Workhorse authorize the conan package file + description: This feature was introduced in GitLab 12.6 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: package_name + description: Package name + type: string + required: true + example: my-package + - in: path + name: package_version + description: Package version + type: string + required: true + example: '1.0' + - in: path + name: package_username + description: Package username + type: string + required: true + example: my-group+my-project + - in: path + name: package_channel + description: Package channel + type: string + required: true + example: stable + - in: path + name: recipe_revision + description: Conan Recipe Revision + type: string + required: true + example: '0' + - in: path + name: conan_package_reference + description: Conan Package ID + type: string + required: true + example: 103f6067a947f366ef91fc1b7da351c588d1827f + - in: path + name: package_revision + description: Conan Package Revision + type: string + required: true + example: '0' + - in: path + name: file_name + description: Package file name + type: string + enum: + - conanfile.py + - conanmanifest.txt + - conan_sources.tgz + - conan_export.tgz + - conaninfo.txt + - conan_package.tgz + required: true + example: conaninfo.txt + responses: + '200': + description: Workhorse authorize the conan package file + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - conan_packages + operationId: putApiV4PackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionPackageConanPackageReferencePackageRevisionFileNameAuthorize + "/api/v4/packages/maven/*path/{file_name}": + get: + summary: Download the maven package file at instance level + description: This feature was introduced in GitLab 11.6 + produces: + - application/json + parameters: + - in: query + name: path + description: Package path + type: string + required: true + example: foo/bar/mypkg/1.0-SNAPSHOT + - in: path + name: file_name + description: Package file name + type: string + required: true + example: mypkg-1.0-SNAPSHOT.jar + responses: + '200': + description: Download the maven package file at instance level + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - maven_packages + operationId: getApiV4PackagesMaven*pathFileName + "/api/v4/packages/npm/-/package/*package_name/dist-tags": + get: + summary: Get all tags for a given an NPM package + description: This feature was introduced in GitLab 12.7 + produces: + - application/json + parameters: + - in: query + name: package_name + description: Package name + type: string + required: true + responses: + '200': + description: Get all tags for a given an NPM package + schema: + "$ref": "#/definitions/API_Entities_NpmPackageTag" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: getApiV4PackagesNpmPackage*packageNameDistTags + "/api/v4/packages/npm/-/package/*package_name/dist-tags/{tag}": + put: + summary: Create or Update the given tag for the given NPM package and version + description: This feature was introduced in GitLab 12.7 + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: tag + description: Package dist-tag + type: string + required: true + - name: putApiV4PackagesNpmPackage*packageNameDistTagsTag + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4PackagesNpmPackage*packageNameDistTagsTag" + responses: + '204': + description: Create or Update the given tag for the given NPM package and + version + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: putApiV4PackagesNpmPackage*packageNameDistTagsTag + delete: + summary: Deletes the given tag + description: This feature was introduced in GitLab 12.7 + produces: + - application/json + parameters: + - in: query + name: package_name + description: Package name + type: string + required: true + - in: path + name: tag + description: Package dist-tag + type: string + required: true + responses: + '204': + description: Deletes the given tag + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: deleteApiV4PackagesNpmPackage*packageNameDistTagsTag + "/api/v4/packages/npm/-/npm/v1/security/advisories/bulk": + post: + summary: NPM registry bulk advisory endpoint + description: This feature was introduced in GitLab 15.6 + produces: + - application/json + consumes: + - application/json + responses: + '200': + description: Ok + '307': + description: Temporary Redirect + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: postApiV4PackagesNpmNpmV1SecurityAdvisoriesBulk + "/api/v4/packages/npm/-/npm/v1/security/audits/quick": + post: + summary: NPM registry quick audit endpoint + description: This feature was introduced in GitLab 15.6 + produces: + - application/json + consumes: + - application/json + responses: + '200': + description: Ok + '307': + description: Temporary Redirect + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: postApiV4PackagesNpmNpmV1SecurityAuditsQuick + "/api/v4/packages/npm/*package_name": + get: + summary: NPM registry metadata endpoint + description: This feature was introduced in GitLab 11.8 + produces: + - application/json + parameters: + - in: query + name: package_name + description: Package name + type: string + required: true + example: mypackage + responses: + '200': + description: Ok + schema: + "$ref": "#/definitions/API_Entities_NpmPackage" + '302': + description: Found (redirect) + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - npm_packages + operationId: getApiV4PackagesNpm*packageName + "/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}/versions": + get: + summary: List versions for a module + description: List versions for a module + produces: + - application/json + parameters: + - in: path + name: module_namespace + description: Group's ID or slug + type: string + required: true + - in: path + name: module_name + description: '' + type: string + required: true + - in: path + name: module_system + type: string + required: true + responses: + '200': + description: List versions for a module + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Terraform_ModuleVersions" + '403': + description: Forbidden + tags: + - terraform_registry + operationId: getApiV4PackagesTerraformModulesV1ModuleNamespaceModuleNameModuleSystemVersions + "/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}/download": + get: + summary: Get download location for the latest version of a module + description: Download the latest version of a module + produces: + - application/json + parameters: + - in: path + name: module_namespace + description: Group's ID or slug + type: string + required: true + - in: path + name: module_name + description: '' + type: string + required: true + - in: path + name: module_system + type: string + required: true + responses: + '302': + description: Get download location for the latest version of a module + '403': + description: Forbidden + '404': + description: Not found + tags: + - terraform_registry + operationId: getApiV4PackagesTerraformModulesV1ModuleNamespaceModuleNameModuleSystemDownload + "/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}": + get: + summary: Get details about the latest version of a module + description: Get details about the latest version of a module + produces: + - application/json + parameters: + - in: path + name: module_namespace + description: Group's ID or slug + type: string + required: true + - in: path + name: module_name + description: '' + type: string + required: true + - in: path + name: module_system + type: string + required: true + responses: + '200': + description: Get details about the latest version of a module + schema: + "$ref": "#/definitions/API_Entities_Terraform_ModuleVersion" + '403': + description: Forbidden + '404': + description: Not found + tags: + - terraform_registry + operationId: getApiV4PackagesTerraformModulesV1ModuleNamespaceModuleNameModuleSystem + "/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}/*module_version/download": + get: + summary: Get download location for specific version of a module + description: Download specific version of a module + produces: + - application/json + parameters: + - in: path + name: module_namespace + description: Group's ID or slug + type: string + required: true + - in: path + name: module_name + description: '' + type: string + required: true + - in: path + name: module_system + type: string + required: true + - in: query + name: module_version + description: Module version + type: string + required: true + responses: + '204': + description: Get download location for specific version of a module + '403': + description: Forbidden + '404': + description: Not found + tags: + - terraform_registry + operationId: getApiV4PackagesTerraformModulesV1ModuleNamespaceModuleNameModuleSystem*moduleVersionDownload + "/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}/*module_version/file": + get: + summary: Download specific version of a module + description: Download specific version of a module + produces: + - application/json + parameters: + - in: path + name: module_namespace + description: Group's ID or slug + type: string + required: true + - in: path + name: module_name + description: '' + type: string + required: true + - in: path + name: module_system + type: string + required: true + - in: query + name: module_version + description: Module version + type: string + required: true + responses: + '200': + description: Download specific version of a module + schema: + type: file + '403': + description: Forbidden + '404': + description: Not found + tags: + - terraform_registry + operationId: getApiV4PackagesTerraformModulesV1ModuleNamespaceModuleNameModuleSystem*moduleVersionFile + "/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}/*module_version": + get: + summary: Get details about specific version of a module + description: Get details about specific version of a module + produces: + - application/json + parameters: + - in: path + name: module_namespace + description: Group's ID or slug + type: string + required: true + - in: path + name: module_name + description: '' + type: string + required: true + - in: path + name: module_system + type: string + required: true + - in: query + name: module_version + description: Module version + type: string + required: true + responses: + '200': + description: Get details about specific version of a module + schema: + "$ref": "#/definitions/API_Entities_Terraform_ModuleVersion" + '403': + description: Forbidden + '404': + description: Not found + tags: + - terraform_registry + operationId: getApiV4PackagesTerraformModulesV1ModuleNamespaceModuleNameModuleSystem*moduleVersion + "/api/v4/container_registry_event/events": + post: + summary: Receives notifications from the container registry when an operation + occurs + description: This feature was introduced in GitLab 12.10 + produces: + - application/json + consumes: + - application/json + - application/vnd.docker.distribution.events.v1+json + responses: + '200': + description: Success + '401': + description: Invalid Token + tags: + - container_registry_event + operationId: postApiV4ContainerRegistryEventEvents + "/api/v4/registry/repositories/{id}": + get: + summary: Get a container repository + description: This feature was introduced in GitLab 13.6. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of the repository + type: string + required: true + - in: query + name: tags + description: Determines if tags should be included + type: boolean + default: false + required: false + - in: query + name: tags_count + description: Determines if the tags count should be included + type: boolean + default: false + required: false + - in: query + name: size + description: Determines if the size should be included + type: boolean + default: false + required: false + responses: + '200': + description: Get a container repository + schema: + "$ref": "#/definitions/API_Entities_ContainerRegistry_Repository" + '401': + description: Unauthorized + '404': + description: Repository Not Found + tags: + - container_registry + operationId: getApiV4RegistryRepositoriesId + "/api/v4/events": + get: + summary: List currently authenticated user's events + description: This feature was introduced in GitLab 9.3. + produces: + - application/json + parameters: + - in: query + name: scope + description: Include all events across a user’s projects + type: string + required: false + example: all + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: action + description: Event action to filter on + type: string + required: false + - in: query + name: target_type + description: Event target type to filter on + type: string + enum: + - issue + - milestone + - merge_request + - note + - project + - snippet + - user + - wiki + - design + required: false + - in: query + name: before + description: Include only events created before this date + type: string + format: date + required: false + - in: query + name: after + description: Include only events created after this date + type: string + format: date + required: false + - in: query + name: sort + description: Return events sorted in ascending and descending order + type: string + default: desc + enum: + - asc + - desc + required: false + responses: + '200': + description: List currently authenticated user's events + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Event" + '401': + description: Unauthorized + tags: + - events + operationId: getApiV4Events + "/api/v4/users/{id}/events": + get: + summary: Get the contribution events of a specified user + description: This feature was introduced in GitLab 8.13. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID or username of the user + type: string + required: true + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: action + description: Event action to filter on + type: string + required: false + - in: query + name: target_type + description: Event target type to filter on + type: string + enum: + - issue + - milestone + - merge_request + - note + - project + - snippet + - user + - wiki + - design + required: false + - in: query + name: before + description: Include only events created before this date + type: string + format: date + required: false + - in: query + name: after + description: Include only events created after this date + type: string + format: date + required: false + - in: query + name: sort + description: Return events sorted in ascending and descending order + type: string + default: desc + enum: + - asc + - desc + required: false + responses: + '200': + description: Get the contribution events of a specified user + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Event" + '404': + description: Not found + tags: + - events + operationId: getApiV4UsersIdEvents + "/api/v4/users/{user_id}/projects": + get: + description: Get a user projects + produces: + - application/json + parameters: + - in: path + name: user_id + description: The ID or username of the user + type: string + required: true + - in: query + name: order_by + description: Return projects ordered by field. storage_size, repository_size, + wiki_size, packages_size are only available to admins. Similarity is available + when searching and is limited to projects the user has access to. + type: string + default: created_at + enum: + - id + - name + - path + - created_at + - updated_at + - last_activity_at + - similarity + - star_count + - storage_size + - repository_size + - wiki_size + - packages_size + required: false + - in: query + name: sort + description: Return projects sorted in ascending and descending order + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: archived + description: Limit by archived status + type: boolean + required: false + - in: query + name: visibility + description: Limit by visibility + type: string + enum: + - private + - internal + - public + required: false + - in: query + name: search + description: Return list of projects matching the search criteria + type: string + required: false + - in: query + name: search_namespaces + description: Include ancestor namespaces when matching search criteria + type: boolean + required: false + - in: query + name: owned + description: Limit by owned by authenticated user + type: boolean + default: false + required: false + - in: query + name: starred + description: Limit by starred status + type: boolean + default: false + required: false + - in: query + name: imported + description: Limit by imported by authenticated user + type: boolean + default: false + required: false + - in: query + name: membership + description: Limit by projects that the current user is a member of + type: boolean + default: false + required: false + - in: query + name: with_issues_enabled + description: Limit by enabled issues feature + type: boolean + default: false + required: false + - in: query + name: with_merge_requests_enabled + description: Limit by enabled merge requests feature + type: boolean + default: false + required: false + - in: query + name: with_programming_language + description: Limit to repositories which use the given programming language + type: string + required: false + - in: query + name: min_access_level + description: Limit by minimum access level of authenticated user + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + required: false + - in: query + name: id_after + description: Limit results to projects with IDs greater than the specified + ID + type: integer + format: int32 + required: false + - in: query + name: id_before + description: Limit results to projects with IDs less than the specified ID + type: integer + format: int32 + required: false + - in: query + name: last_activity_after + description: 'Limit results to projects with last_activity after specified + time. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: last_activity_before + description: 'Limit results to projects with last_activity before specified + time. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: repository_storage + description: Which storage shard the repository is on. Available only to admins + type: string + required: false + - in: query + name: topic + description: Comma-separated list of topics. Limit results to projects having + all topics + type: array + items: + type: string + required: false + - in: query + name: topic_id + description: Limit results to projects with the assigned topic given by the + topic ID + type: integer + format: int32 + required: false + - in: query + name: updated_before + description: 'Return projects updated before the specified datetime. Format: + ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: updated_after + description: 'Return projects updated after the specified datetime. Format: + ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: include_pending_delete + description: Include projects in pending delete state. Can only be set by + admins + type: boolean + required: false + - in: query + name: marked_for_deletion_on + description: Date when the project was marked for deletion + type: string + format: date + required: false + - in: query + name: active + description: Limit by projects that are not archived and not marked for deletion + type: boolean + required: false + - in: query + name: wiki_checksum_failed + description: Limit by projects where wiki checksum is failed + type: boolean + default: false + required: false + - in: query + name: repository_checksum_failed + description: Limit by projects where repository checksum is failed + type: boolean + default: false + required: false + - in: query + name: include_hidden + description: Include hidden projects. Can only be set by admins + type: boolean + default: false + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: simple + description: Return only the ID, URL, name, and path of each project + type: boolean + default: false + required: false + - in: query + name: statistics + description: Include project statistics + type: boolean + default: false + required: false + - in: query + name: with_custom_attributes + description: Include custom attributes in the response + type: boolean + default: false + required: false + responses: + '200': + description: Get a user projects + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_BasicProjectDetails" + '404': + description: 404 User Not Found + tags: + - projects + operationId: getApiV4UsersUserIdProjects + "/api/v4/users/{user_id}/contributed_projects": + get: + description: Get projects that a user has contributed to + produces: + - application/json + parameters: + - in: path + name: user_id + description: The ID or username of the user + type: string + required: true + - in: query + name: order_by + description: Return projects ordered by field. storage_size, repository_size, + wiki_size, packages_size are only available to admins. Similarity is available + when searching and is limited to projects the user has access to. + type: string + default: created_at + enum: + - id + - name + - path + - created_at + - updated_at + - last_activity_at + - similarity + - star_count + - storage_size + - repository_size + - wiki_size + - packages_size + required: false + - in: query + name: sort + description: Return projects sorted in ascending and descending order + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: simple + description: Return only the ID, URL, name, and path of each project + type: boolean + default: false + required: false + responses: + '200': + description: Get projects that a user has contributed to + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_BasicProjectDetails" + '404': + description: 404 User Not Found + tags: + - projects + operationId: getApiV4UsersUserIdContributedProjects + "/api/v4/users/{user_id}/starred_projects": + get: + description: Get projects starred by a user + produces: + - application/json + parameters: + - in: path + name: user_id + description: The ID or username of the user + type: string + required: true + - in: query + name: order_by + description: Return projects ordered by field. storage_size, repository_size, + wiki_size, packages_size are only available to admins. Similarity is available + when searching and is limited to projects the user has access to. + type: string + default: created_at + enum: + - id + - name + - path + - created_at + - updated_at + - last_activity_at + - similarity + - star_count + - storage_size + - repository_size + - wiki_size + - packages_size + required: false + - in: query + name: sort + description: Return projects sorted in ascending and descending order + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: archived + description: Limit by archived status + type: boolean + required: false + - in: query + name: visibility + description: Limit by visibility + type: string + enum: + - private + - internal + - public + required: false + - in: query + name: search + description: Return list of projects matching the search criteria + type: string + required: false + - in: query + name: search_namespaces + description: Include ancestor namespaces when matching search criteria + type: boolean + required: false + - in: query + name: owned + description: Limit by owned by authenticated user + type: boolean + default: false + required: false + - in: query + name: starred + description: Limit by starred status + type: boolean + default: false + required: false + - in: query + name: imported + description: Limit by imported by authenticated user + type: boolean + default: false + required: false + - in: query + name: membership + description: Limit by projects that the current user is a member of + type: boolean + default: false + required: false + - in: query + name: with_issues_enabled + description: Limit by enabled issues feature + type: boolean + default: false + required: false + - in: query + name: with_merge_requests_enabled + description: Limit by enabled merge requests feature + type: boolean + default: false + required: false + - in: query + name: with_programming_language + description: Limit to repositories which use the given programming language + type: string + required: false + - in: query + name: min_access_level + description: Limit by minimum access level of authenticated user + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + required: false + - in: query + name: id_after + description: Limit results to projects with IDs greater than the specified + ID + type: integer + format: int32 + required: false + - in: query + name: id_before + description: Limit results to projects with IDs less than the specified ID + type: integer + format: int32 + required: false + - in: query + name: last_activity_after + description: 'Limit results to projects with last_activity after specified + time. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: last_activity_before + description: 'Limit results to projects with last_activity before specified + time. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: repository_storage + description: Which storage shard the repository is on. Available only to admins + type: string + required: false + - in: query + name: topic + description: Comma-separated list of topics. Limit results to projects having + all topics + type: array + items: + type: string + required: false + - in: query + name: topic_id + description: Limit results to projects with the assigned topic given by the + topic ID + type: integer + format: int32 + required: false + - in: query + name: updated_before + description: 'Return projects updated before the specified datetime. Format: + ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: updated_after + description: 'Return projects updated after the specified datetime. Format: + ISO 8601 YYYY-MM-DDTHH:MM:SSZ' + type: string + format: date-time + required: false + - in: query + name: include_pending_delete + description: Include projects in pending delete state. Can only be set by + admins + type: boolean + required: false + - in: query + name: marked_for_deletion_on + description: Date when the project was marked for deletion + type: string + format: date + required: false + - in: query + name: active + description: Limit by projects that are not archived and not marked for deletion + type: boolean + required: false + - in: query + name: wiki_checksum_failed + description: Limit by projects where wiki checksum is failed + type: boolean + default: false + required: false + - in: query + name: repository_checksum_failed + description: Limit by projects where repository checksum is failed + type: boolean + default: false + required: false + - in: query + name: include_hidden + description: Include hidden projects. Can only be set by admins + type: boolean + default: false + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: simple + description: Return only the ID, URL, name, and path of each project + type: boolean + default: false + required: false + - in: query + name: statistics + description: Include project statistics + type: boolean + default: false + required: false + responses: + '200': + description: Get projects starred by a user + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_BasicProjectDetails" + '404': + description: 404 User Not Found + tags: + - projects + operationId: getApiV4UsersUserIdStarredProjects + "/api/v4/features": + get: + summary: List all features + description: Get a list of all persisted features, with its gate values. + produces: + - application/json + responses: + '200': + description: List all features + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Feature" + tags: + - features + operationId: getApiV4Features + "/api/v4/features/definitions": + get: + summary: List all feature definitions + description: Get a list of all feature definitions. + produces: + - application/json + responses: + '200': + description: List all feature definitions + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Feature_Definition" + tags: + - features + operationId: getApiV4FeaturesDefinitions + "/api/v4/features/{name}": + post: + summary: Set or create a feature + description: Set a feature's gate value. If a feature with the given name doesn't + exist yet, it's created. The value can be a boolean, or an integer to indicate + percentage of time. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: name + type: integer + format: int32 + required: true + - name: postApiV4FeaturesName + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4FeaturesName" + responses: + '201': + description: Set or create a feature + schema: + "$ref": "#/definitions/API_Entities_Feature" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + tags: + - features + operationId: postApiV4FeaturesName + delete: + summary: Delete a feature + description: Removes a feature gate. Response is equal when the gate exists, + or doesn't. + produces: + - application/json + parameters: + - in: path + name: name + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a feature + tags: + - features + operationId: deleteApiV4FeaturesName + "/api/v4/geo/proxy": + get: + summary: Determine if a Geo site should proxy requests + description: Returns a Geo proxy response + produces: + - application/json + responses: + '200': + description: Returns a Geo proxy response + '403': + description: Forbidden + tags: + - geo + operationId: getApiV4GeoProxy + "/api/v4/geo/retrieve/{replicable_name}/{replicable_id}": + get: + summary: Internal endpoint that returns a replicable file + description: Returns a replicable file from store (via CDN or sendfile) + produces: + - application/json + parameters: + - in: path + name: replicable_name + description: The replicable name of a replicator instance + type: string + required: true + example: package_file + - in: path + name: replicable_id + description: The replicable ID of a replicable instance + type: integer + format: int32 + required: true + responses: + '200': + description: Returns a replicable file from store (via CDN or sendfile) + '401': + description: 401 Unauthorized + '404': + description: 404 Not found + tags: + - geo + operationId: getApiV4GeoRetrieveReplicableNameReplicableId + "/api/v4/geo/repositories/{gl_repository}/pipeline_refs": + get: + summary: Used by secondary runners to verify the secondary instance has the + very latest version + description: Returns the list of pipeline refs for the project + produces: + - application/json + parameters: + - in: path + name: gl_repository + description: The repository to check + type: string + required: true + responses: + '200': + description: Returns the list of pipeline refs for the project + schema: + type: array + items: + "$ref": "#/definitions/EE_API_Entities_Geo_PipelineRefs" + '401': + description: 401 Unauthorized + '404': + description: 404 Not found + tags: + - geo + operationId: getApiV4GeoRepositoriesGlRepositoryPipelineRefs + "/api/v4/geo/status": + post: + summary: Internal endpoint that posts the current node status + description: Posts the current node status to the primary site + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4GeoStatus + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GeoStatus" + responses: + '200': + description: Posts the current node status to the primary site + schema: + "$ref": "#/definitions/EE_API_Entities_GeoNodeStatus" + '400': + description: 400 Bad Request + '401': + description: 401 Unauthorized + tags: + - geo + operationId: postApiV4GeoStatus + "/api/v4/geo/proxy_git_ssh/info_refs_upload_pack": + post: + summary: Internal endpoint that returns info refs upload pack for git clone/pull + description: |- + Responsible for making HTTP GET /repo.git/info/refs?service=git-upload-pack + request from secondary gitlab-shell to primary + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4GeoProxyGitSshInfoRefsUploadPack + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GeoProxyGitSshInfoRefsUploadPack" + responses: + '200': + description: |- + Responsible for making HTTP GET /repo.git/info/refs?service=git-upload-pack + request from secondary gitlab-shell to primary + '401': + description: 401 Unauthorized + tags: + - geo + operationId: postApiV4GeoProxyGitSshInfoRefsUploadPack + "/api/v4/geo/proxy_git_ssh/upload_pack": + post: + summary: Internal endpoint that posts git-upload-pack for git clone/pull + description: |- + Responsible for making HTTP POST /repo.git/git-upload-pack + request from secondary gitlab-shell to primary + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4GeoProxyGitSshUploadPack + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GeoProxyGitSshUploadPack" + responses: + '200': + description: |- + Responsible for making HTTP POST /repo.git/git-upload-pack + request from secondary gitlab-shell to primary + '401': + description: 401 Unauthorized + tags: + - geo + operationId: postApiV4GeoProxyGitSshUploadPack + "/api/v4/geo/proxy_git_ssh/info_refs_receive_pack": + post: + summary: Internal endpoint that returns git-received-pack output for git push + description: |- + Responsible for making HTTP GET /repo.git/info/refs?service=git-receive-pack + request from secondary gitlab-shell to primary + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4GeoProxyGitSshInfoRefsReceivePack + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GeoProxyGitSshInfoRefsReceivePack" + responses: + '200': + description: |- + Responsible for making HTTP GET /repo.git/info/refs?service=git-receive-pack + request from secondary gitlab-shell to primary + '401': + description: 401 Unauthorized + tags: + - geo + operationId: postApiV4GeoProxyGitSshInfoRefsReceivePack + "/api/v4/geo/proxy_git_ssh/receive_pack": + post: + summary: Internal endpoint that posts git-receive-pack for git push + description: |- + Responsible for making HTTP POST /repo.git/info/refs?service=git-receive-pack + request from secondary gitlab-shell to primary + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4GeoProxyGitSshReceivePack + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4GeoProxyGitSshReceivePack" + responses: + '200': + description: |- + Responsible for making HTTP POST /repo.git/info/refs?service=git-receive-pack + request from secondary gitlab-shell to primary + '401': + description: 401 Unauthorized + tags: + - geo + operationId: postApiV4GeoProxyGitSshReceivePack + "/api/v4/geo/node_proxy/{id}/graphql": + post: + summary: Query the GraphQL endpoint of an existing Geo node + description: Query the GraphQL endpoint of an existing Geo node + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of the Geo node + type: integer + format: int32 + required: true + responses: + '200': + description: Query the GraphQL endpoint of an existing Geo node + '404': + description: 404 GeoNode Not Found + '500': + description: 500 Internal Server Error + tags: + - geo + operationId: postApiV4GeoNodeProxyIdGraphql + "/api/v4/integrations/slack/events": + post: + description: Receive Slack events + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4IntegrationsSlackEvents + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4IntegrationsSlackEvents" + responses: + '200': + description: Successfully processed event + '204': + description: Failed to process event + '401': + description: Unauthorized + tags: + - integrations + operationId: postApiV4IntegrationsSlackEvents + "/api/v4/integrations/slack/interactions": + post: + produces: + - application/json + consumes: + - application/json + responses: + '201': + description: created Interaction + tags: + - integrations + operationId: postApiV4IntegrationsSlackInteractions + "/api/v4/integrations/slack/options": + post: + produces: + - application/json + consumes: + - application/json + responses: + '201': + description: created Option + tags: + - integrations + operationId: postApiV4IntegrationsSlackOptions + "/api/v4/integrations/jira_connect/subscriptions": + post: + summary: Subscribe a namespace to a JiraConnectInstallation + description: Subscribes the namespace to the JiraConnectInstallation + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4IntegrationsJiraConnectSubscriptions + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4IntegrationsJiraConnectSubscriptions" + responses: + '201': + description: Subscribe a namespace to a JiraConnectInstallation + schema: + "$ref": "#/definitions/API_Entities_BasicSuccess" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - jira_connect_subscriptions + operationId: postApiV4IntegrationsJiraConnectSubscriptions + "/api/v4/keys/{id}": + get: + summary: Get single ssh key by id. Only available to admin users + description: |- + Get SSH key with user by ID of an SSH key. Note only administrators can lookup SSH key with user by ID\ + of an SSH key + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of an SSH key + type: string + required: true + example: '2' + responses: + '200': + description: Get single ssh key by id. Only available to admin users + schema: + "$ref": "#/definitions/API_Entities_SSHKeyWithUser" + tags: + - keys + operationId: getApiV4KeysId + "/api/v4/keys": + get: + summary: Get user by fingerprint of SSH key + description: |- + You can search for a user that owns a specific SSH key. Note only administrators can lookup SSH key\ + with the fingerprint of an SSH key + produces: + - application/json + parameters: + - in: query + name: fingerprint + description: The fingerprint of an SSH key + type: string + required: true + example: ba:81:59:68:d7:6c:cd:02:02:bf:6a:9b:55:4e:af:d1 + responses: + '200': + description: Get user by fingerprint of SSH key + schema: + "$ref": "#/definitions/API_Entities_UserWithAdmin" + tags: + - keys + operationId: getApiV4Keys + "/api/v4/markdown": + post: + summary: Render an arbitrary Markdown document + description: This feature was introduced in GitLab 11.0. + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4Markdown + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4Markdown" + responses: + '201': + description: Render an arbitrary Markdown document + schema: + "$ref": "#/definitions/API_Entities_Markdown" + '400': + description: Bad request + '401': + description: Unauthorized + tags: + - markdown + operationId: postApiV4Markdown + "/api/v4/merge_requests": + get: + summary: List merge requests + description: Get all merge requests the authenticated user has access to. By + default it returns only merge requests created by the current user. To get + all merge requests, use parameter `scope=all`. + produces: + - application/json + parameters: + - in: query + name: author_id + description: Returns merge requests created by the given user `id`. Mutually + exclusive with `author_username`. Combine with `scope=all` or `scope=assigned_to_me`. + type: integer + format: int32 + required: false + - in: query + name: author_username + description: Returns merge requests created by the given `username`. Mutually + exclusive with `author_id`. + type: string + required: false + - in: query + name: assignee_id + description: Returns merge requests assigned to the given user `id`. `None` + returns unassigned merge requests. `Any` returns merge requests with an + assignee. + type: integer + format: int32 + required: false + - in: query + name: assignee_username + description: Returns merge requests created by the given `username`. Mutually + exclusive with `author_id`. + type: array + items: + type: string + required: false + - in: query + name: reviewer_username + description: Returns merge requests which have the user as a reviewer with + the given `username`. `None` returns merge requests with no reviewers. `Any` + returns merge requests with any reviewer. Mutually exclusive with `reviewer_id`. + Introduced in GitLab 13.8. + type: string + required: false + - in: query + name: labels + description: Returns merge requests matching a comma-separated list of labels. + `None` lists all merge requests with no labels. `Any` lists all merge requests + with at least one label. Predefined names are case-insensitive. + type: array + items: + type: string + required: false + - in: query + name: milestone + description: Returns merge requests for a specific milestone. `None` returns + merge requests with no milestone. `Any` returns merge requests that have + an assigned milestone. + type: string + required: false + - in: query + name: my_reaction_emoji + description: Returns merge requests reacted by the authenticated user by the + given `emoji`. `None` returns issues not given a reaction. `Any` returns + issues given at least one reaction. + type: string + required: false + - in: query + name: reviewer_id + description: Returns merge requests which have the user as a reviewer with + the given user `id`. `None` returns merge requests with no reviewers. `Any` + returns merge requests with any reviewer. Mutually exclusive with `reviewer_username`. + type: integer + format: int32 + required: false + - in: query + name: state + description: Returns `all` merge requests or just those that are `opened`, + `closed`, `locked`, or `merged`. + type: string + default: all + enum: + - opened + - closed + - locked + - merged + - all + required: false + - in: query + name: order_by + description: Returns merge requests ordered by `created_at`, `label_priority`, + `milestone_due`, `popularity`, `priority`, `title`, `updated_at` or `merged_at` + fields. Introduced in GitLab 14.8. + type: string + default: created_at + enum: + - created_at + - label_priority + - milestone_due + - popularity + - priority + - title + - updated_at + - merged_at + required: false + - in: query + name: sort + description: Returns merge requests sorted in `asc` or `desc` order. + type: string + default: desc + enum: + - asc + - desc + required: false + - in: query + name: with_labels_details + description: 'If `true`, response returns more details for each label in labels + field: `:name`,`:color`, `:description`, `:description_html`, `:text_color`' + type: boolean + default: false + required: false + - in: query + name: with_merge_status_recheck + description: If `true`, this projection requests (but does not guarantee) + that the `merge_status` field be recalculated asynchronously. Introduced + in GitLab 13.0. + type: boolean + default: false + required: false + - in: query + name: created_after + description: Returns merge requests created on or after the given time. Expected + in ISO 8601 format. + type: string + format: date-time + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: created_before + description: Returns merge requests created on or before the given time. Expected + in ISO 8601 format. + type: string + format: date-time + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: updated_after + description: Returns merge requests updated on or after the given time. Expected + in ISO 8601 format. + type: string + format: date-time + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: updated_before + description: Returns merge requests updated on or before the given time. Expected + in ISO 8601 format. + type: string + format: date-time + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: view + description: If simple, returns the `iid`, URL, title, description, and basic + state of merge request + type: string + enum: + - simple + required: false + - in: query + name: scope + description: 'Returns merge requests for the given scope: `created_by_me`, + `assigned_to_me` or `all`' + type: string + default: created_by_me + enum: + - created-by-me + - assigned-to-me + - created_by_me + - assigned_to_me + - all + required: false + - in: query + name: source_branch + description: Returns merge requests with the given source branch + type: string + required: false + - in: query + name: source_project_id + description: Returns merge requests with the given source project id + type: integer + format: int32 + required: false + - in: query + name: target_branch + description: Returns merge requests with the given target branch + type: string + required: false + - in: query + name: search + description: Search merge requests against their `title` and `description`. + type: string + required: false + - in: query + name: in + description: Modify the scope of the search attribute. `title`, `description`, + or a string joining them with comma. + type: string + required: false + example: title,description + - in: query + name: wip + description: Filter merge requests against their `wip` status. `yes` to return + only draft merge requests, `no` to return non-draft merge requests. + type: string + enum: + - 'yes' + - 'no' + required: false + - in: query + name: not[author_id] + description: "`` Returns merge requests created by the given user + `id`. Mutually exclusive with `author_username`. Combine with `scope=all` + or `scope=assigned_to_me`." + type: integer + format: int32 + required: false + - in: query + name: not[author_username] + description: "`` Returns merge requests created by the given `username`. + Mutually exclusive with `author_id`." + type: string + required: false + - in: query + name: not[assignee_id] + description: "`` Returns merge requests assigned to the given user + `id`. `None` returns unassigned merge requests. `Any` returns merge requests + with an assignee." + type: integer + format: int32 + required: false + - in: query + name: not[assignee_username] + description: "`` Returns merge requests created by the given `username`. + Mutually exclusive with `author_id`." + type: array + items: + type: string + required: false + - in: query + name: not[reviewer_username] + description: "`` Returns merge requests which have the user as a + reviewer with the given `username`. `None` returns merge requests with no + reviewers. `Any` returns merge requests with any reviewer. Mutually exclusive + with `reviewer_id`. Introduced in GitLab 13.8." + type: string + required: false + - in: query + name: not[labels] + description: "`` Returns merge requests matching a comma-separated + list of labels. `None` lists all merge requests with no labels. `Any` lists + all merge requests with at least one label. Predefined names are case-insensitive." + type: array + items: + type: string + required: false + - in: query + name: not[milestone] + description: "`` Returns merge requests for a specific milestone. + `None` returns merge requests with no milestone. `Any` returns merge requests + that have an assigned milestone." + type: string + required: false + - in: query + name: not[my_reaction_emoji] + description: "`` Returns merge requests reacted by the authenticated + user by the given `emoji`. `None` returns issues not given a reaction. `Any` + returns issues given at least one reaction." + type: string + required: false + - in: query + name: not[reviewer_id] + description: "`` Returns merge requests which have the user as a + reviewer with the given user `id`. `None` returns merge requests with no + reviewers. `Any` returns merge requests with any reviewer. Mutually exclusive + with `reviewer_username`." + type: integer + format: int32 + required: false + - in: query + name: deployed_before + description: Returns merge requests deployed before the given date/time. Expected + in ISO 8601 format. + type: string + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: deployed_after + description: Returns merge requests deployed after the given date/time. Expected + in ISO 8601 format + type: string + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: environment + description: Returns merge requests deployed to the given environment + type: string + required: false + example: '2019-03-15T08:00:00Z' + - in: query + name: approved + description: Filters merge requests by their `approved` status. `yes` returns + only approved merge requests. `no` returns only non-approved merge requests. + type: string + enum: + - 'yes' + - 'no' + required: false + - in: query + name: merge_user_id + description: Returns merge requests which have been merged by the user with + the given user `id`. Mutually exclusive with `merge_user_username`. + type: integer + format: int32 + required: false + - in: query + name: merge_user_username + description: Returns merge requests which have been merged by the user with + the given `username`. Mutually exclusive with `merge_user_id`. + type: string + required: false + - in: query + name: approver_ids + description: Return merge requests which have specified the users with the + given IDs as an individual approver + type: string + required: false + - in: query + name: approved_by_ids + description: Return merge requests which have been approved by the specified + users with the given IDs + type: string + required: false + - in: query + name: approved_by_usernames + description: |- + Return merge requests which have been approved by the specified users with the given + usernames + type: string + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List merge requests + schema: + "$ref": "#/definitions/API_Entities_MergeRequestBasic" + '401': + description: Unauthorized + '422': + description: Unprocessable entity + tags: + - merge_requests + operationId: getApiV4MergeRequests + "/api/v4/namespaces/{id}": + put: + description: "[DEPRECATED] Update a namespace" + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: putApiV4NamespacesId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4NamespacesId" + responses: + '200': + description: "[DEPRECATED] Update a namespace" + schema: + "$ref": "#/definitions/API_Entities_Namespace" + tags: + - namespaces + operationId: putApiV4NamespacesId + get: + summary: Get namespace by ID + description: Get a namespace by ID + produces: + - application/json + parameters: + - in: path + name: id + description: ID or URL-encoded path of the namespace + type: string + required: true + responses: + '200': + description: Get namespace by ID + schema: + "$ref": "#/definitions/API_Entities_Namespace" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - namespaces + operationId: getApiV4NamespacesId + "/api/v4/namespaces/{id}/gitlab_subscription": + get: + description: Returns the subscription for the namespace + produces: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Returns the subscription for the namespace + schema: + "$ref": "#/definitions/API_Entities_GitlabSubscription" + tags: + - namespaces + operationId: getApiV4NamespacesIdGitlabSubscription + "/api/v4/namespaces/{id}/storage/limit_exclusion": + post: + summary: Creates a storage limit exclusion for a Namespace + description: Creates a Namespaces::Storage::LimitExclusion + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: postApiV4NamespacesIdStorageLimitExclusion + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4NamespacesIdStorageLimitExclusion" + responses: + '201': + description: Creates a storage limit exclusion for a Namespace + schema: + "$ref": "#/definitions/API_Entities_Namespaces_Storage_LimitExclusion" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - namespaces + operationId: postApiV4NamespacesIdStorageLimitExclusion + delete: + summary: Removes a storage limit exclusion for a Namespace + description: Removes a Namespaces::Storage::LimitExclusion + produces: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '204': + description: Removes a storage limit exclusion for a Namespace + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '422': + description: Unprocessable entity + tags: + - namespaces + operationId: deleteApiV4NamespacesIdStorageLimitExclusion + "/api/v4/namespaces/storage/limit_exclusions": + get: + summary: Retrieve all limit exclusions + description: Gets all records for namespaces that have been excluded + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Retrieve all limit exclusions + schema: + "$ref": "#/definitions/API_Entities_Namespaces_Storage_LimitExclusion" + '401': + description: Unauthorized + '403': + description: Forbidden + tags: + - namespaces + operationId: getApiV4NamespacesStorageLimitExclusions + "/api/v4/namespaces": + get: + summary: List namespaces + description: Get a list of the namespaces of the authenticated user. If the + user is an administrator, a list of all namespaces in the GitLab instance + is shown. + produces: + - application/json + parameters: + - in: query + name: search + description: Returns a list of namespaces the user is authorized to view based + on the search criteria + type: string + required: false + - in: query + name: owned_only + description: In GitLab 14.2 and later, returns a list of owned namespaces + only + type: boolean + required: false + - in: query + name: top_level_only + description: Only include top level namespaces + type: boolean + default: false + required: false + - in: query + name: full_path_search + description: If `true`, the `search` parameter is matched against the full + path of the namespaces + type: boolean + default: false + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: requested_hosted_plan + description: Name of the hosted plan requested by the customer + type: string + required: false + responses: + '200': + description: List namespaces + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Namespace" + '401': + description: Unauthorized + tags: + - namespaces + operationId: getApiV4Namespaces + "/api/v4/namespaces/{id}/exists": + get: + summary: Get existence of a namespace + description: Get existence of a namespace by path. Suggests a new namespace + path that does not already exist. + produces: + - application/json + parameters: + - in: path + name: id + description: Namespace’s path + type: string + required: true + - in: query + name: parent_id + description: The ID of the parent namespace. If no ID is specified, only top-level + namespaces are considered. + type: integer + format: int32 + required: false + responses: + '200': + description: Get existence of a namespace + schema: + "$ref": "#/definitions/API_Entities_NamespaceExistence" + '401': + description: Unauthorized + tags: + - namespaces + operationId: getApiV4NamespacesIdExists + "/api/v4/organizations": + post: + summary: Create an organization + description: |- + This feature was introduced in GitLab 17.5. \ + This feature is currently in an experimental state. \ + This feature is behind the `allow_organization_creation` feature flag. + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4Organizations + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4Organizations" + responses: + '201': + description: Create an organization + schema: + "$ref": "#/definitions/API_Entities_Organizations_Organization" + tags: + - organizations + operationId: postApiV4Organizations + "/api/v4/pages/domains": + get: + description: Get all pages domains + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get all pages domains + schema: + "$ref": "#/definitions/API_Entities_PagesDomainBasic" + tags: + - pages + operationId: getApiV4PagesDomains + "/api/v4/personal_access_tokens/self": + get: + summary: Get single personal access token + description: Get the details of a personal access token by passing it to the + API in a header + produces: + - application/json + responses: + '200': + description: Get single personal access token + schema: + "$ref": "#/definitions/API_Entities_PersonalAccessTokenWithLastUsedIps" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - personal_access_tokens + operationId: getApiV4PersonalAccessTokensSelf + delete: + summary: Revoke a personal access token + description: Revoke a personal access token by passing it to the API in a header + produces: + - application/json + responses: + '204': + description: Revoke a personal access token + '400': + description: Bad Request + tags: + - personal_access_tokens + operationId: deleteApiV4PersonalAccessTokensSelf + "/api/v4/personal_access_tokens/self/associations": + get: + summary: Return personal access token associations + description: Get groups and projects this personal access token can access by + passing it to the API in a header + produces: + - application/json + parameters: + - in: query + name: min_access_level + description: Limit by minimum access level of authenticated user + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Return personal access token associations + schema: + "$ref": "#/definitions/API_Entities_PersonalAccessToken" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - personal_access_tokens + operationId: getApiV4PersonalAccessTokensSelfAssociations + "/api/v4/personal_access_tokens/self/rotate": + post: + summary: Rotate a personal access token + description: Rotates a personal access token by passing it to the API in a header + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4PersonalAccessTokensSelfRotate + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4PersonalAccessTokensSelfRotate" + responses: + '200': + description: Rotate a personal access token + schema: + "$ref": "#/definitions/API_Entities_PersonalAccessTokenWithToken" + '400': + description: Bad Request + '401': + description: Unauthorized + '403': + description: Forbidden + '405': + description: Method not allowed + tags: + - personal_access_tokens + operationId: postApiV4PersonalAccessTokensSelfRotate + "/api/v4/personal_access_tokens": + get: + summary: List personal access tokens + description: Get all personal access tokens the authenticated user has access + to. + produces: + - application/json + parameters: + - in: query + name: user_id + description: Filter PATs by User ID + type: integer + format: int32 + required: false + example: 2 + - in: query + name: revoked + description: Filter tokens where revoked state matches parameter + type: boolean + required: false + - in: query + name: state + description: Filter tokens which are either active or not + type: string + enum: + - active + - inactive + required: false + example: active + - in: query + name: created_before + description: Filter tokens which were created before given datetime + type: string + format: date-time + required: false + example: '2022-01-01' + - in: query + name: created_after + description: Filter tokens which were created after given datetime + type: string + format: date-time + required: false + example: '2021-01-01' + - in: query + name: last_used_before + description: Filter tokens which were used before given datetime + type: string + format: date-time + required: false + example: '2021-01-01' + - in: query + name: last_used_after + description: Filter tokens which were used after given datetime + type: string + format: date-time + required: false + example: '2022-01-01' + - in: query + name: expires_before + description: Filter tokens which expire before given datetime + type: string + format: date + required: false + example: '2022-01-01' + - in: query + name: expires_after + description: Filter tokens which expire after given datetime + type: string + format: date + required: false + example: '2021-01-01' + - in: query + name: search + description: Filters tokens by name + type: string + required: false + example: token + - in: query + name: sort + description: Sort tokens + type: string + required: false + example: created_at_desc + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List personal access tokens + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_PersonalAccessTokenWithLastUsedIps" + '401': + description: Unauthorized + tags: + - personal_access_tokens + operationId: getApiV4PersonalAccessTokens + "/api/v4/personal_access_tokens/{id}": + get: + summary: Get single personal access token + description: Get a personal access token by using the ID of the personal access + token. + produces: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get single personal access token + schema: + "$ref": "#/definitions/API_Entities_PersonalAccessTokenWithLastUsedIps" + '401': + description: Unauthorized + '404': + description: Not found + tags: + - personal_access_tokens + operationId: getApiV4PersonalAccessTokensId + delete: + summary: Revoke a personal access token + description: Revoke a personal access token by using the ID of the personal + access token. + produces: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '204': + description: Revoke a personal access token + '400': + description: Bad Request + tags: + - personal_access_tokens + operationId: deleteApiV4PersonalAccessTokensId + "/api/v4/personal_access_tokens/{id}/rotate": + post: + summary: Rotate personal access token + description: Rotates a personal access token. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + type: integer + format: int32 + required: true + - name: postApiV4PersonalAccessTokensIdRotate + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4PersonalAccessTokensIdRotate" + responses: + '201': + description: Rotate personal access token + schema: + "$ref": "#/definitions/API_Entities_PersonalAccessTokenWithToken" + tags: + - personal_access_tokens + operationId: postApiV4PersonalAccessTokensIdRotate + "/api/v4/snippets": + get: + summary: Get a snippets list for an authenticated user + description: This feature was introduced in GitLab 8.15. + produces: + - application/json + parameters: + - in: query + name: created_after + description: Return snippets created after the specified time + type: string + format: date-time + required: false + - in: query + name: created_before + description: Return snippets created before the specified time + type: string + format: date-time + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get a snippets list for an authenticated user + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Snippet" + '404': + description: Not found + tags: + - snippets + operationId: getApiV4Snippets + post: + summary: Create new snippet + description: This feature was introduced in GitLab 8.15. + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4Snippets + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4Snippets" + responses: + '201': + description: Create new snippet + schema: + "$ref": "#/definitions/API_Entities_PersonalSnippet" + '400': + description: Validation error + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - snippets + operationId: postApiV4Snippets + "/api/v4/snippets/public": + get: + summary: List all public personal snippets current_user has access to + description: This feature was introduced in GitLab 8.15. + produces: + - application/json + parameters: + - in: query + name: created_after + description: Return snippets created after the specified time + type: string + format: date-time + required: false + - in: query + name: created_before + description: Return snippets created before the specified time + type: string + format: date-time + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List all public personal snippets current_user has access to + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_PersonalSnippet" + '404': + description: Not found + tags: + - snippets + operationId: getApiV4SnippetsPublic + "/api/v4/snippets/all": + get: + summary: List all snippets current_user has access to + description: This feature was introduced in GitLab 16.3. + produces: + - application/json + parameters: + - in: query + name: created_after + description: Return snippets created after the specified time + type: string + format: date-time + required: false + - in: query + name: created_before + description: Return snippets created before the specified time + type: string + format: date-time + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: repository_storage + description: Filter by repository storage used by the snippet + type: string + required: false + responses: + '200': + description: List all snippets current_user has access to + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Snippet" + '404': + description: Not found + tags: + - snippets + operationId: getApiV4SnippetsAll + "/api/v4/snippets/{id}": + get: + summary: Get a single snippet + description: This feature was introduced in GitLab 8.15. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a snippet + type: integer + format: int32 + required: true + responses: + '200': + description: Get a single snippet + schema: + "$ref": "#/definitions/API_Entities_PersonalSnippet" + '404': + description: Not found + tags: + - snippets + operationId: getApiV4SnippetsId + put: + summary: Update an existing snippet + description: This feature was introduced in GitLab 8.15. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of a snippet + type: integer + format: int32 + required: true + - name: putApiV4SnippetsId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4SnippetsId" + responses: + '200': + description: Update an existing snippet + schema: + "$ref": "#/definitions/API_Entities_PersonalSnippet" + '400': + description: Validation error + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - snippets + operationId: putApiV4SnippetsId + delete: + summary: Remove snippet + description: This feature was introduced in GitLab 8.15. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a snippet + type: integer + format: int32 + required: true + responses: + '400': + description: Validation error + '204': + description: Remove snippet + schema: + "$ref": "#/definitions/API_Entities_PersonalSnippet" + '404': + description: Not found + tags: + - snippets + operationId: deleteApiV4SnippetsId + "/api/v4/snippets/{id}/raw": + get: + summary: Get a raw snippet + description: This feature was introduced in GitLab 8.15. + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a snippet + type: integer + format: int32 + required: true + responses: + '200': + description: Get a raw snippet + '404': + description: Not found + tags: + - snippets + operationId: getApiV4SnippetsIdRaw + "/api/v4/snippets/{id}/files/{ref}/{file_path}/raw": + get: + description: Get raw snippet file contents from the repository + produces: + - application/json + parameters: + - in: path + name: file_path + description: The url encoded path to the file, e.g. lib%2Fclass%2Erb + type: string + required: true + - in: path + name: ref + description: The name of branch, tag or commit + type: string + required: true + - in: path + name: id + type: integer + format: int32 + required: true + responses: + '200': + description: Get raw snippet file contents from the repository + '404': + description: Not found + tags: + - snippets + operationId: getApiV4SnippetsIdFilesRefFilePathRaw + "/api/v4/snippets/{id}/user_agent_detail": + get: + description: Get the user agent details for a snippet + produces: + - application/json + parameters: + - in: path + name: id + description: The ID of a snippet + type: integer + format: int32 + required: true + responses: + '200': + description: Get the user agent details for a snippet + schema: + "$ref": "#/definitions/API_Entities_UserAgentDetail" + '404': + description: Not found + tags: + - snippets + operationId: getApiV4SnippetsIdUserAgentDetail + "/api/v4/suggestions/{id}/apply": + put: + description: Apply suggestion patch in the Merge Request it was created + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: The ID of the suggestion + type: integer + format: int32 + required: true + - name: putApiV4SuggestionsIdApply + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4SuggestionsIdApply" + responses: + '200': + description: Apply suggestion patch in the Merge Request it was created + schema: + "$ref": "#/definitions/API_Entities_Suggestion" + tags: + - suggestions + operationId: putApiV4SuggestionsIdApply + "/api/v4/suggestions/batch_apply": + put: + description: Apply multiple suggestion patches in the Merge Request where they + were created + produces: + - application/json + consumes: + - application/json + parameters: + - name: putApiV4SuggestionsBatchApply + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4SuggestionsBatchApply" + responses: + '200': + description: Apply multiple suggestion patches in the Merge Request where + they were created + schema: + "$ref": "#/definitions/API_Entities_Suggestion" + tags: + - suggestions + operationId: putApiV4SuggestionsBatchApply + "/api/v4/hooks/{hook_id}/url_variables/{key}": + put: + description: Set a url variable + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: hook_id + description: The ID of the hook + type: integer + format: int32 + required: true + - in: path + name: key + description: The key of the variable + type: string + required: true + - name: putApiV4HooksHookIdUrlVariablesKey + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4HooksHookIdUrlVariablesKey" + responses: + '200': + description: Set a url variable + tags: + - hooks + operationId: putApiV4HooksHookIdUrlVariablesKey + delete: + description: Un-Set a url variable + produces: + - application/json + parameters: + - in: path + name: hook_id + description: The ID of the hook + type: integer + format: int32 + required: true + - in: path + name: key + description: The key of the variable + type: string + required: true + responses: + '204': + description: Un-Set a url variable + tags: + - hooks + operationId: deleteApiV4HooksHookIdUrlVariablesKey + "/api/v4/hooks/{hook_id}/custom_headers/{key}": + put: + description: Set a custom header + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: hook_id + description: The ID of the hook + type: integer + format: int32 + required: true + - in: path + name: key + description: The key of the custom header + type: string + required: true + - name: putApiV4HooksHookIdCustomHeadersKey + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4HooksHookIdCustomHeadersKey" + responses: + '200': + description: Set a custom header + tags: + - hooks + operationId: putApiV4HooksHookIdCustomHeadersKey + delete: + description: Un-Set a custom header + produces: + - application/json + parameters: + - in: path + name: hook_id + description: The ID of the hook + type: integer + format: int32 + required: true + - in: path + name: key + description: The key of the custom header + type: string + required: true + responses: + '204': + description: Un-Set a custom header + tags: + - hooks + operationId: deleteApiV4HooksHookIdCustomHeadersKey + "/api/v4/hooks": + get: + summary: List system hooks + description: Get a list of all system hooks + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: List system hooks + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_Hook" + tags: + - system_hooks + operationId: getApiV4Hooks + post: + summary: Add new system hook + description: Add a new system hook + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4Hooks + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4Hooks" + responses: + '201': + description: Add new system hook + schema: + "$ref": "#/definitions/API_Entities_Hook" + '400': + description: Validation error + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - system_hooks + operationId: postApiV4Hooks + "/api/v4/hooks/{hook_id}": + get: + summary: Get system hook + description: Get a system hook by its ID. Introduced in GitLab 14.9. + produces: + - application/json + parameters: + - in: path + name: hook_id + description: The ID of the system hook + type: integer + format: int32 + required: true + responses: + '200': + description: Get system hook + schema: + "$ref": "#/definitions/API_Entities_Hook" + '404': + description: Not found + tags: + - system_hooks + operationId: getApiV4HooksHookId + put: + summary: Edit system hook + description: Edits a system hook + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: hook_id + description: The ID of the system hook + type: integer + format: int32 + required: true + - name: putApiV4HooksHookId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4HooksHookId" + responses: + '200': + description: Edit system hook + schema: + "$ref": "#/definitions/API_Entities_Hook" + '400': + description: Validation error + '404': + description: Not found + '422': + description: Unprocessable entity + tags: + - system_hooks + operationId: putApiV4HooksHookId + post: + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: hook_id + description: The ID of the hook + type: integer + format: int32 + required: true + responses: + '201': + description: created Hook + tags: + - hooks + operationId: postApiV4HooksHookId + delete: + summary: Delete system hook + description: Deletes a system hook + produces: + - application/json + parameters: + - in: path + name: hook_id + description: The ID of the system hook + type: integer + format: int32 + required: true + responses: + '404': + description: Not found + '204': + description: Delete system hook + schema: + "$ref": "#/definitions/API_Entities_Hook" + tags: + - system_hooks + operationId: deleteApiV4HooksHookId + "/api/v4/feature_flags/unleash/{project_id}": + get: + produces: + - application/json + parameters: + - in: path + name: project_id + description: The ID of a project + type: string + required: true + - in: query + name: instance_id + description: The instance ID of Unleash Client + type: string + required: false + - in: query + name: app_name + description: The application name of Unleash Client + type: string + required: false + responses: + '200': + description: get Unleash(s) + tags: + - feature_flags + operationId: getApiV4FeatureFlagsUnleashProjectId + "/api/v4/feature_flags/unleash/{project_id}/features": + get: + description: Get a list of features (deprecated, v2 client support) + produces: + - application/json + parameters: + - in: path + name: project_id + description: The ID of a project + type: string + required: true + - in: query + name: instance_id + description: The instance ID of Unleash Client + type: string + required: false + - in: query + name: app_name + description: The application name of Unleash Client + type: string + required: false + responses: + '200': + description: Get a list of features (deprecated, v2 client support) + tags: + - unleash_api + operationId: getApiV4FeatureFlagsUnleashProjectIdFeatures + "/api/v4/feature_flags/unleash/{project_id}/client/features": + get: + description: Get a list of features + produces: + - application/json + parameters: + - in: path + name: project_id + description: The ID of a project + type: string + required: true + - in: query + name: instance_id + description: The instance ID of Unleash Client + type: string + required: false + - in: query + name: app_name + description: The application name of Unleash Client + type: string + required: false + responses: + '200': + description: Get a list of features + tags: + - unleash_api + operationId: getApiV4FeatureFlagsUnleashProjectIdClientFeatures + "/api/v4/feature_flags/unleash/{project_id}/client/register": + post: + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: project_id + description: The ID of a project + type: string + required: true + - name: postApiV4FeatureFlagsUnleashProjectIdClientRegister + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4FeatureFlagsUnleashProjectIdClientRegister" + responses: + '201': + description: created Register + tags: + - feature_flags + operationId: postApiV4FeatureFlagsUnleashProjectIdClientRegister + "/api/v4/feature_flags/unleash/{project_id}/client/metrics": + post: + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: project_id + description: The ID of a project + type: string + required: true + - name: postApiV4FeatureFlagsUnleashProjectIdClientMetrics + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4FeatureFlagsUnleashProjectIdClientMetrics" + responses: + '201': + description: created Metric + tags: + - feature_flags + operationId: postApiV4FeatureFlagsUnleashProjectIdClientMetrics + "/api/v4/usage_data/increment_counter": + post: + summary: Track usage data event + description: This feature was introduced in GitLab 13.4. + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4UsageDataIncrementCounter + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4UsageDataIncrementCounter" + responses: + '200': + description: Track usage data event + '401': + description: Unauthorized + '404': + description: Not found + tags: + - usage_data + operationId: postApiV4UsageDataIncrementCounter + "/api/v4/usage_data/increment_unique_users": + post: + description: Track usage data event for the current user + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4UsageDataIncrementUniqueUsers + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4UsageDataIncrementUniqueUsers" + responses: + '200': + description: Track usage data event for the current user + '401': + description: Unauthorized + '404': + description: Not found + tags: + - usage_data + operationId: postApiV4UsageDataIncrementUniqueUsers + "/api/v4/usage_data/track_events": + post: + summary: Track multiple gitlab internal events + description: This feature was introduced in GitLab 17.3. + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4UsageDataTrackEvents + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4UsageDataTrackEvents" + responses: + '200': + description: Track multiple gitlab internal events + '400': + description: Validation error + '401': + description: Unauthorized + tags: + - usage_data + operationId: postApiV4UsageDataTrackEvents + "/api/v4/usage_data/metric_definitions": + get: + summary: Get a list of all metric definitions + description: This feature was introduced in GitLab 13.11. + produces: + - application/yaml + parameters: + - in: query + name: include_paths + description: Include file paths in the metric definitions + type: boolean + default: false + required: false + example: true + responses: + '200': + description: Get a list of all metric definitions + '401': + description: Unauthorized + '404': + description: Not found + tags: + - usage_data + - metrics + operationId: getApiV4UsageDataMetricDefinitions + "/api/v4/usage_data/service_ping": + get: + summary: Get the latest ServicePing payload + description: Introduces in Gitlab 16.9. Requires personal access token with + read_service_ping scope. + produces: + - application/json + responses: + '200': + description: Get the latest ServicePing payload + '401': + description: 401 Unauthorized + '403': + description: Forbidden + '404': + description: Not found + tags: + - usage_data + operationId: getApiV4UsageDataServicePing + "/api/v4/usage_data/track_event": + post: + summary: Track gitlab internal events + description: This feature was introduced in GitLab 16.2. + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4UsageDataTrackEvent + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4UsageDataTrackEvent" + responses: + '200': + description: Track gitlab internal events + '401': + description: Unauthorized + '404': + description: Not found + tags: + - usage_data + operationId: postApiV4UsageDataTrackEvent + "/api/v4/usage_data/non_sql_metrics": + get: + summary: Get Non SQL usage ping metrics + description: This feature was introduced in GitLab 13.11. + produces: + - application/json + responses: + '200': + description: Get Non SQL usage ping metrics + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - usage_data + operationId: getApiV4UsageDataNonSqlMetrics + "/api/v4/usage_data/queries": + get: + summary: Get raw SQL queries for usage data SQL metrics + description: This feature was introduced in GitLab 13.11. + produces: + - application/json + responses: + '200': + description: Get raw SQL queries for usage data SQL metrics + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not Found + tags: + - usage_data + operationId: getApiV4UsageDataQueries + "/api/v4/user_counts": + get: + summary: Return the user specific counts + description: Assigned open issues, assigned MRs and pending todos count + produces: + - application/json + responses: + '200': + description: Return the user specific counts + schema: + "$ref": "#/definitions/API_Entities_UserCounts" + tags: + - user_counts + operationId: getApiV4UserCounts + "/api/v4/user/runners": + post: + summary: Create a runner owned by currently authenticated user + description: Create a new runner + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4UserRunners + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4UserRunners" + responses: + '201': + description: Create a runner owned by currently authenticated user + schema: + "$ref": "#/definitions/API_Entities_Ci_RunnerRegistrationDetails" + '400': + description: Bad Request + '403': + description: Forbidden + tags: + - user + - runners + operationId: postApiV4UserRunners + "/api/v4/application/plan_limits": + get: + summary: Get current plan limits + description: List the current limits of a plan on the GitLab instance. + produces: + - application/json + parameters: + - in: query + name: plan_name + description: 'Name of the plan to get the limits from. Default: default.' + type: string + default: default + enum: + - default + - free + - bronze + - silver + - premium + - gold + - ultimate + - ultimate_trial + - ultimate_trial_paid_customer + - premium_trial + - opensource + required: false + responses: + '200': + description: Get current plan limits + schema: + "$ref": "#/definitions/API_Entities_PlanLimit" + '401': + description: Unauthorized + '403': + description: Forbidden + tags: + - plan_limits + operationId: getApiV4ApplicationPlanLimits + put: + summary: Change plan limits + description: Modify the limits of a plan on the GitLab instance. + produces: + - application/json + consumes: + - application/json + parameters: + - name: putApiV4ApplicationPlanLimits + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4ApplicationPlanLimits" + responses: + '200': + description: Change plan limits + schema: + "$ref": "#/definitions/API_Entities_PlanLimit" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + tags: + - plan_limits + operationId: putApiV4ApplicationPlanLimits + "/api/v4/application/appearance": + get: + description: Get the current appearance + produces: + - application/json + responses: + '200': + description: Get the current appearance + schema: + "$ref": "#/definitions/API_Entities_Appearance" + tags: + - application + operationId: getApiV4ApplicationAppearance + put: + description: Modify appearance + produces: + - application/json + consumes: + - multipart/form-data + parameters: + - in: formData + name: title + description: Instance title on the sign in / sign up page + type: string + required: false + - in: formData + name: description + description: Markdown text shown on the sign in / sign up page + type: string + required: false + - in: formData + name: pwa_name + description: Name of the Progressive Web App + type: string + required: false + - in: formData + name: pwa_short_name + description: Optional, short name for Progressive Web App + type: string + required: false + - in: formData + name: pwa_description + description: An explanation of what the Progressive Web App does + type: string + required: false + - in: formData + name: logo + description: Instance image used on the sign in / sign up page + type: file + required: false + - in: formData + name: pwa_icon + description: Icon used for Progressive Web App + type: file + required: false + - in: formData + name: header_logo + description: Instance image used for the main navigation bar + type: file + required: false + - in: formData + name: favicon + description: Instance favicon in .ico/.png format + type: file + required: false + - in: formData + name: member_guidelines + description: Markdown text shown on the members page of a group or project + type: string + required: false + - in: formData + name: new_project_guidelines + description: Markdown text shown on the new project page + type: string + required: false + - in: formData + name: profile_image_guidelines + description: Markdown text shown on the profile page below Public Avatar + type: string + required: false + - in: formData + name: header_message + description: Message within the system header bar + type: string + required: false + - in: formData + name: footer_message + description: Message within the system footer bar + type: string + required: false + - in: formData + name: message_background_color + description: Background color for the system header / footer bar + type: string + required: false + - in: formData + name: message_font_color + description: Font color for the system header / footer bar + type: string + required: false + - in: formData + name: email_header_and_footer_enabled + description: Add header and footer to all outgoing emails if enabled + type: boolean + required: false + responses: + '200': + description: Modify appearance + schema: + "$ref": "#/definitions/API_Entities_Appearance" + tags: + - application + operationId: putApiV4ApplicationAppearance + "/api/v4/application/statistics": + get: + description: Get the current application statistics + produces: + - application/json + responses: + '200': + description: Get the current application statistics + schema: + "$ref": "#/definitions/API_Entities_ApplicationStatistics" + tags: + - application + operationId: getApiV4ApplicationStatistics + "/api/v4/discover-cert-based-clusters": + get: + summary: Discover all descendant certificate-based clusters in a group + description: This feature was introduced in GitLab 17.9. It will be removed + in 18.0. + produces: + - application/json + parameters: + - in: query + name: group_id + description: The group ID to find all certificate-based clusters in the hierarchy + type: integer + format: int32 + required: true + responses: + '200': + description: Discover all descendant certificate-based clusters in a group + schema: + "$ref": "#/definitions/API_Entities_DiscoveredClusters" + '403': + description: Forbidden + tags: + - clusters + operationId: getApiV4DiscoverCertBasedClusters + "/api/v4/deploy_keys": + get: + summary: List all deploy keys + description: Get a list of all deploy keys across all projects of the GitLab + instance. This endpoint requires administrator access and is not available + on GitLab.com. + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: public + description: Only return deploy keys that are public + type: boolean + default: false + required: false + responses: + '200': + description: List all deploy keys + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_DeployKey" + '401': + description: Unauthorized + '403': + description: Forbidden + tags: + - deploy_keys + operationId: getApiV4DeployKeys + post: + summary: Create a deploy key + description: Create a deploy key for the GitLab instance. This endpoint requires + administrator access. + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4DeployKeys + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4DeployKeys" + responses: + '201': + description: Create a deploy key + schema: + "$ref": "#/definitions/API_Entities_DeployKey" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + tags: + - deploy_keys + operationId: postApiV4DeployKeys + "/api/v4/deploy_tokens": + get: + summary: List all deploy tokens + description: Get a list of all deploy tokens across the GitLab instance. This + endpoint requires administrator access. This feature was introduced in GitLab + 12.9. + produces: + - application/json + parameters: + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + - in: query + name: active + description: Limit by active status + type: boolean + required: false + responses: + '200': + description: List all deploy tokens + schema: + type: array + items: + "$ref": "#/definitions/API_Entities_DeployToken" + '401': + description: Unauthorized + '403': + description: Forbidden + tags: + - deploy_tokens + operationId: getApiV4DeployTokens + "/api/v4/import/bitbucket": + post: + summary: Import a BitBucket Cloud repository + description: This feature was introduced in GitLab 17.0. + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4ImportBitbucket + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ImportBitbucket" + responses: + '201': + description: Import a BitBucket Cloud repository + schema: + "$ref": "#/definitions/ProjectImportEntity" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '422': + description: Unprocessable entity + '503': + description: Service unavailable + tags: + - project_import_bitbucket + operationId: postApiV4ImportBitbucket + "/api/v4/import/bitbucket_server": + post: + summary: Import a BitBucket Server repository + description: This feature was introduced in GitLab 13.2. + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4ImportBitbucketServer + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ImportBitbucketServer" + responses: + '201': + description: Import a BitBucket Server repository + schema: + "$ref": "#/definitions/ProjectEntity" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '422': + description: Unprocessable entity + '503': + description: Service unavailable + tags: + - project_import_bitbucket + operationId: postApiV4ImportBitbucketServer + "/api/v4/import/github": + post: + summary: Import a GitHub project + description: This feature was introduced in GitLab 11.3.4. + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4ImportGithub + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ImportGithub" + responses: + '201': + description: Import a GitHub project + schema: + "$ref": "#/definitions/ProjectEntity" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '422': + description: Unprocessable entity + '503': + description: Service unavailable + tags: + - project_import_github + operationId: postApiV4ImportGithub + "/api/v4/import/github/cancel": + post: + summary: Cancel GitHub project import + description: This feature was introduced in GitLab 15.5 + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4ImportGithubCancel + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ImportGithubCancel" + responses: + '200': + description: Cancel GitHub project import + schema: + "$ref": "#/definitions/ProjectImportEntity" + '400': + description: Bad request + '401': + description: Unauthorized + '403': + description: Forbidden + '404': + description: Not found + '503': + description: Service unavailable + tags: + - project_import_github + operationId: postApiV4ImportGithubCancel + "/api/v4/import/github/gists": + post: + summary: Import User Gists + description: This feature was introduced in GitLab 15.8 + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4ImportGithubGists + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4ImportGithubGists" + responses: + '202': + description: Import User Gists + '401': + description: Unauthorized + '422': + description: Unprocessable Entity + '429': + description: Too Many Requests + tags: + - import + operationId: postApiV4ImportGithubGists + "/api/v4/slack/trigger": + post: + summary: Trigger a global slack command + description: Added in GitLab 9.4 + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4SlackTrigger + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4SlackTrigger" + responses: + '201': + description: Trigger a global slack command + '401': + description: Unauthorized + tags: + - slack + operationId: postApiV4SlackTrigger + "/api/v4/metadata": + get: + summary: Retrieve metadata information for this GitLab instance + description: This feature was introduced in GitLab 15.2. + produces: + - application/json + responses: + '200': + description: Retrieve metadata information for this GitLab instance + schema: + "$ref": "#/definitions/API_Entities_Metadata" + '401': + description: Unauthorized + tags: + - metadata + operationId: getApiV4Metadata + "/api/v4/version": + get: + summary: Retrieves version information for the GitLab instance + description: This feature was introduced in GitLab 8.13 and deprecated in 15.5. + We recommend you instead use the Metadata API. + produces: + - application/json + responses: + '200': + description: Retrieves version information for the GitLab instance + schema: + "$ref": "#/definitions/API_Entities_Metadata" + '401': + description: Unauthorized + tags: + - metadata + operationId: getApiV4Version + "/api/v4/topics": + get: + summary: Get topics + description: This feature was introduced in GitLab 14.5. + produces: + - application/json + parameters: + - in: query + name: search + description: Return list of topics matching the search criteria + type: string + required: false + example: search + - in: query + name: without_projects + description: Return list of topics without assigned projects + type: boolean + required: false + - in: query + name: organization_id + description: The organization id for the topics + type: integer + format: int32 + default: {} + required: false + - in: query + name: page + description: Current page number + type: integer + format: int32 + default: 1 + required: false + example: 1 + - in: query + name: per_page + description: Number of items per page + type: integer + format: int32 + default: 20 + required: false + example: 20 + responses: + '200': + description: Get topics + schema: + "$ref": "#/definitions/API_Entities_Projects_Topic" + tags: + - topics + operationId: getApiV4Topics + post: + summary: Create a topic + description: This feature was introduced in GitLab 14.5. + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4Topics + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4Topics" + responses: + '201': + description: Create a topic + schema: + "$ref": "#/definitions/API_Entities_Projects_Topic" + tags: + - topics + operationId: postApiV4Topics + "/api/v4/topics/{id}": + get: + summary: Get topic + description: This feature was introduced in GitLab 14.5. + produces: + - application/json + parameters: + - in: path + name: id + description: ID of project topic + type: integer + format: int32 + required: true + responses: + '200': + description: Get topic + schema: + "$ref": "#/definitions/API_Entities_Projects_Topic" + tags: + - topics + operationId: getApiV4TopicsId + put: + summary: Update a topic + description: This feature was introduced in GitLab 14.5. + produces: + - application/json + consumes: + - application/json + parameters: + - in: path + name: id + description: ID of project topic + type: integer + format: int32 + required: true + - name: putApiV4TopicsId + in: body + required: true + schema: + "$ref": "#/definitions/putApiV4TopicsId" + responses: + '200': + description: Update a topic + schema: + "$ref": "#/definitions/API_Entities_Projects_Topic" + tags: + - topics + operationId: putApiV4TopicsId + delete: + summary: Delete a topic + description: This feature was introduced in GitLab 14.9. + produces: + - application/json + parameters: + - in: path + name: id + description: ID of project topic + type: integer + format: int32 + required: true + responses: + '204': + description: Delete a topic + tags: + - topics + operationId: deleteApiV4TopicsId + "/api/v4/topics/merge": + post: + summary: Merge topics + description: This feature was introduced in GitLab 15.4. + produces: + - application/json + consumes: + - application/json + parameters: + - name: postApiV4TopicsMerge + in: body + required: true + schema: + "$ref": "#/definitions/postApiV4TopicsMerge" + responses: + '201': + description: Merge topics + schema: + "$ref": "#/definitions/API_Entities_Projects_Topic" + tags: + - topics + operationId: postApiV4TopicsMerge + "/api/v4/web_commits/public_key": + get: + summary: Get the public key for web commits + description: This feature was introduced in GitLab 17.4. + produces: + - application/json + responses: + '200': + description: Get the public key for web commits + '503': + description: The git server, Gitaly, is not available at this time. Please + contact your administrator. + '404': + description: Public key not found. + tags: + - web_commits + operationId: getApiV4WebCommitsPublicKey +definitions: + API_Entities_AccessRequester: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + username: + type: string + example: admin + public_email: + type: string + example: john@example.com + name: + type: string + example: Administrator + state: + type: string + example: active + locked: + type: boolean + avatar_url: + type: string + example: https://gravatar.com/avatar/1 + avatar_path: + type: string + example: "/user/avatar/28/The-Big-Lebowski-400-400.png" + custom_attributes: + type: array + items: + "$ref": "#/definitions/API_Entities_CustomAttribute" + web_url: + type: string + example: https://gitlab.example.com/root + requested_at: + type: string + description: API_Entities_AccessRequester model + API_Entities_CustomAttribute: + type: object + properties: + key: + type: string + example: foo + value: + type: string + example: bar + description: API_Entities_CustomAttribute model + putApiV4GroupsIdAccessRequestsUserIdApprove: + type: object + properties: + access_level: + type: integer + format: int32 + description: 'A valid access level (defaults: `30`, the Developer role)' + default: 30 + description: Approves an access request for the given user. + API_Entities_AwardEmoji: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + name: + type: string + example: lizard + user: + "$ref": "#/definitions/API_Entities_UserBasic" + created_at: + type: string + format: date-time + example: '2019-01-10T13:39:08Z' + updated_at: + type: string + format: date-time + example: '2020-06-28T10:52:04Z' + awardable_id: + type: integer + format: int32 + example: 42 + awardable_type: + type: string + example: Issue + url: + type: string + example: https://example.com/emojis/example.gif + description: API_Entities_AwardEmoji model + API_Entities_UserBasic: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + username: + type: string + example: admin + public_email: + type: string + example: john@example.com + name: + type: string + example: Administrator + state: + type: string + example: active + locked: + type: boolean + avatar_url: + type: string + example: https://gravatar.com/avatar/1 + avatar_path: + type: string + example: "/user/avatar/28/The-Big-Lebowski-400-400.png" + custom_attributes: + type: array + items: + "$ref": "#/definitions/API_Entities_CustomAttribute" + web_url: + type: string + example: https://gitlab.example.com/root + description: API_Entities_UserBasic model + postApiV4GroupsIdEpicsEpicIidAwardEmoji: + type: object + properties: + name: + type: string + description: Name of the emoji without colons. + required: + - name + description: Add a new emoji reaction + postApiV4GroupsIdEpicsEpicIidNotesNoteIdAwardEmoji: + type: object + properties: + name: + type: string + description: Name of the emoji without colons. + required: + - name + description: Add a new emoji reaction + API_Entities_Badge: + type: object + properties: + name: + type: string + link_url: + type: string + image_url: + type: string + rendered_link_url: + type: string + rendered_image_url: + type: string + id: + type: string + kind: + type: string + description: API_Entities_Badge model + API_Entities_BasicBadgeDetails: + type: object + properties: + name: + type: string + link_url: + type: string + image_url: + type: string + rendered_link_url: + type: string + rendered_image_url: + type: string + description: API_Entities_BasicBadgeDetails model + postApiV4GroupsIdBadges: + type: object + properties: + link_url: + type: string + description: URL of the badge link + image_url: + type: string + description: URL of the badge image + name: + type: string + description: Name for the badge + required: + - link_url + - image_url + description: Adds a badge to a group. + putApiV4GroupsIdBadgesBadgeId: + type: object + properties: + link_url: + type: string + description: URL of the badge link + image_url: + type: string + description: URL of the badge image + name: + type: string + description: Name for the badge + description: Updates a badge of a group. + putApiV4GroupsIdCustomAttributesKey: + type: object + properties: + value: + type: string + description: The value of the custom attribute + required: + - value + description: Set a custom attribute on a group + API_Entities_Group: + type: object + properties: + id: + type: string + web_url: + type: string + name: + type: string + path: + type: string + description: + type: string + visibility: + type: string + share_with_group_lock: + type: string + require_two_factor_authentication: + type: string + two_factor_grace_period: + type: string + project_creation_level: + type: string + auto_devops_enabled: + type: string + subgroup_creation_level: + type: string + emails_disabled: + type: boolean + emails_enabled: + type: boolean + mentions_disabled: + type: string + lfs_enabled: + type: string + archived: + type: boolean + math_rendering_limits_enabled: + type: boolean + lock_math_rendering_limits_enabled: + type: boolean + default_branch: + type: string + default_branch_protection: + type: string + default_branch_protection_defaults: + type: string + avatar_url: + type: string + request_access_enabled: + type: string + full_name: + type: string + full_path: + type: string + created_at: + type: string + parent_id: + type: string + organization_id: + type: string + shared_runners_setting: + type: string + max_artifacts_size: + type: integer + format: int32 + custom_attributes: + "$ref": "#/definitions/API_Entities_CustomAttribute" + statistics: + type: object + properties: + storage_size: + type: string + repository_size: + type: string + wiki_size: + type: string + lfs_objects_size: + type: string + job_artifacts_size: + type: string + pipeline_artifacts_size: + type: string + packages_size: + type: string + snippets_size: + type: string + uploads_size: + type: string + marked_for_deletion_on: + type: string + root_storage_statistics: + "$ref": "#/definitions/API_Entities_Namespace_RootStorageStatistics" + ldap_cn: + type: string + ldap_access: + type: string + ldap_group_links: + "$ref": "#/definitions/EE_API_Entities_LdapGroupLink" + saml_group_links: + "$ref": "#/definitions/EE_API_Entities_SamlGroupLink" + file_template_project_id: + type: string + wiki_access_level: + type: string + repository_storage: + type: string + duo_core_features_enabled: + type: boolean + description: "[Experimental] Indicates whether GitLab Duo Core features are + enabled for the group" + duo_features_enabled: + type: string + lock_duo_features_enabled: + type: string + web_based_commit_signing_enabled: + type: string + description: API_Entities_Group model + API_Entities_Namespace_RootStorageStatistics: + type: object + properties: + build_artifacts_size: + type: integer + format: int32 + description: CI artifacts size in bytes. + container_registry_size: + type: integer + format: int32 + description: container registry size in bytes. + container_registry_size_is_estimated: + type: boolean + description: Indicates whether the deduplicated container registry size for + the namespace is an estimated value or not. + dependency_proxy_size: + type: integer + format: int32 + description: Dependency Proxy sizes in bytes. + lfs_objects_size: + type: integer + format: int32 + description: LFS objects size in bytes. + packages_size: + type: integer + format: int32 + description: Packages size in bytes. + pipeline_artifacts_size: + type: integer + format: int32 + description: CI pipeline artifacts size in bytes. + repository_size: + type: integer + format: int32 + description: Git repository size in bytes. + snippets_size: + type: integer + format: int32 + description: Snippets size in bytes. + storage_size: + type: integer + format: int32 + description: Total storage in bytes. + uploads_size: + type: integer + format: int32 + description: Uploads size in bytes. + wiki_size: + type: integer + format: int32 + description: Wiki size in bytes. + EE_API_Entities_LdapGroupLink: + type: object + properties: + cn: + type: string + example: ldap-group-1 + group_access: + type: integer + format: int32 + example: 10 + provider: + type: string + example: ldapmain + filter: + type: string + example: id >= 500 + member_role_id: + type: integer + format: int32 + example: 12 + EE_API_Entities_SamlGroupLink: + type: object + properties: + name: + type: string + example: saml-group-1 + access_level: + type: integer + format: int32 + example: 40 + member_role_id: + type: integer + format: int32 + example: 12 + postApiV4Groups: + type: object + properties: + name: + type: string + description: The name of the group + path: + type: string + description: The path of the group + parent_id: + type: integer + format: int32 + description: The parent group id for creating nested group + organization_id: + type: integer + format: int32 + description: The organization id for the group + default: {} + description: + type: string + description: The description of the group + visibility: + type: string + description: The visibility of the group + enum: + - private + - internal + - public + avatar: + type: file + description: Avatar image for the group + share_with_group_lock: + type: boolean + description: Prevent sharing a project with another group within this group + require_two_factor_authentication: + type: boolean + description: Require all users in this group to setup Two-factor authentication + two_factor_grace_period: + type: integer + format: int32 + description: Time before Two-factor authentication is enforced + project_creation_level: + type: string + description: Determine if developers can create projects in the group + enum: + - noone + - owner + - maintainer + - developer + - administrator + auto_devops_enabled: + type: boolean + description: Default to Auto DevOps pipeline for all projects within this + group + subgroup_creation_level: + type: string + description: Allowed to create subgroups + enum: + - owner + - maintainer + emails_disabled: + type: boolean + description: '_(Deprecated)_ Disable email notifications. Use: emails_enabled' + emails_enabled: + type: boolean + description: Enable email notifications + show_diff_preview_in_email: + type: boolean + description: Include the code diff preview in merge request notification emails + mentions_disabled: + type: boolean + description: Disable a group from getting mentioned + lfs_enabled: + type: boolean + description: Enable/disable LFS for the projects in this group + request_access_enabled: + type: boolean + description: Allow users to request member access + default_branch: + type: string + description: The default branch of group's projects + example: main + default_branch_protection: + type: integer + format: int32 + description: Determine if developers can push to default branch + enum: + - 0 + - 3 + - 1 + - 2 + - 4 + default_branch_protection_defaults: + type: object + description: Determine if developers can push to default branch + properties: + allowed_to_push: + type: array + description: An array of access levels allowed to push + items: + type: object + properties: + access_level: + type: integer + format: int32 + description: A valid access level + enum: + - 30 + - 40 + - 60 + - 0 + required: + - access_level + allow_force_push: + type: boolean + description: Allow force push for all users with push access. + allowed_to_merge: + type: array + description: An array of access levels allowed to merge + items: + type: object + properties: + access_level: + type: integer + format: int32 + description: A valid access level + enum: + - 30 + - 40 + - 60 + - 0 + required: + - access_level + code_owner_approval_required: + type: boolean + description: Require approval from code owners + developer_can_initial_push: + type: boolean + description: Allow developers to initial push + shared_runners_setting: + type: string + description: Enable/disable shared runners for the group and its subgroups + and projects + enum: + - disabled_and_unoverridable + - disabled_and_overridable + - enabled + enabled_git_access_protocol: + type: string + description: Allow only the selected protocols to be used for Git access. + enum: + - ssh + - http + - all + membership_lock: + type: boolean + description: Prevent adding new members to projects within this group + ldap_cn: + type: string + description: LDAP Common Name + ldap_access: + type: integer + format: int32 + description: A valid access level + shared_runners_minutes_limit: + type: integer + format: int32 + description: "(admin-only) compute minutes quota for this group" + extra_shared_runners_minutes_limit: + type: integer + format: int32 + description: "(admin-only) Extra compute minutes quota for this group" + wiki_access_level: + type: string + description: Wiki access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + duo_availability: + type: string + description: Duo availability. One of `default_on`, `default_off` or `never_on` + enum: + - default_on + - default_off + - never_on + amazon_q_auto_review_enabled: + type: boolean + description: Enable Amazon Q auto review for merge request + experiment_features_enabled: + type: boolean + description: Enable experiment features for this group + model_prompt_cache_enabled: + type: boolean + description: Enable model prompt cache for this group + ai_settings_attributes: + type: object + description: AI-related settings + properties: + duo_workflow_mcp_enabled: + type: boolean + description: Enable MCP support for Duo Workflow + required: + - name + - path + description: Create a group. Available only for users who can create groups. + putApiV4GroupsId: + type: object + properties: + name: + type: string + description: The name of the group + path: + type: string + description: The path of the group + description: + type: string + description: The description of the group + visibility: + type: string + description: The visibility of the group + enum: + - private + - internal + - public + avatar: + type: file + description: Avatar image for the group + share_with_group_lock: + type: boolean + description: Prevent sharing a project with another group within this group + require_two_factor_authentication: + type: boolean + description: Require all users in this group to setup Two-factor authentication + two_factor_grace_period: + type: integer + format: int32 + description: Time before Two-factor authentication is enforced + project_creation_level: + type: string + description: Determine if developers can create projects in the group + enum: + - noone + - owner + - maintainer + - developer + - administrator + auto_devops_enabled: + type: boolean + description: Default to Auto DevOps pipeline for all projects within this + group + subgroup_creation_level: + type: string + description: Allowed to create subgroups + enum: + - owner + - maintainer + emails_disabled: + type: boolean + description: '_(Deprecated)_ Disable email notifications. Use: emails_enabled' + emails_enabled: + type: boolean + description: Enable email notifications + show_diff_preview_in_email: + type: boolean + description: Include the code diff preview in merge request notification emails + mentions_disabled: + type: boolean + description: Disable a group from getting mentioned + lfs_enabled: + type: boolean + description: Enable/disable LFS for the projects in this group + request_access_enabled: + type: boolean + description: Allow users to request member access + default_branch: + type: string + description: The default branch of group's projects + example: main + default_branch_protection: + type: integer + format: int32 + description: Determine if developers can push to default branch + enum: + - 0 + - 3 + - 1 + - 2 + - 4 + default_branch_protection_defaults: + type: object + description: Determine if developers can push to default branch + properties: + allowed_to_push: + type: array + description: An array of access levels allowed to push + items: + type: object + properties: + access_level: + type: integer + format: int32 + description: A valid access level + enum: + - 30 + - 40 + - 60 + - 0 + required: + - access_level + allow_force_push: + type: boolean + description: Allow force push for all users with push access. + allowed_to_merge: + type: array + description: An array of access levels allowed to merge + items: + type: object + properties: + access_level: + type: integer + format: int32 + description: A valid access level + enum: + - 30 + - 40 + - 60 + - 0 + required: + - access_level + code_owner_approval_required: + type: boolean + description: Require approval from code owners + developer_can_initial_push: + type: boolean + description: Allow developers to initial push + shared_runners_setting: + type: string + description: Enable/disable shared runners for the group and its subgroups + and projects + enum: + - disabled_and_unoverridable + - disabled_and_overridable + - enabled + enabled_git_access_protocol: + type: string + description: Allow only the selected protocols to be used for Git access. + enum: + - ssh + - http + - all + membership_lock: + type: boolean + description: Prevent adding new members to projects within this group + ldap_cn: + type: string + description: LDAP Common Name + ldap_access: + type: integer + format: int32 + description: A valid access level + shared_runners_minutes_limit: + type: integer + format: int32 + description: "(admin-only) compute minutes quota for this group" + extra_shared_runners_minutes_limit: + type: integer + format: int32 + description: "(admin-only) Extra compute minutes quota for this group" + wiki_access_level: + type: string + description: Wiki access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + duo_availability: + type: string + description: Duo availability. One of `default_on`, `default_off` or `never_on` + enum: + - default_on + - default_off + - never_on + amazon_q_auto_review_enabled: + type: boolean + description: Enable Amazon Q auto review for merge request + experiment_features_enabled: + type: boolean + description: Enable experiment features for this group + model_prompt_cache_enabled: + type: boolean + description: Enable model prompt cache for this group + ai_settings_attributes: + type: object + description: AI-related settings + properties: + duo_workflow_mcp_enabled: + type: boolean + description: Enable MCP support for Duo Workflow + prevent_sharing_groups_outside_hierarchy: + type: boolean + description: Prevent sharing groups within this namespace with any groups + outside the namespace. Only available on top-level groups. + lock_math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are locked for all descendent + groups. + math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are used for this group. + max_artifacts_size: + type: integer + format: int32 + description: Set the maximum file size for each job's artifacts + file_template_project_id: + type: integer + format: int32 + description: The ID of a project to use for custom templates in this group + prevent_forking_outside_group: + type: boolean + description: Prevent forking projects inside this group to external namespaces + unique_project_download_limit: + type: integer + format: int32 + description: Maximum number of unique projects a user can download in the + specified time period before they are banned. + unique_project_download_limit_interval_in_seconds: + type: integer + format: int32 + description: Time period during which a user can download a maximum amount + of projects before they are banned. + unique_project_download_limit_allowlist: + type: array + description: List of usernames excluded from the unique project download limit + items: + type: string + unique_project_download_limit_alertlist: + type: array + description: List of user ids who will be emailed when Git abuse rate limit + is exceeded + items: + type: integer + format: int32 + auto_ban_user_on_excessive_projects_download: + type: boolean + description: Ban users from the group when they exceed maximum number of unique + projects download in the specified time period + ip_restriction_ranges: + type: string + description: List of IP addresses which need to be restricted for group + allowed_email_domains_list: + type: string + description: List of allowed email domains for group + service_access_tokens_expiration_enforced: + type: boolean + description: To enforce token expiration for Service accounts users for group + duo_core_features_enabled: + type: boolean + description: "[Experimental] Indicates whether GitLab Duo Core features are + enabled for the group" + duo_features_enabled: + type: boolean + description: Indicates whether GitLab Duo features are enabled for the group + lock_duo_features_enabled: + type: boolean + description: Indicates if the GitLab Duo features enabled setting is enforced + for all subgroups + web_based_commit_signing_enabled: + type: boolean + description: Enable web based commit signing for this group + description: Update a group. Available only for users who can administrate groups. + API_Entities_GroupDetail: + type: object + properties: + id: + type: string + web_url: + type: string + name: + type: string + path: + type: string + description: + type: string + visibility: + type: string + share_with_group_lock: + type: string + require_two_factor_authentication: + type: string + two_factor_grace_period: + type: string + project_creation_level: + type: string + auto_devops_enabled: + type: string + subgroup_creation_level: + type: string + emails_disabled: + type: boolean + emails_enabled: + type: boolean + mentions_disabled: + type: string + lfs_enabled: + type: string + archived: + type: boolean + math_rendering_limits_enabled: + type: boolean + lock_math_rendering_limits_enabled: + type: boolean + default_branch: + type: string + default_branch_protection: + type: string + default_branch_protection_defaults: + type: string + avatar_url: + type: string + request_access_enabled: + type: string + full_name: + type: string + full_path: + type: string + created_at: + type: string + parent_id: + type: string + organization_id: + type: string + shared_runners_setting: + type: string + max_artifacts_size: + type: integer + format: int32 + custom_attributes: + "$ref": "#/definitions/API_Entities_CustomAttribute" + statistics: + type: object + properties: + storage_size: + type: string + repository_size: + type: string + wiki_size: + type: string + lfs_objects_size: + type: string + job_artifacts_size: + type: string + pipeline_artifacts_size: + type: string + packages_size: + type: string + snippets_size: + type: string + uploads_size: + type: string + marked_for_deletion_on: + type: string + root_storage_statistics: + "$ref": "#/definitions/API_Entities_Namespace_RootStorageStatistics" + ldap_cn: + type: string + ldap_access: + type: string + ldap_group_links: + "$ref": "#/definitions/EE_API_Entities_LdapGroupLink" + saml_group_links: + "$ref": "#/definitions/EE_API_Entities_SamlGroupLink" + file_template_project_id: + type: string + wiki_access_level: + type: string + repository_storage: + type: string + duo_core_features_enabled: + type: boolean + description: "[Experimental] Indicates whether GitLab Duo Core features are + enabled for the group" + duo_features_enabled: + type: string + lock_duo_features_enabled: + type: string + web_based_commit_signing_enabled: + type: string + shared_with_groups: + type: string + runners_token: + type: string + enabled_git_access_protocol: + type: string + prevent_sharing_groups_outside_hierarchy: + type: string + projects: + "$ref": "#/definitions/API_Entities_Project" + shared_projects: + "$ref": "#/definitions/API_Entities_Project" + shared_runners_minutes_limit: + type: string + extra_shared_runners_minutes_limit: + type: string + prevent_forking_outside_group: + type: string + service_access_tokens_expiration_enforced: + type: string + membership_lock: + type: string + ip_restriction_ranges: + type: string + allowed_email_domains_list: + type: string + unique_project_download_limit: + type: string + unique_project_download_limit_interval_in_seconds: + type: string + unique_project_download_limit_allowlist: + type: string + unique_project_download_limit_alertlist: + type: string + auto_ban_user_on_excessive_projects_download: + type: string + description: API_Entities_GroupDetail model + API_Entities_Project: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + description: + type: string + example: desc + name: + type: string + example: project1 + name_with_namespace: + type: string + example: John Doe / project1 + path: + type: string + example: project1 + path_with_namespace: + type: string + example: namespace1/project1 + created_at: + type: string + format: date-time + example: '2020-05-07T04:27:17.016Z' + default_branch: + type: string + example: main + tag_list: + type: array + items: + type: string + example: tag + topics: + type: array + items: + type: string + example: topic + ssh_url_to_repo: + type: string + example: git@gitlab.example.com:gitlab/gitlab.git + http_url_to_repo: + type: string + example: https://gitlab.example.com/gitlab/gitlab.git + web_url: + type: string + example: https://gitlab.example.com/gitlab/gitlab + readme_url: + type: string + example: https://gitlab.example.com/gitlab/gitlab/blob/master/README.md + forks_count: + type: integer + format: int32 + example: 1 + license_url: + type: string + example: https://gitlab.example.com/gitlab/gitlab/blob/master/LICENCE + license: + "$ref": "#/definitions/API_Entities_LicenseBasic" + avatar_url: + type: string + example: http://example.com/uploads/project/avatar/3/uploads/avatar.png + star_count: + type: integer + format: int32 + example: 1 + last_activity_at: + type: string + format: date-time + example: '2013-09-30T13:46:02Z' + namespace: + "$ref": "#/definitions/API_Entities_NamespaceBasic" + custom_attributes: + "$ref": "#/definitions/API_Entities_CustomAttribute" + repository_storage: + type: string + example: default + forked_from_project: + "$ref": "#/definitions/API_Entities_BasicProjectDetails" + container_registry_image_prefix: + type: string + example: registry.gitlab.example.com/gitlab/gitlab-client + _links: + type: object + properties: + self: + type: string + example: https://gitlab.example.com/api/v4/projects/4 + issues: + type: string + example: https://gitlab.example.com/api/v4/projects/4/issues + merge_requests: + type: string + example: https://gitlab.example.com/api/v4/projects/4/merge_requests + repo_branches: + type: string + example: https://gitlab.example.com/api/v4/projects/4/repository/branches + labels: + type: string + example: https://gitlab.example.com/api/v4/projects/4/labels + events: + type: string + example: https://gitlab.example.com/api/v4/projects/4/events + members: + type: string + example: https://gitlab.example.com/api/v4/projects/4/members + cluster_agents: + type: string + example: https://gitlab.example.com/api/v4/projects/4/cluster_agents + marked_for_deletion_at: + type: string + marked_for_deletion_on: + type: string + packages_enabled: + type: boolean + empty_repo: + type: boolean + archived: + type: boolean + visibility: + type: string + example: public + owner: + "$ref": "#/definitions/API_Entities_UserBasic" + resolve_outdated_diff_discussions: + type: boolean + container_expiration_policy: + "$ref": "#/definitions/API_Entities_ContainerExpirationPolicy" + repository_object_format: + type: string + example: sha1 + issues_enabled: + type: boolean + merge_requests_enabled: + type: boolean + wiki_enabled: + type: boolean + jobs_enabled: + type: boolean + snippets_enabled: + type: boolean + container_registry_enabled: + type: boolean + service_desk_enabled: + type: boolean + service_desk_address: + type: string + example: address@example.com + can_create_merge_request_in: + type: boolean + issues_access_level: + type: string + example: enabled + repository_access_level: + type: string + example: enabled + merge_requests_access_level: + type: string + example: enabled + forking_access_level: + type: string + example: enabled + wiki_access_level: + type: string + example: enabled + builds_access_level: + type: string + example: enabled + snippets_access_level: + type: string + example: enabled + pages_access_level: + type: string + example: enabled + analytics_access_level: + type: string + example: enabled + container_registry_access_level: + type: string + example: enabled + security_and_compliance_access_level: + type: string + example: enabled + releases_access_level: + type: string + example: enabled + environments_access_level: + type: string + example: enabled + feature_flags_access_level: + type: string + example: enabled + infrastructure_access_level: + type: string + example: enabled + monitor_access_level: + type: string + example: enabled + model_experiments_access_level: + type: string + example: enabled + model_registry_access_level: + type: string + example: enabled + emails_disabled: + type: boolean + emails_enabled: + type: boolean + shared_runners_enabled: + type: boolean + lfs_enabled: + type: boolean + creator_id: + type: integer + format: int32 + example: 1 + mr_default_target_self: + type: boolean + import_url: + type: string + example: https://gitlab.com/gitlab/gitlab.git + import_type: + type: string + example: git + import_status: + type: string + example: none + import_error: + type: string + example: Import error + open_issues_count: + type: integer + format: int32 + example: 1 + description_html: + type: string + updated_at: + type: string + format: date-time + example: '2020-05-07T04:27:17.016Z' + ci_default_git_depth: + type: integer + format: int32 + example: 20 + ci_delete_pipelines_in_seconds: + type: integer + format: int32 + example: 86400 + ci_forward_deployment_enabled: + type: boolean + ci_forward_deployment_rollback_allowed: + type: boolean + ci_job_token_scope_enabled: + type: boolean + ci_separated_caches: + type: boolean + ci_allow_fork_pipelines_to_run_in_parent_project: + type: boolean + ci_id_token_sub_claim_components: + type: array + items: + type: string + build_git_strategy: + type: string + example: fetch + keep_latest_artifact: + type: boolean + restrict_user_defined_variables: + type: boolean + ci_pipeline_variables_minimum_override_role: + type: string + runner_token_expiration_interval: + type: integer + format: int32 + example: 3600 + group_runners_enabled: + type: boolean + auto_cancel_pending_pipelines: + type: string + example: enabled + build_timeout: + type: integer + format: int32 + example: 3600 + auto_devops_enabled: + type: boolean + auto_devops_deploy_strategy: + type: string + example: continuous + ci_push_repository_for_job_token_allowed: + type: boolean + runners_token: + type: string + example: b8547b1dc37721d05889db52fa2f02 + ci_config_path: + type: string + example: '' + public_jobs: + type: boolean + shared_with_groups: + type: array + items: + type: string + only_allow_merge_if_pipeline_succeeds: + type: boolean + allow_merge_on_skipped_pipeline: + type: boolean + request_access_enabled: + type: boolean + only_allow_merge_if_all_discussions_are_resolved: + type: boolean + remove_source_branch_after_merge: + type: boolean + printing_merge_request_link_enabled: + type: boolean + merge_method: + type: string + example: merge + merge_request_title_regex: + type: string + example: "/Title of merge request/" + merge_request_title_regex_description: + type: string + example: This requires the title to include a Jira label + squash_option: + type: string + example: default_off + enforce_auth_checks_on_uploads: + type: boolean + suggestion_commit_message: + type: string + example: Suggestion message + merge_commit_template: + type: string + example: "%(title)" + squash_commit_template: + type: string + example: "%(source_branch)" + issue_branch_template: + type: string + example: "%(title)" + statistics: + "$ref": "#/definitions/API_Entities_ProjectStatistics" + warn_about_potentially_unwanted_characters: + type: boolean + autoclose_referenced_issues: + type: boolean + max_artifacts_size: + type: integer + format: int32 + approvals_before_merge: + type: string + mirror: + type: string + mirror_user_id: + type: string + mirror_trigger_builds: + type: string + only_mirror_protected_branches: + type: string + mirror_overwrites_diverged_branches: + type: string + external_authorization_classification_label: + type: string + requirements_enabled: + type: string + requirements_access_level: + type: string + security_and_compliance_enabled: + type: string + secret_push_protection_enabled: + type: boolean + pre_receive_secret_detection_enabled: + type: boolean + compliance_frameworks: + type: string + issues_template: + type: string + merge_requests_template: + type: string + ci_restrict_pipeline_cancellation_role: + type: string + merge_pipelines_enabled: + type: string + merge_trains_enabled: + type: string + merge_trains_skip_train_allowed: + type: string + only_allow_merge_if_all_status_checks_passed: + type: string + allow_pipeline_trigger_approve_deployment: + type: boolean + prevent_merge_without_jira_issue: + type: string + auto_duo_code_review_enabled: + type: string + web_based_commit_signing_enabled: + type: string + description: API_Entities_Project model + API_Entities_LicenseBasic: + type: object + properties: + key: + type: string + example: gpl-3.0 + name: + type: string + example: GNU General Public License v3.0 + nickname: + type: string + example: GNU GPLv3 + html_url: + type: string + example: http://choosealicense.com/licenses/gpl-3.0 + source_url: + type: string + API_Entities_NamespaceBasic: + type: object + properties: + id: + type: integer + format: int32 + example: 2 + name: + type: string + example: project + path: + type: string + example: my_project + kind: + type: string + example: project + full_path: + type: string + example: group/my_project + parent_id: + type: integer + format: int32 + example: 1 + avatar_url: + type: string + example: https://example.com/avatar/12345 + web_url: + type: string + example: https://example.com/group/my_project + API_Entities_BasicProjectDetails: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + description: + type: string + example: desc + name: + type: string + example: project1 + name_with_namespace: + type: string + example: John Doe / project1 + path: + type: string + example: project1 + path_with_namespace: + type: string + example: namespace1/project1 + created_at: + type: string + format: date-time + example: '2020-05-07T04:27:17.016Z' + default_branch: + type: string + example: main + tag_list: + type: array + items: + type: string + example: tag + topics: + type: array + items: + type: string + example: topic + ssh_url_to_repo: + type: string + example: git@gitlab.example.com:gitlab/gitlab.git + http_url_to_repo: + type: string + example: https://gitlab.example.com/gitlab/gitlab.git + web_url: + type: string + example: https://gitlab.example.com/gitlab/gitlab + readme_url: + type: string + example: https://gitlab.example.com/gitlab/gitlab/blob/master/README.md + forks_count: + type: integer + format: int32 + example: 1 + license_url: + type: string + example: https://gitlab.example.com/gitlab/gitlab/blob/master/LICENCE + license: + "$ref": "#/definitions/API_Entities_LicenseBasic" + avatar_url: + type: string + example: http://example.com/uploads/project/avatar/3/uploads/avatar.png + star_count: + type: integer + format: int32 + example: 1 + last_activity_at: + type: string + format: date-time + example: '2013-09-30T13:46:02Z' + namespace: + "$ref": "#/definitions/API_Entities_NamespaceBasic" + custom_attributes: + "$ref": "#/definitions/API_Entities_CustomAttribute" + repository_storage: + type: string + example: default + description: API_Entities_BasicProjectDetails model + API_Entities_ContainerExpirationPolicy: + type: object + properties: + cadence: + type: string + enabled: + type: string + keep_n: + type: string + older_than: + type: string + name_regex: + type: string + name_regex_keep: + type: string + next_run_at: + type: string + API_Entities_ProjectStatistics: + type: object + properties: + commit_count: + type: string + storage_size: + type: string + repository_size: + type: string + wiki_size: + type: string + lfs_objects_size: + type: string + job_artifacts_size: + type: string + pipeline_artifacts_size: + type: string + packages_size: + type: string + snippets_size: + type: string + uploads_size: + type: string + container_registry_size: + type: string + postApiV4GroupsIdTransfer: + type: object + properties: + group_id: + type: integer + format: int32 + description: The ID of the target group to which the group needs to be transferred + to.If not provided, the source group will be promoted to a top-level group. + description: Transfer a group to a new parent group or promote a subgroup to a + top-level group + postApiV4GroupsIdShare: + type: object + properties: + group_id: + type: integer + format: int32 + description: The ID of the group to share + group_access: + type: integer + format: int32 + description: The group access level + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + expires_at: + type: string + format: date + description: Share expiration date + member_role_id: + type: integer + format: int32 + description: The ID of the Member Role to be assigned to the group + required: + - group_id + - group_access + description: Share a group with a group + postApiV4GroupsIdTokensRevoke: + type: object + properties: + token: + type: string + description: The token to revoke + required: + - token + description: Revoke a single token + EE_API_Entities_AuditEvent: + type: object + properties: + id: + type: string + author_id: + type: string + entity_id: + type: string + entity_type: + type: string + event_name: + type: string + details: + type: string + created_at: + type: string + description: EE_API_Entities_AuditEvent model + API_Entities_UserPublic: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + username: + type: string + example: admin + public_email: + type: string + example: john@example.com + name: + type: string + example: Administrator + state: + type: string + example: active + locked: + type: boolean + avatar_url: + type: string + example: https://gravatar.com/avatar/1 + avatar_path: + type: string + example: "/user/avatar/28/The-Big-Lebowski-400-400.png" + custom_attributes: + type: array + items: + "$ref": "#/definitions/API_Entities_CustomAttribute" + web_url: + type: string + example: https://gitlab.example.com/root + created_at: + type: string + bio: + type: string + location: + type: string + linkedin: + type: string + twitter: + type: string + discord: + type: string + website_url: + type: string + github: + type: string + organization: + type: string + job_title: + type: string + pronouns: + type: string + bot: + type: string + work_information: + type: string + followers: + type: string + following: + type: string + is_followed: + type: string + local_time: + type: string + last_sign_in_at: + type: string + format: date-time + example: '2015-09-03T07:24:01.670Z' + confirmed_at: + type: string + format: date-time + example: '2015-09-03T07:24:01.670Z' + last_activity_on: + type: string + format: date-time + example: '2015-09-03T07:24:01.670Z' + email: + type: string + example: john@example.com + theme_id: + type: integer + format: int32 + example: 2 + color_scheme_id: + type: integer + format: int32 + example: 1 + projects_limit: + type: integer + format: int32 + example: 10 + current_sign_in_at: + type: string + format: date-time + example: '2015-09-03T07:24:01.670Z' + identities: + "$ref": "#/definitions/API_Entities_Identity" + can_create_group: + type: boolean + example: true + can_create_project: + type: boolean + example: true + two_factor_enabled: + type: boolean + example: true + external: + type: string + private_profile: + type: boolean + example: 'null' + commit_email: + type: string + shared_runners_minutes_limit: + type: string + extra_shared_runners_minutes_limit: + type: string + scim_identities: + "$ref": "#/definitions/API_Entities_ScimIdentity" + description: API_Entities_UserPublic model + API_Entities_Identity: + type: object + properties: + provider: + type: string + extern_uid: + type: string + saml_provider_id: + type: string + API_Entities_ScimIdentity: + type: object + properties: + extern_uid: + type: string + group_id: + type: string + active: + type: string + EE_API_Entities_SshCertificate: + type: object + properties: + id: + type: integer + format: int32 + example: 142 + title: + type: string + example: new ssh cert + key: + type: string + created_at: + type: string + format: date-time + example: '2022-01-31T15:10:45.080Z' + description: EE_API_Entities_SshCertificate model + postApiV4GroupsIdSshCertificates: + type: object + properties: + title: + type: string + description: The title of the ssh certificate + key: + type: string + description: The key of the ssh certificate + required: + - title + - key + description: Create a ssh certificate for a group. + API_Entities_Ci_Runner: + type: object + properties: + id: + type: integer + format: int32 + example: 8 + description: + type: string + example: test-1-20150125 + ip_address: + type: string + example: 127.0.0.1 + active: + type: boolean + example: true + paused: + type: boolean + example: false + is_shared: + type: boolean + example: true + runner_type: + type: string + enum: + - instance_type + - group_type + - project_type + example: instance_type + name: + type: string + example: test + online: + type: boolean + example: true + created_by: + "$ref": "#/definitions/API_Entities_UserBasic" + created_at: + type: string + format: date-time + example: '2025-05-03T00:00:00.000Z' + status: + type: string + example: online + job_execution_status: + type: string + enum: + - active + - idle + example: idle + description: API_Entities_Ci_Runner model + API_Entities_Ci_ResetTokenResult: + type: object + properties: + token: + type: string + token_expires_at: + type: string + description: API_Entities_Ci_ResetTokenResult model + API_Entities_DeployToken: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + name: + type: string + example: MyToken + username: + type: string + example: gitlab+deploy-token-1 + expires_at: + type: string + format: date-time + example: '2020-02-14T00:00:00.000Z' + scopes: + type: array + example: + - read_repository + revoked: + type: boolean + expired: + type: boolean + description: API_Entities_DeployToken model + postApiV4GroupsIdDeployTokens: + type: object + properties: + name: + type: string + description: New deploy token's name + scopes: + type: array + description: Indicates the deploy token scopes. Must be at least one of `read_repository`, + `read_registry`, `write_registry`, `read_package_registry`, or `write_package_registry` + items: + type: string + enum: + - read_repository + - read_registry + - write_registry + - read_package_registry + - write_package_registry + - read_virtual_registry + - write_virtual_registry + expires_at: + type: string + format: date-time + description: Expiration date for the deploy token. Does not expire if no value + is provided. Expected in ISO 8601 format (`2019-03-15T08:00:00Z`) + username: + type: string + description: Username for deploy token. Default is `gitlab+deploy-token-{n}` + required: + - name + - scopes + description: Create a group deploy token + API_Entities_DeployTokenWithToken: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + name: + type: string + example: MyToken + username: + type: string + example: gitlab+deploy-token-1 + expires_at: + type: string + format: date-time + example: '2020-02-14T00:00:00.000Z' + scopes: + type: array + example: + - read_repository + revoked: + type: boolean + expired: + type: boolean + token: + type: string + example: jMRvtPNxrn3crTAGukpZ + description: API_Entities_DeployTokenWithToken model + API_Entities_Cluster: + type: object + properties: + id: + type: string + name: + type: string + created_at: + type: string + domain: + type: string + enabled: + type: string + managed: + type: string + provider_type: + type: string + platform_type: + type: string + environment_scope: + type: string + cluster_type: + type: string + namespace_per_environment: + type: string + user: + "$ref": "#/definitions/API_Entities_UserBasic" + platform_kubernetes: + "$ref": "#/definitions/API_Entities_Platform_Kubernetes" + provider_gcp: + "$ref": "#/definitions/API_Entities_Provider_Gcp" + management_project: + "$ref": "#/definitions/API_Entities_ProjectIdentity" + description: API_Entities_Cluster model + API_Entities_Platform_Kubernetes: + type: object + properties: + api_url: + type: string + namespace: + type: string + authorization_type: + type: string + ca_cert: + type: string + API_Entities_Provider_Gcp: + type: object + properties: + cluster_id: + type: string + status_name: + type: string + gcp_project_id: + type: string + zone: + type: string + machine_type: + type: string + num_nodes: + type: string + endpoint: + type: string + API_Entities_ProjectIdentity: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + description: + type: string + example: desc + name: + type: string + example: project1 + name_with_namespace: + type: string + example: John Doe / project1 + path: + type: string + example: project1 + path_with_namespace: + type: string + example: namespace1/project1 + created_at: + type: string + format: date-time + example: '2020-05-07T04:27:17.016Z' + API_Entities_ClusterGroup: + type: object + properties: + id: + type: string + name: + type: string + created_at: + type: string + domain: + type: string + enabled: + type: string + managed: + type: string + provider_type: + type: string + platform_type: + type: string + environment_scope: + type: string + cluster_type: + type: string + namespace_per_environment: + type: string + user: + "$ref": "#/definitions/API_Entities_UserBasic" + platform_kubernetes: + "$ref": "#/definitions/API_Entities_Platform_Kubernetes" + provider_gcp: + "$ref": "#/definitions/API_Entities_Provider_Gcp" + management_project: + "$ref": "#/definitions/API_Entities_ProjectIdentity" + group: + "$ref": "#/definitions/API_Entities_BasicGroupDetails" + description: API_Entities_ClusterGroup model + API_Entities_BasicGroupDetails: + type: object + properties: + id: + type: string + web_url: + type: string + name: + type: string + description: API_Entities_BasicGroupDetails model + postApiV4GroupsIdClustersUser: + type: object + properties: + name: + type: string + description: Cluster name + enabled: + type: boolean + description: Determines if cluster is active or not, defaults to true + default: true + environment_scope: + type: string + description: The associated environment to the cluster + default: "*" + namespace_per_environment: + type: boolean + description: Deploy each environment to a separate Kubernetes namespace + default: true + domain: + type: string + description: Cluster base domain + management_project_id: + type: integer + format: int32 + description: The ID of the management project + managed: + type: boolean + description: Determines if GitLab will manage namespaces and service accounts + for this cluster, defaults to true + default: true + platform_kubernetes_attributes: + type: object + description: Platform Kubernetes data + properties: + api_url: + type: string + description: URL to access the Kubernetes API + token: + type: string + description: Token to authenticate against Kubernetes + ca_cert: + type: string + description: TLS certificate (needed if API is using a self-signed TLS + certificate) + namespace: + type: string + description: Unique namespace related to Group + authorization_type: + type: string + description: Cluster authorization type, defaults to RBAC + enum: + - unknown_authorization + - rbac + - abac + default: rbac + required: + - api_url + - token + required: + - name + - platform_kubernetes_attributes + description: Add existing cluster to group + putApiV4GroupsIdClustersClusterId: + type: object + properties: + name: + type: string + description: Cluster name + enabled: + type: boolean + description: Determines if cluster is active or not + domain: + type: string + description: Cluster base domain + environment_scope: + type: string + description: The associated environment to the cluster + namespace_per_environment: + type: boolean + description: Deploy each environment to a separate Kubernetes namespace + default: true + management_project_id: + type: integer + format: int32 + description: The ID of the management project + managed: + type: boolean + description: Determines if GitLab will manage namespaces and service accounts + for this cluster + platform_kubernetes_attributes: + type: object + description: Platform Kubernetes data + properties: + api_url: + type: string + description: URL to access the Kubernetes API + token: + type: string + description: Token to authenticate against Kubernetes + ca_cert: + type: string + description: TLS certificate (needed if API is using a self-signed TLS + certificate) + namespace: + type: string + description: Unique namespace related to Group + description: Edit group cluster + API_Entities_ContainerRegistry_Repository: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + name: + type: string + example: releases + path: + type: string + example: group/project/releases + project_id: + type: integer + format: int32 + example: 9 + location: + type: string + example: gitlab.example.com/group/project/releases + created_at: + type: string + format: date-time + example: '2019-01-10T13:39:08.229Z' + cleanup_policy_started_at: + type: string + format: date-time + example: '2020-08-17T03:12:35.489Z' + tags_count: + type: integer + format: int32 + example: 3 + tags: + "$ref": "#/definitions/API_Entities_ContainerRegistry_Tag" + delete_api_path: + type: string + example: delete/api/path + size: + type: integer + format: int32 + example: 12345 + status: + type: string + example: delete_scheduled + description: API_Entities_ContainerRegistry_Repository model + API_Entities_ContainerRegistry_Tag: + type: object + properties: + name: + type: string + example: latest + path: + type: string + example: namespace1/project1/test_image_1:latest + location: + type: string + example: registry.dev/namespace1/project1/test_image_1:latest + description: API_Entities_ContainerRegistry_Tag model + postApiV4GroupsIdDebianDistributions: + type: object + properties: + codename: + type: string + description: The Debian Codename + example: sid + suite: + type: string + description: The Debian Suite + example: unstable + origin: + type: string + description: The Debian Origin + example: Grep + label: + type: string + description: The Debian Label + example: grep.be + version: + type: string + description: The Debian Version + example: '12' + description: + type: string + description: The Debian Description + example: My description + valid_time_duration_seconds: + type: integer + format: int32 + description: The duration before the Release file should be considered expired + by the client + example: 604800 + components: + type: array + description: The list of Components + example: main + items: + type: string + architectures: + type: array + description: The list of Architectures + example: amd64 + items: + type: string + required: + - codename + description: Create a Debian Distribution + API_Entities_Packages_Debian_Distribution: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + codename: + type: string + example: sid + suite: + type: string + example: unstable + origin: + type: string + example: Grep + label: + type: string + example: grep.be + version: + type: string + example: '12' + description: + type: string + example: My description + valid_time_duration_seconds: + type: integer + format: int32 + example: 604800 + components: + type: array + items: + type: string + example: main + architectures: + type: array + items: + type: string + example: amd64 + description: API_Entities_Packages_Debian_Distribution model + putApiV4GroupsIdDebianDistributionsCodename: + type: object + properties: + suite: + type: string + description: The Debian Suite + example: unstable + origin: + type: string + description: The Debian Origin + example: Grep + label: + type: string + description: The Debian Label + example: grep.be + version: + type: string + description: The Debian Version + example: '12' + description: + type: string + description: The Debian Description + example: My description + valid_time_duration_seconds: + type: integer + format: int32 + description: The duration before the Release file should be considered expired + by the client + example: 604800 + components: + type: array + description: The list of Components + example: main + items: + type: string + architectures: + type: array + description: The list of Architectures + example: amd64 + items: + type: string + description: Update a Debian Distribution + postApiV4GroupsIdExportRelations: + type: object + properties: + batched: + type: boolean + description: Whether to export in batches + description: Start relations export + API_Entities_BulkImports_ExportStatus: + type: object + properties: + relation: + type: string + example: issues + status: + type: string + enum: + - started + - finished + - failed + example: started + error: + type: string + example: Error message + updated_at: + type: string + format: date-time + example: '2012-05-28T04:42:42-07:00' + batched: + type: boolean + example: true + batches_count: + type: integer + format: int32 + example: 2 + total_objects_count: + type: integer + format: int32 + example: 100 + batches: + "$ref": "#/definitions/API_Entities_BulkImports_ExportBatchStatus" + description: API_Entities_BulkImports_ExportStatus model + API_Entities_BulkImports_ExportBatchStatus: + type: object + properties: + status: + type: string + enum: + - started + - finished + - failed + example: started + batch_number: + type: integer + format: int32 + example: 1 + objects_count: + type: integer + format: int32 + example: 100 + error: + type: string + example: Error message + updated_at: + type: string + format: date-time + example: '2012-05-28T04:42:42-07:00' + API_Entities_Package: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + name: + type: string + example: "@foo/bar" + conan_package_name: + type: string + version: + type: string + example: 1.0.3 + package_type: + type: string + example: npm + status: + type: string + example: default + _links: + type: object + properties: + web_path: + type: string + delete_api_path: + type: string + created_at: + type: string + format: date-time + example: '2022-09-16T12:47:31.949Z' + last_downloaded_at: + type: string + format: date-time + example: '2022-09-19T11:32:35.169Z' + project_id: + type: integer + format: int32 + example: 2 + project_path: + type: string + example: gitlab/foo/bar + tags: + type: string + pipeline: + "$ref": "#/definitions/API_Entities_Package_Pipeline" + pipelines: + "$ref": "#/definitions/API_Entities_Package_Pipeline" + versions: + "$ref": "#/definitions/API_Entities_PackageVersion" + description: API_Entities_Package model + API_Entities_Package_Pipeline: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + iid: + type: integer + format: int32 + example: 2 + project_id: + type: integer + format: int32 + example: 3 + sha: + type: string + example: 0ec9e58fdfca6cdd6652c083c9edb53abc0bad52 + ref: + type: string + example: feature-branch + status: + type: string + example: success + source: + type: string + example: push + created_at: + type: string + format: date-time + example: '2022-10-21T16:49:48.000+02:00' + updated_at: + type: string + format: date-time + example: '2022-10-21T16:49:48.000+02:00' + web_url: + type: string + example: https://gitlab.example.com/gitlab-org/gitlab-foss/-/pipelines/61 + user: + "$ref": "#/definitions/API_Entities_UserBasic" + description: API_Entities_Package_Pipeline model + API_Entities_PackageVersion: + type: object + properties: + id: + type: string + version: + type: string + created_at: + type: string + tags: + type: string + pipeline: + "$ref": "#/definitions/API_Entities_Package_Pipeline" + postApiV4GroupsIdPlaceholderReassignments: + type: object + properties: + file: + type: file + description: The CSV file containing the reassignments + required: + - file + API_Entities_Ci_Variable: + type: object + properties: + variable_type: + type: string + example: env_var + key: + type: string + example: TEST_VARIABLE_1 + value: + type: string + example: TEST_1 + hidden: + type: boolean + protected: + type: boolean + masked: + type: boolean + raw: + type: boolean + environment_scope: + type: string + example: "*" + description: + type: string + example: This variable is being used for ... + description: API_Entities_Ci_Variable model + postApiV4GroupsIdVariables: + type: object + properties: + key: + type: string + description: |- + The ID of a group or URL-encoded path of the group owned by the + authenticated user + value: + type: string + description: The value of a variable + protected: + type: string + description: Whether the variable is protected + masked_and_hidden: + type: string + description: Whether the variable is masked and hidden + masked: + type: string + description: Whether the variable is masked + raw: + type: string + description: Whether the variable will be expanded + variable_type: + type: string + description: 'The type of the variable. Default: env_var' + enum: + - env_var + - file + environment_scope: + type: string + description: The environment scope of the variable + description: + type: string + description: The description of the variable + required: + - key + - value + description: Create a new variable in a group + putApiV4GroupsIdVariablesKey: + type: object + properties: + value: + type: string + description: The value of a variable + protected: + type: string + description: Whether the variable is protected + masked: + type: string + description: Whether the variable is masked + raw: + type: string + description: Whether the variable will be expanded + variable_type: + type: string + description: 'The type of the variable. Default: env_var' + enum: + - env_var + - file + environment_scope: + type: string + description: The environment scope of the variable + description: + type: string + description: The description of the variable + description: Update an existing variable from a group + API_Entities_IntegrationBasic: + type: object + properties: + id: + type: integer + format: int32 + example: 75 + title: + type: string + example: Jenkins CI + slug: + type: integer + format: int32 + example: jenkins + created_at: + type: string + format: date-time + example: '2019-11-20T11:20:25.297Z' + updated_at: + type: string + format: date-time + example: '2019-11-20T12:24:37.498Z' + active: + type: boolean + commit_events: + type: boolean + push_events: + type: boolean + issues_events: + type: boolean + incident_events: + type: boolean + alert_events: + type: boolean + confidential_issues_events: + type: boolean + merge_requests_events: + type: boolean + tag_push_events: + type: boolean + deployment_events: + type: boolean + note_events: + type: boolean + confidential_note_events: + type: boolean + pipeline_events: + type: boolean + wiki_page_events: + type: boolean + job_events: + type: boolean + comment_on_event_enabled: + type: boolean + inherited: + type: boolean + vulnerability_events: + type: boolean + description: API_Entities_IntegrationBasic model + putApiV4GroupsIdIntegrationsAppleAppStore: + type: object + properties: + app_store_issuer_id: + type: string + description: Apple App Store Connect issuer ID. + app_store_key_id: + type: string + description: Apple App Store Connect key ID. + app_store_private_key_file_name: + type: string + description: Apple App Store Connect private key file name. + app_store_private_key: + type: string + description: Apple App Store Connect private key. + app_store_protected_refs: + type: boolean + description: Set variables on protected branches and tags only. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - app_store_issuer_id + - app_store_key_id + - app_store_private_key_file_name + - app_store_private_key + description: Create/Edit Apple App Store integration + putApiV4GroupsIdIntegrationsAsana: + type: object + properties: + api_key: + type: string + description: User API token. The user must have access to the task. All comments + are attributed to this user. + restrict_to_branch: + type: string + description: Comma-separated list of branches to be automatically inspected. + Leave blank to include all branches. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - api_key + description: Create/Edit Asana integration + putApiV4GroupsIdIntegrationsAssembla: + type: object + properties: + token: + type: string + description: The authentication token. + subdomain: + type: string + description: The subdomain setting. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Assembla integration + putApiV4GroupsIdIntegrationsBamboo: + type: object + properties: + enable_ssl_verification: + type: boolean + description: Enable SSL verification. Defaults to `true` (enabled). + bamboo_url: + type: string + description: Bamboo root URL (for example, `https://bamboo.example.com`). + build_key: + type: string + description: Bamboo build plan key (for example, `KEY`). + username: + type: string + description: User with API access to the Bamboo server. + password: + type: string + description: Password of the user. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - bamboo_url + - build_key + - username + - password + description: Create/Edit Bamboo integration + putApiV4GroupsIdIntegrationsBugzilla: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + new_issue_url: + type: string + description: URL of the new issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + - new_issue_url + description: Create/Edit Bugzilla integration + putApiV4GroupsIdIntegrationsBuildkite: + type: object + properties: + project_url: + type: string + description: Pipeline URL (for example, `https://buildkite.com/example/pipeline`). + token: + type: string + description: Token you get after you create a Buildkite pipeline with a GitLab + repository. + enable_ssl_verification: + type: boolean + description: 'DEPRECATED: This parameter has no effect because SSL verification + is always enabled.' + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - token + description: Create/Edit Buildkite integration + putApiV4GroupsIdIntegrationsCampfire: + type: object + properties: + token: + type: string + description: API authentication token from Campfire. To get the token, sign + in to Campfire and select **My info**. + subdomain: + type: string + description: "`.campfirenow.com` subdomain when you're signed in." + room: + type: string + description: ID portion of the Campfire room URL. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Campfire integration + putApiV4GroupsIdIntegrationsConfluence: + type: object + properties: + confluence_url: + type: string + description: URL of the Confluence Workspace hosted on `atlassian.net`. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - confluence_url + description: Create/Edit Confluence integration + putApiV4GroupsIdIntegrationsCustomIssueTracker: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + new_issue_url: + type: string + description: URL of the new issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + - new_issue_url + description: Create/Edit Custom Issue Tracker integration + putApiV4GroupsIdIntegrationsDatadog: + type: object + properties: + datadog_site: + type: string + description: Datadog site to send data to. Learn more about Datadog sites + in the documentation. + api_url: + type: string + description: Full URL of your Datadog site. Only required if you do not use + a standard Datadog site. + api_key: + type: string + description: API + key used for authentication with Datadog. + datadog_ci_visibility: + type: boolean + description: Enable CI Visibility + archive_trace_events: + type: boolean + description: When enabled, job logs are collected by Datadog and displayed + along with pipeline execution traces. + datadog_service: + type: string + description: Tag all pipeline data from this GitLab instance in Datadog. Can + be used when managing several self-managed deployments. + datadog_env: + type: string + description: For self-managed deployments, `env` tag for all the data sent + to Datadog. + datadog_tags: + type: string + description: Custom tags in Datadog. Specify one tag per line in the format + `key:value\nkey2:value2`. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + build_events: + type: boolean + description: Trigger event when a build is created. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + subgroup_events: + type: boolean + project_events: + type: boolean + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - api_key + description: Create/Edit Datadog integration + putApiV4GroupsIdIntegrationsDiffblueCover: + type: object + properties: + diffblue_license_key: + type: string + description: Diffblue Cover license key. + diffblue_access_token_name: + type: string + description: Access token name used by Diffblue Cover in pipelines. + diffblue_access_token_secret: + type: string + description: Access token secret used by Diffblue Cover in pipelines. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - diffblue_license_key + - diffblue_access_token_name + - diffblue_access_token_secret + description: Create/Edit Diffblue Cover integration + putApiV4GroupsIdIntegrationsDiscord: + type: object + properties: + webhook: + type: string + description: Discord webhook (for example, `https://discord.com/api/webhooks/…`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_channel: + type: string + description: The name of the channel to receive push_events notifications + issue_channel: + type: string + description: The name of the channel to receive issues_events notifications + incident_channel: + type: string + description: The name of the channel to receive incident_events notifications + alert_channel: + type: string + description: The name of the channel to receive alert_events notifications + confidential_issue_channel: + type: string + description: The name of the channel to receive confidential_issues_events + notifications + merge_request_channel: + type: string + description: The name of the channel to receive merge_requests_events notifications + note_channel: + type: string + description: The name of the channel to receive note_events notifications + confidential_note_channel: + type: string + description: The name of the channel to receive confidential_note_events notifications + tag_push_channel: + type: string + description: The name of the channel to receive tag_push_events notifications + deployment_channel: + type: string + description: The name of the channel to receive deployment_events notifications + pipeline_channel: + type: string + description: The name of the channel to receive pipeline_events notifications + wiki_page_channel: + type: string + description: The name of the channel to receive wiki_page_events notifications + vulnerability_channel: + type: string + description: The name of the channel to receive vulnerability_events notifications + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + deployment_events: + type: boolean + description: Trigger event when a deployment starts or finishes. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Discord integration + putApiV4GroupsIdIntegrationsDroneCi: + type: object + properties: + enable_ssl_verification: + type: boolean + description: Enable SSL verification. Defaults to `true` (enabled). + drone_url: + type: string + description: Drone CI URL (for example, `http://drone.example.com`). + token: + type: string + description: Drone CI token. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - drone_url + - token + description: Create/Edit Drone Ci integration + putApiV4GroupsIdIntegrationsEmailsOnPush: + type: object + properties: + send_from_committer_email: + type: boolean + description: Send from committer + disable_diffs: + type: boolean + description: Disable code diffs + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + recipients: + type: string + description: Emails separated by whitespace. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - recipients + description: Create/Edit Emails On Push integration + putApiV4GroupsIdIntegrationsExternalWiki: + type: object + properties: + external_wiki_url: + type: string + description: URL of the external wiki. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - external_wiki_url + description: Create/Edit External Wiki integration + putApiV4GroupsIdIntegrationsGitlabSlackApplication: + type: object + properties: + channel: + type: string + description: Default channel to use if no other channel is configured. + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + labels_to_be_notified: + type: string + description: Labels to send notifications for. Leave blank to receive notifications + for all events. + labels_to_be_notified_behavior: + type: string + description: Labels to be notified for. Valid options are `match_any` and + `match_all`. The default value is `match_any`. + push_channel: + type: string + description: The name of the channel to receive push_events notifications + issue_channel: + type: string + description: The name of the channel to receive issues_events notifications + incident_channel: + type: string + description: The name of the channel to receive incident_events notifications + alert_channel: + type: string + description: The name of the channel to receive alert_events notifications + confidential_issue_channel: + type: string + description: The name of the channel to receive confidential_issues_events + notifications + merge_request_channel: + type: string + description: The name of the channel to receive merge_requests_events notifications + note_channel: + type: string + description: The name of the channel to receive note_events notifications + confidential_note_channel: + type: string + description: The name of the channel to receive confidential_note_events notifications + tag_push_channel: + type: string + description: The name of the channel to receive tag_push_events notifications + deployment_channel: + type: string + description: The name of the channel to receive deployment_events notifications + pipeline_channel: + type: string + description: The name of the channel to receive pipeline_events notifications + wiki_page_channel: + type: string + description: The name of the channel to receive wiki_page_events notifications + vulnerability_channel: + type: string + description: The name of the channel to receive vulnerability_events notifications + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + deployment_events: + type: boolean + description: Trigger event when a deployment starts or finishes. + incident_events: + type: boolean + description: Trigger event when an incident is created. + vulnerability_events: + type: boolean + alert_events: + type: boolean + description: Trigger event when a new, unique alert is recorded. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + description: Create/Edit Gitlab Slack Application integration + putApiV4GroupsIdIntegrationsGooglePlay: + type: object + properties: + package_name: + type: string + description: Package name of the app in Google Play. + service_account_key_file_name: + type: string + description: File name of the Google Play service account key. + service_account_key: + type: string + description: Google Play service account key. + google_play_protected_refs: + type: boolean + description: Set variables on protected branches and tags only. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - package_name + - service_account_key_file_name + - service_account_key + description: Create/Edit Google Play integration + putApiV4GroupsIdIntegrationsHangoutsChat: + type: object + properties: + webhook: + type: string + description: The Hangouts Chat webhook (for example, `https://chat.googleapis.com/v1/spaces...`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Hangouts Chat integration + putApiV4GroupsIdIntegrationsHarbor: + type: object + properties: + url: + type: string + description: The base URL to the Harbor instance linked to the GitLab project. + For example, `https://demo.goharbor.io`. + project_name: + type: string + description: The name of the project in the Harbor instance. For example, + `testproject`. + username: + type: string + description: The username created in the Harbor interface. + password: + type: string + description: The password of the user. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - url + - project_name + - username + - password + description: Create/Edit Harbor integration + putApiV4GroupsIdIntegrationsIrker: + type: object + properties: + server_host: + type: string + description: irker daemon hostname. The default value is `localhost`. + server_port: + type: integer + format: int32 + description: irker daemon port. The default value is `6659`. + default_irc_uri: + type: string + description: URI to add before each recipient. The default value is `irc://irc.network.net:6697/`. + recipients: + type: string + description: Comma-separated list of channels or email addresses. + colorize_messages: + type: boolean + description: Colorize messages + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - recipients + description: Create/Edit Irker integration + putApiV4GroupsIdIntegrationsJenkins: + type: object + properties: + enable_ssl_verification: + type: boolean + description: Enable SSL verification. Defaults to `true` (enabled). + jenkins_url: + type: string + description: URL of the Jenkins server. + project_name: + type: string + description: Name of the Jenkins project. + username: + type: string + description: Username of the Jenkins server. + password: + type: string + description: Password of the Jenkins server. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - jenkins_url + - project_name + description: Create/Edit Jenkins integration + putApiV4GroupsIdIntegrationsJira: + type: object + properties: + url: + type: string + description: The URL to the Jira project which is being linked to this GitLab + project (for example, `https://jira.example.com`). + api_url: + type: string + description: The base URL to the Jira instance API. Web URL value is used + if not set (for example, `https://jira-api.example.com`). + jira_auth_type: + type: integer + format: int32 + description: The authentication method to use with Jira. Use `0` for Basic + Authentication, and `1` for Jira personal access token. Defaults to `0`. + username: + type: string + description: The email or username to use with Jira. Use an email for Jira + Cloud, and a username for Jira Data Center and Jira Server. Required when + using Basic Authentication (`jira_auth_type` is `0`). + password: + type: string + description: The Jira API token, password, or personal access token to use + with Jira. When using Basic Authentication (`jira_auth_type` is `0`), use + an API token for Jira Cloud, and a password for Jira Data Center or Jira + Server. For a Jira personal access token (`jira_auth_type` is `1`), use + the personal access token. + jira_issue_regex: + type: string + description: Regular expression to match Jira issue keys. + jira_issue_prefix: + type: string + description: Prefix to match Jira issue keys. + jira_issue_transition_id: + type: string + description: The ID of one or more transitions for [custom issue transitions](../integration/jira/issues.md#custom-issue-transitions).Ignored + when `jira_issue_transition_automatic` is enabled. Defaults to a blank string,which + disables custom transitions. + issues_enabled: + type: string + description: Enable viewing Jira issues in GitLab. + project_keys: + type: array + description: Keys of Jira projects. When `issues_enabled` is `true`, this + setting specifies which Jira projects to view issues from in GitLab. + items: + type: string + vulnerabilities_enabled: + type: boolean + description: Turn on Jira issue creation for GitLab vulnerabilities. + vulnerabilities_issuetype: + type: string + description: Jira issue type to use when creating issues from vulnerabilities. + project_key: + type: string + description: Key of the project to use when creating issues from vulnerabilities.This + parameter is required if using the integration to create Jira issues from + vulnerabilities. + customize_jira_issue_enabled: + type: boolean + description: When set to `true`, opens a prefilled form on the Jira instancewhen + creating a Jira issue from a vulnerability. + commit_events: + type: boolean + description: Trigger event when a commit is created or updated. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - url + - password + description: Create/Edit Jira integration + putApiV4GroupsIdIntegrationsJiraCloudApp: + type: object + properties: + jira_cloud_app_service_ids: + type: string + description: Copy and paste your JSM Service ID here. Use comma (,) to separate + multiple IDs. + jira_cloud_app_enable_deployment_gating: + type: boolean + description: Enable to approve or reject blocked GitLab deployments from Jira + Service Management. + jira_cloud_app_deployment_gating_environments: + type: string + description: Enter the environment (production,staging,testing,development) + where you want to enable deployment gating. Use comma (,) to separate multiple + environments. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + description: Create/Edit Jira Cloud App integration + putApiV4GroupsIdIntegrationsMatrix: + type: object + properties: + hostname: + type: string + description: Custom hostname of the Matrix server. The default value is `https://matrix-client.matrix.org`. + token: + type: string + description: The Matrix access token (for example, `syt-zyx57W2v1u123ew11`). + room: + type: string + description: Unique identifier for the target room (in the format `!qPKKM111FFKKsfoCVy:matrix.org`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + incident_events: + type: boolean + description: Trigger event when an incident is created. + vulnerability_events: + type: boolean + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + - room + description: Create/Edit Matrix integration + putApiV4GroupsIdIntegrationsMattermostSlashCommands: + type: object + properties: + token: + type: string + description: The Mattermost token. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Mattermost Slash Commands integration + putApiV4GroupsIdIntegrationsSlackSlashCommands: + type: object + properties: + token: + type: string + description: The Slack token. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Slack Slash Commands integration + putApiV4GroupsIdIntegrationsPackagist: + type: object + properties: + username: + type: string + description: Username of a Packagist account. + token: + type: string + description: API token of the Packagist server. + server: + type: string + description: URL of the Packagist server. The default value is `https://packagist.org`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - username + - token + description: Create/Edit Packagist integration + putApiV4GroupsIdIntegrationsPhorge: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + description: Create/Edit Phorge integration + putApiV4GroupsIdIntegrationsPipelinesEmail: + type: object + properties: + recipients: + type: string + description: Comma-separated list of recipient email addresses. + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + notify_only_default_branch: + type: boolean + description: Send notifications for the default branch. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - recipients + description: Create/Edit Pipelines Email integration + putApiV4GroupsIdIntegrationsPivotaltracker: + type: object + properties: + token: + type: string + description: The Pivotal Tracker token. + restrict_to_branch: + type: string + description: Comma-separated list of branches to automatically inspect. Leave + blank to include all branches. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Pivotaltracker integration + putApiV4GroupsIdIntegrationsPumble: + type: object + properties: + webhook: + type: string + description: The Pumble webhook (for example, `https://api.pumble.com/workspaces/x/...`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Pumble integration + putApiV4GroupsIdIntegrationsPushover: + type: object + properties: + api_key: + type: string + description: The application key. + user_key: + type: string + description: The user key. + device: + type: string + description: Leave blank for all active devices. + priority: + type: string + description: The priority. + sound: + type: string + description: The sound of the notification. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - api_key + - user_key + - priority + description: Create/Edit Pushover integration + putApiV4GroupsIdIntegrationsRedmine: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + new_issue_url: + type: string + description: URL of the new issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + - new_issue_url + description: Create/Edit Redmine integration + putApiV4GroupsIdIntegrationsEwm: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + new_issue_url: + type: string + description: URL of the new issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + - new_issue_url + description: Create/Edit Ewm integration + putApiV4GroupsIdIntegrationsYoutrack: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + description: Create/Edit Youtrack integration + putApiV4GroupsIdIntegrationsClickup: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + description: Create/Edit Clickup integration + putApiV4GroupsIdIntegrationsSlack: + type: object + properties: + webhook: + type: string + description: Slack notifications webhook (for example, `https://hooks.slack.com/services/...`). + username: + type: string + description: Slack notifications username. + channel: + type: string + description: Default channel to use if no other channel is configured. + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + labels_to_be_notified: + type: string + description: Labels to send notifications for. Leave blank to receive notifications + for all events. + labels_to_be_notified_behavior: + type: string + description: Labels to be notified for. Valid options are `match_any` and + `match_all`. The default value is `match_any`. + push_channel: + type: string + description: The name of the channel to receive push_events notifications + issue_channel: + type: string + description: The name of the channel to receive issues_events notifications + incident_channel: + type: string + description: The name of the channel to receive incident_events notifications + alert_channel: + type: string + description: The name of the channel to receive alert_events notifications + confidential_issue_channel: + type: string + description: The name of the channel to receive confidential_issues_events + notifications + merge_request_channel: + type: string + description: The name of the channel to receive merge_requests_events notifications + note_channel: + type: string + description: The name of the channel to receive note_events notifications + confidential_note_channel: + type: string + description: The name of the channel to receive confidential_note_events notifications + tag_push_channel: + type: string + description: The name of the channel to receive tag_push_events notifications + deployment_channel: + type: string + description: The name of the channel to receive deployment_events notifications + pipeline_channel: + type: string + description: The name of the channel to receive pipeline_events notifications + wiki_page_channel: + type: string + description: The name of the channel to receive wiki_page_events notifications + vulnerability_channel: + type: string + description: The name of the channel to receive vulnerability_events notifications + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + deployment_events: + type: boolean + description: Trigger event when a deployment starts or finishes. + incident_events: + type: boolean + description: Trigger event when an incident is created. + vulnerability_events: + type: boolean + alert_events: + type: boolean + description: Trigger event when a new, unique alert is recorded. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Slack integration + putApiV4GroupsIdIntegrationsMicrosoftTeams: + type: object + properties: + webhook: + type: string + description: The Microsoft Teams webhook (for example, `https://outlook.office.com/webhook/...`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Microsoft Teams integration + putApiV4GroupsIdIntegrationsMattermost: + type: object + properties: + webhook: + type: string + description: Mattermost notifications webhook (for example, `http://mattermost.example.com/hooks/...`). + username: + type: string + description: Mattermost notifications username. + channel: + type: string + description: Default channel to use if no other channel is configured. + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + labels_to_be_notified: + type: string + description: Labels to send notifications for. Leave blank to receive notifications + for all events. + labels_to_be_notified_behavior: + type: string + description: Labels to be notified for. Valid options are `match_any` and + `match_all`. The default value is `match_any`. + push_channel: + type: string + description: The name of the channel to receive push_events notifications + issue_channel: + type: string + description: The name of the channel to receive issues_events notifications + incident_channel: + type: string + description: The name of the channel to receive incident_events notifications + alert_channel: + type: string + description: The name of the channel to receive alert_events notifications + confidential_issue_channel: + type: string + description: The name of the channel to receive confidential_issues_events + notifications + merge_request_channel: + type: string + description: The name of the channel to receive merge_requests_events notifications + note_channel: + type: string + description: The name of the channel to receive note_events notifications + confidential_note_channel: + type: string + description: The name of the channel to receive confidential_note_events notifications + tag_push_channel: + type: string + description: The name of the channel to receive tag_push_events notifications + deployment_channel: + type: string + description: The name of the channel to receive deployment_events notifications + pipeline_channel: + type: string + description: The name of the channel to receive pipeline_events notifications + wiki_page_channel: + type: string + description: The name of the channel to receive wiki_page_events notifications + vulnerability_channel: + type: string + description: The name of the channel to receive vulnerability_events notifications + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + deployment_events: + type: boolean + description: Trigger event when a deployment starts or finishes. + incident_events: + type: boolean + description: Trigger event when an incident is created. + vulnerability_events: + type: boolean + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Mattermost integration + putApiV4GroupsIdIntegrationsTeamcity: + type: object + properties: + enable_ssl_verification: + type: boolean + description: Enable SSL verification. Defaults to `true` (enabled). + teamcity_url: + type: string + description: TeamCity root URL (for example, `https://teamcity.example.com`). + build_type: + type: string + description: The build configuration ID of the TeamCity project. + username: + type: string + description: A user with permissions to trigger a manual build. + password: + type: string + description: The password of the user. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - teamcity_url + - build_type + - username + - password + description: Create/Edit Teamcity integration + putApiV4GroupsIdIntegrationsTelegram: + type: object + properties: + hostname: + type: string + description: Custom hostname of the Telegram API. The default value is `https://api.telegram.org`. + token: + type: string + description: The Telegram bot token (for example, `123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11`). + room: + type: string + description: Unique identifier for the target chat or the username of the + target channel (in the format `@channelusername`). + thread: + type: string + description: Unique identifier for the target message thread (topic in a forum + supergroup). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + incident_events: + type: boolean + description: Trigger event when an incident is created. + vulnerability_events: + type: boolean + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + - room + description: Create/Edit Telegram integration + putApiV4GroupsIdIntegrationsUnifyCircuit: + type: object + properties: + webhook: + type: string + description: The Unify Circuit webhook (for example, `https://circuit.com/rest/v2/webhooks/incoming/...`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Unify Circuit integration + putApiV4GroupsIdIntegrationsWebexTeams: + type: object + properties: + webhook: + type: string + description: The Webex Teams webhook. For example, https://api.ciscospark.com/v1/webhooks/incoming/... + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Webex Teams integration + putApiV4GroupsIdIntegrationsZentao: + type: object + properties: + url: + type: string + description: Base URL of the ZenTao instance. + api_url: + type: string + description: If different from Web URL. + api_token: + type: string + zentao_product_xid: + type: string + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - url + - api_token + - zentao_product_xid + description: Create/Edit Zentao integration + putApiV4GroupsIdIntegrationsSquashTm: + type: object + properties: + url: + type: string + description: URL of the Squash TM webhook. + token: + type: string + description: Secret token. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - url + description: Create/Edit Squash Tm integration + putApiV4GroupsIdIntegrationsGithub: + type: object + properties: + token: + type: string + description: GitHub API token with `repo:status` OAuth scope. + repository_url: + type: string + description: GitHub repository URL. + static_context: + type: boolean + description: Append the hostname of your GitLab instance to the status check + name. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + - repository_url + description: Create/Edit Github integration + putApiV4GroupsIdIntegrationsGitGuardian: + type: object + properties: + token: + type: string + description: Personal access token to authenticate calls to the GitGuardian + API. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Git Guardian integration + putApiV4GroupsIdIntegrationsGoogleCloudPlatformArtifactRegistry: + type: object + properties: + artifact_registry_project_id: + type: string + description: ID of the Google Cloud project. + artifact_registry_repositories: + type: string + description: Repository of Artifact Registry. + artifact_registry_location: + type: string + description: Location of the Artifact Registry repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - artifact_registry_project_id + - artifact_registry_repositories + - artifact_registry_location + description: Create/Edit Google Cloud Platform Artifact Registry integration + putApiV4GroupsIdIntegrationsGoogleCloudPlatformWorkloadIdentityFederation: + type: object + properties: + workload_identity_federation_project_id: + type: string + description: Google Cloud project ID for the Workload Identity Federation. + workload_identity_federation_project_number: + type: string + description: Google Cloud project number for the Workload Identity Federation. + workload_identity_pool_id: + type: string + description: ID of the Workload Identity Pool. + workload_identity_pool_provider_id: + type: string + description: ID of the Workload Identity Pool provider. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - workload_identity_federation_project_id + - workload_identity_federation_project_number + - workload_identity_pool_id + - workload_identity_pool_provider_id + description: Create/Edit Google Cloud Platform Workload Identity Federation integration + putApiV4GroupsIdIntegrationsMockCi: + type: object + properties: + enable_ssl_verification: + type: boolean + description: Enable SSL verification. Defaults to `true` (enabled). + mock_service_url: + type: string + description: URL of the Mock CI integration. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - mock_service_url + description: Create/Edit Mock Ci integration + putApiV4GroupsIdIntegrationsMockMonitoring: + type: object + properties: + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + description: Create/Edit Mock Monitoring integration + API_Entities_Integration: + type: object + properties: + id: + type: integer + format: int32 + example: 75 + title: + type: string + example: Jenkins CI + slug: + type: integer + format: int32 + example: jenkins + created_at: + type: string + format: date-time + example: '2019-11-20T11:20:25.297Z' + updated_at: + type: string + format: date-time + example: '2019-11-20T12:24:37.498Z' + active: + type: boolean + commit_events: + type: boolean + push_events: + type: boolean + issues_events: + type: boolean + incident_events: + type: boolean + alert_events: + type: boolean + confidential_issues_events: + type: boolean + merge_requests_events: + type: boolean + tag_push_events: + type: boolean + deployment_events: + type: boolean + note_events: + type: boolean + confidential_note_events: + type: boolean + pipeline_events: + type: boolean + wiki_page_events: + type: boolean + job_events: + type: boolean + comment_on_event_enabled: + type: boolean + inherited: + type: boolean + vulnerability_events: + type: boolean + properties: + type: object + example: + token: secr3t + description: API_Entities_Integration model + postApiV4GroupsIdInvitations: + type: object + properties: + access_level: + type: integer + format: int32 + description: 'A valid access level (defaults: `30`, developer access level)' + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + - 5 + email: + type: array + description: The email address to invite, or multiple emails separated by + comma + items: + type: string + user_id: + type: array + description: The user ID of the new member or multiple IDs separated by commas. + items: + type: string + expires_at: + type: string + format: date-time + description: Date string in the format YEAR-MONTH-DAY + invite_source: + type: string + description: Source that triggered the member creation process + default: invitations-api + member_role_id: + type: integer + format: int32 + description: The ID of a member role for the invited user + required: + - access_level + description: Invite non-members by email address to a group or project. + API_Entities_Invitation: + type: object + properties: + access_level: + type: string + created_at: + type: string + expires_at: + type: string + invite_email: + type: string + invite_token: + type: string + user_name: + type: string + created_by_name: + type: string + description: API_Entities_Invitation model + putApiV4GroupsIdInvitationsEmail: + type: object + properties: + access_level: + type: integer + format: int32 + description: 'A valid access level (defaults: `30`, developer access level)' + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + expires_at: + type: string + format: date-time + description: Date string in ISO 8601 format (`YYYY-MM-DDTHH:MM:SSZ`) + member_role_id: + type: integer + format: int32 + description: The ID of a member role for the invited user + description: Updates a group or project invitation. + API_Entities_MarkdownUploadAdmin: + type: object + properties: + id: + type: string + size: + type: string + filename: + type: string + created_at: + type: string + uploaded_by: + "$ref": "#/definitions/API_Entities_UserSafe" + description: API_Entities_MarkdownUploadAdmin model + API_Entities_UserSafe: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + username: + type: string + example: admin + public_email: + type: string + example: john@example.com + name: + type: string + example: Administrator + API_Entities_Member: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + username: + type: string + example: admin + public_email: + type: string + example: john@example.com + name: + type: string + example: Administrator + state: + type: string + example: active + locked: + type: boolean + avatar_url: + type: string + example: https://gravatar.com/avatar/1 + avatar_path: + type: string + example: "/user/avatar/28/The-Big-Lebowski-400-400.png" + custom_attributes: + type: array + items: + "$ref": "#/definitions/API_Entities_CustomAttribute" + web_url: + type: string + example: https://gitlab.example.com/root + access_level: + type: string + created_at: + type: string + created_by: + "$ref": "#/definitions/API_Entities_UserBasic" + expires_at: + type: string + group_saml_identity: + "$ref": "#/definitions/API_Entities_Identity" + email: + type: string + is_using_seat: + type: string + override: + type: string + membership_state: + type: string + member_role: + "$ref": "#/definitions/EE_API_Entities_MemberRole" + description: API_Entities_Member model + EE_API_Entities_MemberRole: + type: object + properties: + id: + type: integer + format: int32 + example: 2 + group_id: + type: integer + format: int32 + example: 2 + name: + type: text + example: Custom guest + description: + type: text + example: Guest user who can also read_code + base_access_level: + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 5 + example: 40 + admin_merge_request: + type: boolean + archive_project: + type: boolean + remove_group: + type: boolean + remove_project: + type: boolean + admin_security_labels: + type: boolean + manage_security_policy_link: + type: boolean + admin_compliance_framework: + type: boolean + admin_cicd_variables: + type: boolean + manage_deploy_tokens: + type: boolean + manage_group_access_tokens: + type: boolean + admin_group_member: + type: boolean + admin_integrations: + type: boolean + manage_merge_request_settings: + type: boolean + manage_project_access_tokens: + type: boolean + admin_protected_branch: + type: boolean + admin_protected_environments: + type: boolean + manage_protected_tags: + type: boolean + admin_push_rules: + type: boolean + admin_runners: + type: boolean + admin_security_testing: + type: boolean + admin_terraform_state: + type: boolean + admin_vulnerability: + type: boolean + admin_web_hook: + type: boolean + read_compliance_dashboard: + type: boolean + read_admin_cicd: + type: boolean + read_crm_contact: + type: boolean + read_dependency: + type: boolean + read_code: + type: boolean + read_runners: + type: boolean + read_admin_subscription: + type: boolean + read_admin_monitoring: + type: boolean + read_admin_users: + type: boolean + read_vulnerability: + type: boolean + postApiV4GroupsIdMembers: + type: object + properties: + access_level: + type: integer + format: int32 + description: A valid access level. + user_id: + type: integer + format: int32 + description: The user ID of the new member or multiple IDs separated by commas. + username: + type: string + description: The username of the new member or multiple usernames separated + by commas. + expires_at: + type: string + format: date-time + description: Date string in the format YEAR-MONTH-DAY + invite_source: + type: string + description: Source that triggered the member creation process + default: members-api + required: + - access_level + description: Adds a member to a group or project. + putApiV4GroupsIdMembersUserId: + type: object + properties: + access_level: + type: integer + format: int32 + description: A valid access level + expires_at: + type: string + format: date-time + description: Date string in the format YEAR-MONTH-DAY + member_role_id: + type: integer + format: int32 + description: The ID of the Member Role to be updated + required: + - access_level + description: Updates a member of a group or project. + putApiV4GroupsIdMembersUserIdState: + type: object + properties: + state: + type: string + description: The new state for the memberships of the user + enum: + - awaiting + - active + required: + - state + description: Changes the state of the memberships of a user in the group + EE_API_Entities_BillableMembership: + type: object + properties: + id: + type: string + source_id: + type: string + source_full_name: + type: string + source_members_url: + type: string + created_at: + type: string + expires_at: + type: string + access_level: + type: object + properties: + string_value: + type: string + integer_value: + type: string + custom_role: + type: string + description: EE_API_Entities_BillableMembership model + API_Entities_MergeRequestBasic: + type: object + properties: + id: + type: integer + format: int32 + example: 84 + iid: + type: integer + format: int32 + example: 14 + project_id: + type: integer + format: int32 + example: 4 + title: + type: string + example: Impedit et ut et dolores vero provident ullam est + description: + type: string + example: Repellendus impedit et vel velit dignissimos. + state: + type: string + example: closed + created_at: + type: string + format: date-time + example: '2022-08-17T12:46:35.053Z' + updated_at: + type: string + format: date-time + example: '2022-11-14T17:22:01.470Z' + merged_by: + "$ref": "#/definitions/API_Entities_UserBasic" + merge_user: + "$ref": "#/definitions/API_Entities_UserBasic" + merged_at: + type: string + closed_by: + "$ref": "#/definitions/API_Entities_UserBasic" + closed_at: + type: string + title_html: + type: string + description_html: + type: string + target_branch: + type: string + source_branch: + type: string + user_notes_count: + type: string + upvotes: + type: string + downvotes: + type: string + author: + "$ref": "#/definitions/API_Entities_UserBasic" + assignees: + "$ref": "#/definitions/API_Entities_UserBasic" + assignee: + "$ref": "#/definitions/API_Entities_UserBasic" + reviewers: + "$ref": "#/definitions/API_Entities_UserBasic" + source_project_id: + type: string + target_project_id: + type: string + labels: + type: string + draft: + type: string + imported: + type: string + imported_from: + type: string + example: bitbucket + work_in_progress: + type: string + milestone: + "$ref": "#/definitions/API_Entities_Milestone" + merge_when_pipeline_succeeds: + type: string + merge_status: + type: string + detailed_merge_status: + type: string + merge_after: + type: string + sha: + type: string + merge_commit_sha: + type: string + squash_commit_sha: + type: string + discussion_locked: + type: string + should_remove_source_branch: + type: string + force_remove_source_branch: + type: string + prepared_at: + type: string + allow_collaboration: + type: string + allow_maintainer_to_push: + type: string + reference: + type: string + references: + "$ref": "#/definitions/API_Entities_IssuableReferences" + web_url: + type: string + time_stats: + "$ref": "#/definitions/API_Entities_IssuableTimeStats" + squash: + type: string + squash_on_merge: + type: string + task_completion_status: + type: string + has_conflicts: + type: string + blocking_discussions_resolved: + type: string + approvals_before_merge: + type: string + description: API_Entities_MergeRequestBasic model + API_Entities_Milestone: + type: object + properties: + id: + type: string + iid: + type: string + project_id: + type: string + group_id: + type: string + title: + type: string + description: + type: string + state: + type: string + created_at: + type: string + updated_at: + type: string + due_date: + type: string + start_date: + type: string + expired: + type: string + web_url: + type: string + API_Entities_IssuableReferences: + type: object + properties: + short: + type: string + example: "&6" + relative: + type: string + example: "&6" + full: + type: string + example: test&6 + API_Entities_IssuableTimeStats: + type: object + properties: + time_estimate: + type: integer + format: int32 + example: 12600 + total_time_spent: + type: integer + format: int32 + example: 3600 + human_time_estimate: + type: string + example: 3h 30m + human_total_time_spent: + type: string + example: 1h + description: API_Entities_IssuableTimeStats model + API_Entities_NpmPackageTag: + type: object + properties: + dist_tags: + type: object + example: '{ "latest":"1.0.1" }' + description: API_Entities_NpmPackageTag model + putApiV4GroupsIdPackagesNpmPackage*packageNameDistTagsTag: + type: object + properties: + package_name: + type: string + description: Package name + required: + - package_name + description: Create or Update the given tag for the given NPM package and version + API_Entities_NpmPackage: + type: object + properties: + name: + type: string + example: my_package + versions: + type: object + example: |- + { + "1.0.0": { + "name": "my_package", + "version": "1.0.0", + "dist": { "shasum": "12345", "tarball": "https://..." } + } + } + dist-tags: + type: object + example: '{ "latest":"1.0.1" }' + description: API_Entities_NpmPackage model + API_Entities_Nuget_ServiceIndex: + type: object + properties: + version: + type: string + example: 1.3.0.17 + resources: + type: array + items: + type: object + example: '{ "@id": "https://gitlab.com/api/v4/projects/1/packages/nuget/query", + "@type": "SearchQueryService", "comment": "Filter and search for packages + by keyword."}' + description: API_Entities_Nuget_ServiceIndex model + API_Entities_Nuget_PackagesMetadata: + type: object + properties: + count: + type: integer + format: int32 + example: 1 + items: + type: array + items: + "$ref": "#/definitions/API_Entities_Nuget_PackagesMetadataItem" + description: API_Entities_Nuget_PackagesMetadata model + API_Entities_Nuget_PackagesMetadataItem: + type: object + properties: + "@id": + type: string + example: https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata/MyNuGetPkg/1.3.0.17.json + lower: + type: string + example: 1.3.0.17 + upper: + type: string + example: 1.3.0.17 + count: + type: integer + format: int32 + example: 1 + items: + type: array + items: + "$ref": "#/definitions/API_Entities_Nuget_PackageMetadata" + API_Entities_Nuget_PackageMetadata: + type: object + properties: + "@id": + type: string + example: https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata/MyNuGetPkg/1.3.0.17.json + packageContent: + type: string + example: https://gitlab.example.com/api/v4/projects/1/packages/nuget/download/MyNuGetPkg/1.3.0.17/helloworld.1.3.0.17.nupkg + catalogEntry: + "$ref": "#/definitions/API_Entities_Nuget_PackageMetadataCatalogEntry" + description: API_Entities_Nuget_PackageMetadata model + API_Entities_Nuget_PackageMetadataCatalogEntry: + type: object + properties: + "@id": + type: string + example: https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata/MyNuGetPkg/1.3.0.17.json + dependencyGroups: + type: array + items: + "$ref": "#/definitions/API_Entities_Nuget_DependencyGroup" + id: + type: string + example: MyNuGetPkg + version: + type: string + example: 1.3.0.17 + tags: + type: string + example: tag#1 tag#2 + packageContent: + type: string + example: https://gitlab.example.com/api/v4/projects/1/packages/nuget/download/MyNuGetPkg/1.3.0.17/helloworld.1.3.0.17.nupkg + authors: + type: string + example: Authors + description: + type: string + example: Description + summary: + type: string + example: Description + projectUrl: + type: string + example: http://sandbox.com/project + licenseUrl: + type: string + example: http://sandbox.com/license + iconUrl: + type: string + example: http://sandbox.com/icon + published: + type: string + example: '2023-05-08T17:23:25Z' + API_Entities_Nuget_DependencyGroup: + type: object + properties: + "@id": + type: string + example: http://gitlab.com/Sandbox.App/1.0.0.json#dependencygroup + "@type": + type: string + example: PackageDependencyGroup + targetFramework: + type: string + example: fwk test + dependencies: + type: array + items: + "$ref": "#/definitions/API_Entities_Nuget_Dependency" + API_Entities_Nuget_Dependency: + type: object + properties: + "@id": + type: string + example: http://gitlab.com/Sandbox.App/1.0.0.json#dependency + "@type": + type: string + example: PackageDependency + id: + type: string + example: Dependency + range: + type: string + example: 2.0.0 + API_Entities_Nuget_SearchResults: + type: object + properties: + totalHits: + type: integer + format: int32 + example: 1 + data: + type: array + items: + "$ref": "#/definitions/API_Entities_Nuget_SearchResult" + description: API_Entities_Nuget_SearchResults model + API_Entities_Nuget_SearchResult: + type: object + properties: + "@type": + type: string + example: Package + id: + type: string + example: MyNuGetPkg + title: + type: string + example: MyNuGetPkg + totalDownloads: + type: integer + format: int32 + example: 1 + verified: + type: boolean + version: + type: string + example: 1.3.0.17 + versions: + "$ref": "#/definitions/API_Entities_Nuget_SearchResultVersion" + tags: + type: string + example: tag#1 tag#2 + authors: + type: string + example: Authors + description: + type: string + example: Description + summary: + type: string + example: Description + projectUrl: + type: string + example: http://sandbox.com/project + licenseUrl: + type: string + example: http://sandbox.com/license + iconUrl: + type: string + example: http://sandbox.com/icon + API_Entities_Nuget_SearchResultVersion: + type: object + properties: + "@id": + type: string + example: https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata/MyNuGetPkg/1.3.0.17.json + version: + type: string + example: 1.3.0.17 + downloads: + type: integer + format: int32 + example: 1 + API_Entities_Release: + type: object + properties: + name: + type: string + example: Release v1.0 + tag_name: + type: string + example: v1.0 + description: + type: string + example: Finally released v1.0 + created_at: + type: string + format: date-time + example: '2019-01-03T01:56:19.539Z' + released_at: + type: string + format: date-time + example: '2019-01-03T01:56:19.539Z' + upcoming_release: + type: boolean + description_html: + type: string + author: + "$ref": "#/definitions/API_Entities_UserBasic" + commit: + "$ref": "#/definitions/API_Entities_Commit" + milestones: + "$ref": "#/definitions/API_Entities_MilestoneWithStats" + commit_path: + type: string + example: "/root/app/commit/588440f66559714280628a4f9799f0c4eb880a4a" + tag_path: + type: string + example: "/root/app/-/tags/v1.0" + assets: + type: object + properties: + count: + type: integer + format: int32 + example: 2 + sources: + "$ref": "#/definitions/API_Entities_Releases_Source" + links: + "$ref": "#/definitions/API_Entities_Releases_Link" + evidences: + "$ref": "#/definitions/API_Entities_Releases_Evidence" + _links: + type: object + properties: + closed_issues_url: + type: string + closed_merge_requests_url: + type: string + edit_url: + type: string + merged_merge_requests_url: + type: string + opened_issues_url: + type: string + opened_merge_requests_url: + type: string + self: + type: string + description: API_Entities_Release model + API_Entities_Commit: + type: object + properties: + id: + type: string + example: 2695effb5807a22ff3d138d593fd856244e155e7 + short_id: + type: string + example: 2695effb + created_at: + type: string + format: date-time + example: '2017-07-26T11:08:53.000+02:00' + parent_ids: + type: array + items: + type: string + example: 2a4b78934375d7f53875269ffd4f45fd83a84ebe + title: + type: string + example: Initial commit + message: + type: string + example: Initial commit + author_name: + type: string + example: John Smith + author_email: + type: string + example: john@example.com + authored_date: + type: string + format: date-time + example: '2012-05-28T04:42:42-07:00' + committer_name: + type: string + example: Jack Smith + committer_email: + type: string + example: jack@example.com + committed_date: + type: string + format: date-time + example: '2012-05-28T04:42:42-07:00' + trailers: + type: object + example: '{ "Merged-By": "Jane Doe janedoe@gitlab.com" }' + extended_trailers: + type: object + example: '{ "Signed-off-by": ["John Doe ", "Jane Doe "] + }' + web_url: + type: string + example: https://gitlab.example.com/janedoe/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746 + description: API_Entities_Commit model + API_Entities_MilestoneWithStats: + type: object + properties: + id: + type: string + iid: + type: string + project_id: + type: string + group_id: + type: string + title: + type: string + description: + type: string + state: + type: string + created_at: + type: string + updated_at: + type: string + due_date: + type: string + start_date: + type: string + expired: + type: string + web_url: + type: string + issue_stats: + type: object + properties: + total: + type: string + closed: + type: string + API_Entities_Releases_Source: + type: object + properties: + format: + type: string + example: zip + url: + type: string + example: https://gitlab.example.com/root/app/-/archive/v1.0/app-v1.0.zip + API_Entities_Releases_Link: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + name: + type: string + example: app-v1.0.dmg + url: + type: string + example: https://gitlab.example.com/root/app/-/jobs/688/artifacts/raw/bin/app-v1.0.dmg + direct_asset_url: + type: string + example: https://gitlab.example.com/root/app/-/releases/v1.0/downloads/app-v1.0.dmg + link_type: + type: string + example: other + description: API_Entities_Releases_Link model + API_Entities_Releases_Evidence: + type: object + properties: + sha: + type: string + example: 760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d + filepath: + type: string + example: https://gitlab.example.com/root/app/-/releases/v1.0/evidence.json + collected_at: + type: string + format: date-time + example: '2019-01-03T01:56:19.539Z' + postApiV4GroupsIdAccessTokensSelfRotate: + type: object + properties: + expires_at: + type: string + format: date + description: The expiration date of the token + example: '2021-01-31' + description: Rotate a resource access token + API_Entities_ResourceAccessTokenWithToken: + type: object + properties: + id: + type: integer + format: int32 + example: 2 + name: + type: string + example: John Doe + revoked: + type: boolean + created_at: + type: string + format: date-time + description: + type: string + example: Token to manage api + scopes: + type: array + example: + - api + user_id: + type: integer + format: int32 + example: 3 + last_used_at: + type: string + format: date-time + example: '2020-08-31T15:53:00.073Z' + active: + type: boolean + expires_at: + type: string + format: date-time + example: '2020-08-31T15:53:00.073Z' + access_level: + type: integer + format: int32 + enum: + - 10 + - 20 + - 30 + - 40 + - 50 + example: 40 + resource_type: + type: string + enum: + - project + - group + example: project + resource_id: + type: integer + format: int32 + example: 1234 + token: + type: string + description: API_Entities_ResourceAccessTokenWithToken model + API_Entities_WikiPageBasic: + type: object + properties: + format: + type: string + example: markdown + slug: + type: string + example: deploy + title: + type: string + example: deploy + wiki_page_meta_id: + type: integer + format: int32 + example: + wiki_page_meta_id: 123 + description: API_Entities_WikiPageBasic model + API_Entities_WikiPage: + type: object + properties: + format: + type: string + example: markdown + slug: + type: string + example: deploy + title: + type: string + example: deploy + wiki_page_meta_id: + type: integer + format: int32 + example: + wiki_page_meta_id: 123 + content: + type: string + example: Here is an instruction how to deploy this project. + encoding: + type: string + example: UTF-8 + front_matter: + type: object + example: + title: deploy + description: API_Entities_WikiPage model + postApiV4GroupsIdWikis: + type: object + properties: + title: + type: string + description: Title of a wiki page + front_matter: + type: object + properties: + title: + type: string + description: Front matter title of a wiki page + content: + type: string + description: Content of a wiki page + format: + type: string + description: Format of a wiki page. Available formats are markdown, rdoc, + asciidoc and org + enum: + - markdown + - rdoc + - asciidoc + - org + default: markdown + required: + - title + - content + description: Create a wiki page + putApiV4GroupsIdWikisSlug: + type: object + properties: + title: + type: string + description: Title of a wiki page + front_matter: + type: object + properties: + title: + type: string + description: Front matter title of a wiki page + content: + type: string + description: Content of a wiki page + format: + type: string + description: Format of a wiki page. Available formats are markdown, rdoc, + asciidoc and org + enum: + - markdown + - rdoc + - asciidoc + - org + default: markdown + description: Update a wiki page + postApiV4GroupsIdWikisAttachments: + type: object + properties: + file: + type: file + description: The attachment file to be uploaded + branch: + type: string + description: The name of the branch + required: + - file + description: Upload an attachment to the wiki repository + API_Entities_WikiAttachment: + type: object + properties: + file_name: + type: string + example: dk.png + file_path: + type: string + example: uploads/6a061c4cf9f1c28cb22c384b4b8d4e3c/dk.png + branch: + type: string + example: main + link: + type: object + properties: + url: + type: string + example: uploads/6a061c4cf9f1c28cb22c384b4b8d4e3c/dk.png + markdown: + type: string + example: "![dk](uploads/6a061c4cf9f1c28cb22c384b4b8d4e3c/dk.png)" + description: API_Entities_WikiAttachment model + putApiV4ProjectsIdAccessRequestsUserIdApprove: + type: object + properties: + access_level: + type: integer + format: int32 + description: 'A valid access level (defaults: `30`, the Developer role)' + default: 30 + description: Approves an access request for the given user. + API_Entities_MetricImage: + type: object + properties: + id: + type: integer + format: int32 + example: 23 + created_at: + type: string + format: date-time + example: '2020-11-13T00:06:18.084Z' + filename: + type: string + example: file.png + file_path: + type: string + example: "/uploads/-/system/alert_metric_image/file/23/file.png" + url: + type: string + example: https://example.com/metric + url_text: + type: string + example: An example metric + description: API_Entities_MetricImage model + postApiV4ProjectsIdIssuesIssueIidAwardEmoji: + type: object + properties: + name: + type: string + description: Name of the emoji without colons. + required: + - name + description: Add a new emoji reaction + postApiV4ProjectsIdIssuesIssueIidNotesNoteIdAwardEmoji: + type: object + properties: + name: + type: string + description: Name of the emoji without colons. + required: + - name + description: Add a new emoji reaction + postApiV4ProjectsIdMergeRequestsMergeRequestIidAwardEmoji: + type: object + properties: + name: + type: string + description: Name of the emoji without colons. + required: + - name + description: Add a new emoji reaction + postApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteIdAwardEmoji: + type: object + properties: + name: + type: string + description: Name of the emoji without colons. + required: + - name + description: Add a new emoji reaction + postApiV4ProjectsIdSnippetsSnippetIdAwardEmoji: + type: object + properties: + name: + type: string + description: Name of the emoji without colons. + required: + - name + description: Add a new emoji reaction + postApiV4ProjectsIdSnippetsSnippetIdNotesNoteIdAwardEmoji: + type: object + properties: + name: + type: string + description: Name of the emoji without colons. + required: + - name + description: Add a new emoji reaction + postApiV4ProjectsIdBadges: + type: object + properties: + link_url: + type: string + description: URL of the badge link + image_url: + type: string + description: URL of the badge image + name: + type: string + description: Name for the badge + required: + - link_url + - image_url + description: Adds a badge to a project. + putApiV4ProjectsIdBadgesBadgeId: + type: object + properties: + link_url: + type: string + description: URL of the badge link + image_url: + type: string + description: URL of the badge image + name: + type: string + description: Name for the badge + description: Updates a badge of a project. + API_Entities_Branch: + type: object + properties: + name: + type: string + example: master + commit: + "$ref": "#/definitions/API_Entities_Commit" + merged: + type: boolean + example: true + protected: + type: boolean + example: true + developers_can_push: + type: boolean + example: true + developers_can_merge: + type: boolean + example: true + can_push: + type: boolean + example: true + default: + type: boolean + example: true + web_url: + type: string + example: https://gitlab.example.com/Commit921/the-dude/-/tree/master + description: API_Entities_Branch model + putApiV4ProjectsIdRepositoryBranchesBranchProtect: + type: object + properties: + developers_can_push: + type: boolean + description: Flag if developers can push to that branch + developers_can_merge: + type: boolean + description: Flag if developers can merge to that branch + description: Protect a single branch + postApiV4ProjectsIdRepositoryBranches: + type: object + properties: + branch: + type: string + description: The name of the branch + ref: + type: string + description: Create branch from commit sha or existing branch + required: + - branch + - ref + description: Create branch + postApiV4ProjectsIdCatalogPublish: + type: object + properties: + version: + type: string + description: The version of the catalog resource / tag of the release to publish + metadata: + type: object + description: The metadata for the release + required: + - version + - metadata + description: Publish a new component project release as version to the CI/CD catalog + API_Entities_Ci_Catalog_Resources_Version: + type: object + properties: + catalog_url: + type: string + example: https://gitlab.example.com/explore/catalog/my-namespace/my-component-project + description: API_Entities_Ci_Catalog_Resources_Version model + API_Entities_Ci_Job: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + status: + type: string + example: waiting_for_resource + stage: + type: string + example: deploy + name: + type: string + example: deploy_to_production + ref: + type: string + example: main + tag: + type: boolean + coverage: + type: number + format: float + example: 98.29 + allow_failure: + type: boolean + created_at: + type: string + format: date-time + example: '2015-12-24T15:51:21.880Z' + started_at: + type: string + format: date-time + example: '2015-12-24T17:54:30.733Z' + finished_at: + type: string + format: date-time + example: '2015-12-24T17:54:31.198Z' + erased_at: + type: string + format: date-time + example: '2015-12-24T18:00:29.728Z' + duration: + type: number + format: float + example: 0.465 + description: Time spent running + queued_duration: + type: number + format: float + example: 0.123 + description: Time spent enqueued + user: + "$ref": "#/definitions/API_Entities_User" + commit: + "$ref": "#/definitions/API_Entities_Commit" + pipeline: + "$ref": "#/definitions/API_Entities_Ci_PipelineBasic" + failure_reason: + type: string + example: script_failure + web_url: + type: string + example: https://example.com/foo/bar/-/jobs/1 + project: + type: object + properties: + ci_job_token_scope_enabled: + type: string + example: false + artifacts_file: + "$ref": "#/definitions/API_Entities_Ci_JobArtifactFile" + artifacts: + type: array + items: + "$ref": "#/definitions/API_Entities_Ci_JobArtifact" + runner: + "$ref": "#/definitions/API_Entities_Ci_Runner" + runner_manager: + "$ref": "#/definitions/API_Entities_Ci_RunnerManager" + artifacts_expire_at: + type: string + format: date-time + example: '2016-01-19T09:05:50.355Z' + archived: + type: boolean + example: false + tag_list: + type: array + items: + type: string + example: + - ubuntu18 + - docker runner + description: API_Entities_Ci_Job model + API_Entities_User: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + username: + type: string + example: admin + public_email: + type: string + example: john@example.com + name: + type: string + example: Administrator + state: + type: string + example: active + locked: + type: boolean + avatar_url: + type: string + example: https://gravatar.com/avatar/1 + avatar_path: + type: string + example: "/user/avatar/28/The-Big-Lebowski-400-400.png" + custom_attributes: + type: array + items: + "$ref": "#/definitions/API_Entities_CustomAttribute" + web_url: + type: string + example: https://gitlab.example.com/root + created_at: + type: string + bio: + type: string + location: + type: string + linkedin: + type: string + twitter: + type: string + discord: + type: string + website_url: + type: string + github: + type: string + organization: + type: string + job_title: + type: string + pronouns: + type: string + bot: + type: string + work_information: + type: string + followers: + type: string + following: + type: string + is_followed: + type: string + local_time: + type: string + API_Entities_Ci_PipelineBasic: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + iid: + type: integer + format: int32 + example: 2 + project_id: + type: integer + format: int32 + example: 3 + sha: + type: string + example: 0ec9e58fdfca6cdd6652c083c9edb53abc0bad52 + ref: + type: string + example: feature-branch + status: + type: string + example: success + source: + type: string + example: push + created_at: + type: string + format: date-time + example: '2022-10-21T16:49:48.000+02:00' + updated_at: + type: string + format: date-time + example: '2022-10-21T16:49:48.000+02:00' + web_url: + type: string + example: https://gitlab.example.com/gitlab-org/gitlab-foss/-/pipelines/61 + description: API_Entities_Ci_PipelineBasic model + API_Entities_Ci_JobArtifactFile: + type: object + properties: + filename: + type: string + example: artifacts.zip + size: + type: integer + format: int32 + example: 1000 + API_Entities_Ci_JobArtifact: + type: object + properties: + file_type: + type: string + enum: + - archive + - metadata + - trace + - junit + - sast + - dependency_scanning + - container_scanning + - dast + - codequality + - license_scanning + - performance + - metrics + - metrics_referee + - network_referee + - lsif + - dotenv + - cobertura + - terraform + - accessibility + - cluster_applications + - secret_detection + - requirements + - coverage_fuzzing + - browser_performance + - load_performance + - api_fuzzing + - cluster_image_scanning + - cyclonedx + - requirements_v2 + - annotations + - repository_xray + - jacoco + example: archive + size: + type: integer + format: int32 + example: 1000 + filename: + type: string + example: artifacts.zip + file_format: + type: string + enum: + - raw + - zip + - gzip + example: zip + API_Entities_Ci_RunnerManager: + type: object + properties: + id: + type: integer + format: int32 + example: 8 + system_id: + type: string + example: runner-1 + version: + type: string + example: 16.11.0 + revision: + type: string + example: 91a27b2a + platform: + type: string + example: linux + architecture: + type: string + example: amd64 + created_at: + type: string + example: '2023-10-24T01:27:06.549Z' + contacted_at: + type: string + example: '2023-10-24T01:27:06.549Z' + ip_address: + type: string + example: 127.0.0.1 + status: + type: string + example: online + job_execution_status: + type: string + enum: + - active + - idle + example: idle + description: API_Entities_Ci_RunnerManager model + postApiV4ProjectsIdJobsJobIdCancel: + type: object + properties: + force: + type: boolean + description: Force cancellation for a job with a state of `canceling` + example: true + description: Cancel a specific job of a project + postApiV4ProjectsIdJobsJobIdPlay: + type: object + properties: + job_variables_attributes: + type: array + description: User defined variables that will be included when running the + job + items: + type: object + properties: + key: + type: string + description: The name of the variable + example: foo + value: + type: string + description: The value of the variable + example: bar + required: + - key + - value + description: Trigger an actionable job (manual, delayed, etc) + API_Entities_Ci_JobBasic: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + status: + type: string + example: waiting_for_resource + stage: + type: string + example: deploy + name: + type: string + example: deploy_to_production + ref: + type: string + example: main + tag: + type: boolean + coverage: + type: number + format: float + example: 98.29 + allow_failure: + type: boolean + created_at: + type: string + format: date-time + example: '2015-12-24T15:51:21.880Z' + started_at: + type: string + format: date-time + example: '2015-12-24T17:54:30.733Z' + finished_at: + type: string + format: date-time + example: '2015-12-24T17:54:31.198Z' + erased_at: + type: string + format: date-time + example: '2015-12-24T18:00:29.728Z' + duration: + type: number + format: float + example: 0.465 + description: Time spent running + queued_duration: + type: number + format: float + example: 0.123 + description: Time spent enqueued + user: + "$ref": "#/definitions/API_Entities_User" + commit: + "$ref": "#/definitions/API_Entities_Commit" + pipeline: + "$ref": "#/definitions/API_Entities_Ci_PipelineBasic" + failure_reason: + type: string + example: script_failure + web_url: + type: string + example: https://example.com/foo/bar/-/jobs/1 + project: + type: object + properties: + ci_job_token_scope_enabled: + type: string + example: false + description: API_Entities_Ci_JobBasic model + API_Entities_Ci_ResourceGroup: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + key: + type: string + example: production + process_mode: + type: string + example: unordered + created_at: + type: string + format: date-time + example: '2021-09-01T08:04:59.650Z' + updated_at: + type: string + format: date-time + example: '2021-09-01T08:04:59.650Z' + description: API_Entities_Ci_ResourceGroup model + putApiV4ProjectsIdResourceGroupsKey: + type: object + properties: + process_mode: + type: string + description: The process mode of the resource group + enum: + - unordered + - oldest_first + - newest_first + - newest_ready_first + description: Edit an existing resource group + postApiV4ProjectsIdRunners: + type: object + properties: + runner_id: + type: integer + format: int32 + description: The ID of a runner + required: + - runner_id + description: Assign a runner to project + API_Entities_Ci_SecureFile: + type: object + properties: + id: + type: integer + format: int32 + example: 123 + name: + type: string + example: upload-keystore.jks + checksum: + type: string + example: 16630b189ab34b2e3504f4758e1054d2e478deda510b2b08cc0ef38d12e80aac + checksum_algorithm: + type: string + example: sha256 + created_at: + type: string + format: date-time + example: '2022-02-22T22:22:22.222Z' + expires_at: + type: string + format: date-time + example: '2023-09-21T14:55:59.000Z' + metadata: + type: object + example: + id: '75949910542696343243264405377658443914' + file_extension: + type: string + example: jks + description: API_Entities_Ci_SecureFile model + postApiV4ProjectsIdSecureFiles: + type: object + properties: + name: + type: string + description: |- + The name of the file being uploaded. The filename must be unique within + the project + file: + type: file + description: The secure file being uploaded + required: + - name + - file + description: Create a secure file + postApiV4ProjectsIdPipeline: + type: object + properties: + ref: + type: string + description: Reference + example: develop + variables: + type: array + description: Array of variables available in the pipeline + items: + type: object + properties: + key: + type: string + description: The key of the variable + example: UPLOAD_TO_S3 + value: + type: string + description: The value of the variable + example: 'true' + variable_type: + type: string + description: The type of variable, must be one of env_var or file. Defaults + to env_var + enum: + - env_var + - file + default: env_var + inputs: + type: object + description: The list of inputs to be used to create the pipeline. + required: + - ref + description: Create a new pipeline + API_Entities_Ci_Pipeline: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + iid: + type: integer + format: int32 + example: 2 + project_id: + type: integer + format: int32 + example: 3 + sha: + type: string + example: 0ec9e58fdfca6cdd6652c083c9edb53abc0bad52 + ref: + type: string + example: feature-branch + status: + type: string + example: success + source: + type: string + example: push + created_at: + type: string + format: date-time + example: '2015-12-24T15:51:21.880Z' + updated_at: + type: string + format: date-time + example: '2015-12-24T17:54:31.198Z' + web_url: + type: string + example: https://gitlab.example.com/gitlab-org/gitlab-foss/-/pipelines/61 + before_sha: + type: string + example: a91957a858320c0e17f3a0eca7cfacbff50ea29a + tag: + type: boolean + example: false + yaml_errors: + type: string + example: 'widgets:build: needs ''widgets:test''' + user: + "$ref": "#/definitions/API_Entities_UserBasic" + started_at: + type: string + format: date-time + example: '2015-12-24T17:54:30.733Z' + finished_at: + type: string + format: date-time + example: '2015-12-24T17:54:31.198Z' + committed_at: + type: string + format: date-time + example: '2015-12-24T15:51:21.880Z' + duration: + type: integer + format: int32 + example: 127 + description: Time spent running in seconds + queued_duration: + type: integer + format: int32 + example: 63 + description: Time spent enqueued in seconds + coverage: + type: number + format: float + example: 98.29 + detailed_status: + "$ref": "#/definitions/DetailedStatusEntity" + description: API_Entities_Ci_Pipeline model + DetailedStatusEntity: + type: object + properties: + icon: + type: string + example: status_success + text: + type: string + example: passed + label: + type: string + example: passed + group: + type: string + example: success + tooltip: + type: string + example: passed + has_details: + type: boolean + example: true + details_path: + type: string + example: "/test-group/test-project/-/pipelines/287" + illustration: + type: object + example: | + { + "image": "illustrations/empty-state/empty-job-not-triggered-md.svg", + "size": "", + "title": "This job has not been triggered yet", + "content": "This job depends on upstream jobs that need to succeed in order for this job to be triggered" + } + favicon: + type: string + example: "/assets/ci_favicons/favicon_status_success.png" + action: + type: object + properties: + icon: + type: string + example: cancel + title: + type: string + example: Cancel + path: + type: string + example: "/namespace1/project1/-/jobs/2/cancel" + method: + type: string + example: post + button_title: + type: string + example: Cancel this job + confirmation_message: + type: string + example: Are you sure? + API_Entities_Ci_PipelineWithMetadata: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + iid: + type: integer + format: int32 + example: 2 + project_id: + type: integer + format: int32 + example: 3 + sha: + type: string + example: 0ec9e58fdfca6cdd6652c083c9edb53abc0bad52 + ref: + type: string + example: feature-branch + status: + type: string + example: success + source: + type: string + example: push + created_at: + type: string + format: date-time + example: '2015-12-24T15:51:21.880Z' + updated_at: + type: string + format: date-time + example: '2015-12-24T17:54:31.198Z' + web_url: + type: string + example: https://gitlab.example.com/gitlab-org/gitlab-foss/-/pipelines/61 + before_sha: + type: string + example: a91957a858320c0e17f3a0eca7cfacbff50ea29a + tag: + type: boolean + example: false + yaml_errors: + type: string + example: 'widgets:build: needs ''widgets:test''' + user: + "$ref": "#/definitions/API_Entities_UserBasic" + started_at: + type: string + format: date-time + example: '2015-12-24T17:54:30.733Z' + finished_at: + type: string + format: date-time + example: '2015-12-24T17:54:31.198Z' + committed_at: + type: string + format: date-time + example: '2015-12-24T15:51:21.880Z' + duration: + type: integer + format: int32 + example: 127 + description: Time spent running in seconds + queued_duration: + type: integer + format: int32 + example: 63 + description: Time spent enqueued in seconds + coverage: + type: number + format: float + example: 98.29 + detailed_status: + "$ref": "#/definitions/DetailedStatusEntity" + name: + type: string + example: Build pipeline + description: API_Entities_Ci_PipelineWithMetadata model + API_Entities_Ci_Bridge: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + status: + type: string + example: waiting_for_resource + stage: + type: string + example: deploy + name: + type: string + example: deploy_to_production + ref: + type: string + example: main + tag: + type: boolean + coverage: + type: number + format: float + example: 98.29 + allow_failure: + type: boolean + created_at: + type: string + format: date-time + example: '2015-12-24T15:51:21.880Z' + started_at: + type: string + format: date-time + example: '2015-12-24T17:54:30.733Z' + finished_at: + type: string + format: date-time + example: '2015-12-24T17:54:31.198Z' + erased_at: + type: string + format: date-time + example: '2015-12-24T18:00:29.728Z' + duration: + type: number + format: float + example: 0.465 + description: Time spent running + queued_duration: + type: number + format: float + example: 0.123 + description: Time spent enqueued + user: + "$ref": "#/definitions/API_Entities_User" + commit: + "$ref": "#/definitions/API_Entities_Commit" + pipeline: + "$ref": "#/definitions/API_Entities_Ci_PipelineBasic" + failure_reason: + type: string + example: script_failure + web_url: + type: string + example: https://example.com/foo/bar/-/jobs/1 + project: + type: object + properties: + ci_job_token_scope_enabled: + type: string + example: false + downstream_pipeline: + "$ref": "#/definitions/API_Entities_Ci_PipelineBasic" + description: API_Entities_Ci_Bridge model + TestReportEntity: + type: object + properties: + total_time: + type: integer + format: int32 + example: 180 + total_count: + type: integer + format: int32 + example: 1 + success_count: + type: integer + format: int32 + example: 1 + failed_count: + type: integer + format: int32 + example: 0 + skipped_count: + type: integer + format: int32 + example: 0 + error_count: + type: integer + format: int32 + example: 0 + test_suites: + type: array + items: + "$ref": "#/definitions/TestSuiteEntity" + description: TestReportEntity model + TestSuiteEntity: + type: object + properties: + name: + type: string + example: test + total_time: + type: integer + format: int32 + example: 1904 + total_count: + type: integer + format: int32 + example: 3363 + success_count: + type: integer + format: int32 + example: 3351 + failed_count: + type: integer + format: int32 + example: 0 + skipped_count: + type: integer + format: int32 + example: 12 + error_count: + type: integer + format: int32 + example: 0 + suite_error: + type: string + example: 'JUnit XML parsing failed: 1:1: FATAL: Document is empty' + test_cases: + type: array + items: + "$ref": "#/definitions/TestCaseEntity" + TestCaseEntity: + type: object + properties: + status: + type: string + example: success + name: + type: string + example: Security Reports can create an auto-remediation MR + classname: + type: string + example: vulnerability_management_spec + file: + type: string + example: "./spec/test_spec.rb" + execution_time: + type: integer + format: int32 + example: 180 + system_output: + type: string + example: 'Failure/Error: is_expected.to eq(3)' + stack_trace: + type: string + example: 'Failure/Error: is_expected.to eq(3)' + recent_failures: + type: string + example: + count: 3 + base_branch: develop + attachment_url: + type: string + example: http://localhost/namespace1/project1/-/jobs/1/artifacts/file/some/path.png + TestReportSummaryEntity: + type: object + properties: + total: + type: integer + format: int32 + example: 3363 + test_suites: + "$ref": "#/definitions/TestSuiteSummaryEntity" + description: TestReportSummaryEntity model + TestSuiteSummaryEntity: + type: object + properties: + name: + type: string + example: test + total_time: + type: integer + format: int32 + example: 1904 + total_count: + type: integer + format: int32 + example: 3363 + success_count: + type: integer + format: int32 + example: 3351 + failed_count: + type: integer + format: int32 + example: 0 + skipped_count: + type: integer + format: int32 + example: 12 + error_count: + type: integer + format: int32 + example: 0 + suite_error: + type: string + example: 'JUnit XML parsing failed: 1:1: FATAL: Document is empty' + test_cases: + type: array + items: + "$ref": "#/definitions/TestCaseEntity" + build_ids: + type: array + items: + type: integer + format: int32 + example: + - 66004 + putApiV4ProjectsIdPipelinesPipelineIdMetadata: + type: object + properties: + name: + type: string + description: The name of the pipeline + example: Deployment to production + required: + - name + description: Updates pipeline metadata + API_Entities_Ci_PipelineSchedule: + type: object + properties: + id: + type: integer + format: int32 + example: 13 + description: + type: string + example: Test schedule pipeline + ref: + type: string + example: develop + cron: + type: string + example: "* * * * *" + cron_timezone: + type: string + example: Asia/Tokyo + next_run_at: + type: string + format: date-time + example: '2017-05-19T13:41:00.000Z' + active: + type: boolean + example: true + created_at: + type: string + format: date-time + example: '2017-05-19T13:31:08.849Z' + updated_at: + type: string + format: date-time + example: '2017-05-19T13:40:17.727Z' + owner: + "$ref": "#/definitions/API_Entities_UserBasic" + inputs: + "$ref": "#/definitions/API_Entities_Ci_Input" + description: API_Entities_Ci_PipelineSchedule model + API_Entities_Ci_Input: + type: object + properties: + name: + type: string + value: + type: string + API_Entities_Ci_PipelineScheduleDetails: + type: object + properties: + id: + type: integer + format: int32 + example: 13 + description: + type: string + example: Test schedule pipeline + ref: + type: string + example: develop + cron: + type: string + example: "* * * * *" + cron_timezone: + type: string + example: Asia/Tokyo + next_run_at: + type: string + format: date-time + example: '2017-05-19T13:41:00.000Z' + active: + type: boolean + example: true + created_at: + type: string + format: date-time + example: '2017-05-19T13:31:08.849Z' + updated_at: + type: string + format: date-time + example: '2017-05-19T13:40:17.727Z' + owner: + "$ref": "#/definitions/API_Entities_UserBasic" + inputs: + "$ref": "#/definitions/API_Entities_Ci_Input" + last_pipeline: + "$ref": "#/definitions/API_Entities_Ci_PipelineBasic" + variables: + "$ref": "#/definitions/API_Entities_Ci_Variable" + description: API_Entities_Ci_PipelineScheduleDetails model + postApiV4ProjectsIdPipelineSchedules: + type: object + properties: + description: + type: string + description: The description of pipeline schedule + example: Test schedule pipeline + ref: + type: string + description: The branch/tag name will be triggered + example: develop + cron: + type: string + description: The cron + example: "* * * * *" + cron_timezone: + type: string + description: The timezone + default: UTC + example: Asia/Tokyo + active: + type: boolean + description: The activation of pipeline schedule + default: true + example: true + inputs: + type: array + description: Inputs for the pipeline schedule + example: + - name: array_input + value: + - 1 + - 2 + - name: boolean_input + value: true + items: + type: object + properties: + name: + type: string + description: The name of the input + example: deploy_strategy + value: + type: string + description: The value of the input + example: blue-green + required: + - name + - value + required: + - description + - ref + - cron + description: Create a new pipeline schedule + putApiV4ProjectsIdPipelineSchedulesPipelineScheduleId: + type: object + properties: + description: + type: string + description: The description of pipeline schedule + example: Test schedule pipeline + ref: + type: string + description: The branch/tag name will be triggered + example: develop + cron: + type: string + description: The cron + example: "* * * * *" + cron_timezone: + type: string + description: The timezone + example: Asia/Tokyo + active: + type: boolean + description: The activation of pipeline schedule + example: true + inputs: + type: array + description: Inputs for the pipeline schedule + example: + - name: deploy_strategy + value: blue-green + items: + type: object + properties: + name: + type: string + description: The name of the input + example: deploy_strategy + destroy: + type: boolean + description: Whether to delete the input + default: false + value: + type: string + description: The value of the input + example: blue-green + required: + - name + - value + description: Edit a pipeline schedule + postApiV4ProjectsIdPipelineSchedulesPipelineScheduleIdVariables: + type: object + properties: + key: + type: string + description: The key of the variable + example: NEW_VARIABLE + value: + type: string + description: The value of the variable + example: new value + variable_type: + type: string + description: The type of variable, must be one of env_var or file. Defaults + to env_var + enum: + - env_var + - file + default: env_var + required: + - key + - value + description: Create a new pipeline schedule variable + putApiV4ProjectsIdPipelineSchedulesPipelineScheduleIdVariablesKey: + type: object + properties: + value: + type: string + description: The value of the variable + example: new value + variable_type: + type: string + description: The type of variable, must be one of env_var or file + enum: + - env_var + - file + default: env_var + description: Edit a pipeline schedule variable + postApiV4ProjectsId(refRef)triggerPipeline: + type: object + properties: + token: + type: string + description: The unique token of trigger or job token + example: 6d056f63e50fe6f8c5f8f4aa10edb7 + variables: + type: object + description: The list of variables to be injected into build + example: + VAR1: value1 + VAR2: value2 + inputs: + type: object + description: The list of inputs to be used to create the pipeline. + required: + - token + description: Trigger a GitLab project pipeline + API_Entities_Trigger: + type: object + properties: + id: + type: integer + format: int32 + example: 10 + token: + type: string + example: 6d056f63e50fe6f8c5f8f4aa10edb7 + description: + type: string + example: test + created_at: + type: string + format: date-time + example: '2015-12-24T15:51:21.880Z' + updated_at: + type: string + format: date-time + example: '2015-12-24T17:54:31.198Z' + last_used: + type: string + format: date-time + example: '2015-12-24T17:54:31.198Z' + expires_at: + type: string + format: date-time + example: '2015-12-24T17:54:31.198Z' + owner: + "$ref": "#/definitions/API_Entities_UserBasic" + description: API_Entities_Trigger model + postApiV4ProjectsIdTriggers: + type: object + properties: + description: + type: string + description: The trigger token description + example: my trigger token description + expires_at: + type: string + format: date-time + description: Timestamp of when the pipeline trigger token expires. + example: '2024-07-01' + required: + - description + description: Create a trigger token + putApiV4ProjectsIdTriggersTriggerId: + type: object + properties: + description: + type: string + description: The trigger token description + description: Update a trigger token + postApiV4ProjectsIdVariables: + type: object + properties: + key: + type: string + description: The key of a variable + value: + type: string + description: The value of a variable + protected: + type: boolean + description: Whether the variable is protected + masked: + type: boolean + description: Whether the variable is masked + masked_and_hidden: + type: boolean + description: Whether the variable is masked and hidden + raw: + type: boolean + description: Whether the variable will be expanded + variable_type: + type: string + description: 'The type of the variable. Default: env_var' + enum: + - env_var + - file + environment_scope: + type: string + description: The environment_scope of the variable + description: + type: string + description: The description of the variable + required: + - key + - value + description: Create a new variable in a project + putApiV4ProjectsIdVariablesKey: + type: object + properties: + value: + type: string + description: The value of a variable + protected: + type: boolean + description: Whether the variable is protected + masked: + type: boolean + description: Whether the variable is masked + environment_scope: + type: string + description: The environment_scope of a variable + raw: + type: boolean + description: Whether the variable will be expanded + variable_type: + type: string + description: 'The type of the variable. Default: env_var' + enum: + - env_var + - file + filter: + type: object + description: 'Available filters: [environment_scope]. Example: filter[environment_scope]=production' + properties: + environment_scope: + type: string + description: The environment scope of a variable + description: + type: string + description: The description of the variable + description: Update an existing variable from a project + API_Entities_Clusters_AgentTokenBasic: + type: object + properties: + id: + type: string + name: + type: string + description: + type: string + agent_id: + type: string + status: + type: string + created_at: + type: string + created_by_user_id: + type: string + description: API_Entities_Clusters_AgentTokenBasic model + API_Entities_Clusters_AgentToken: + type: object + properties: + id: + type: string + name: + type: string + description: + type: string + agent_id: + type: string + status: + type: string + created_at: + type: string + created_by_user_id: + type: string + last_used_at: + type: string + description: API_Entities_Clusters_AgentToken model + postApiV4ProjectsIdClusterAgentsAgentIdTokens: + type: object + properties: + name: + type: string + description: The name for the token + description: + type: string + description: The description for the token + required: + - name + description: Create an agent token + API_Entities_Clusters_AgentTokenWithToken: + type: object + properties: + id: + type: string + name: + type: string + description: + type: string + agent_id: + type: string + status: + type: string + created_at: + type: string + created_by_user_id: + type: string + last_used_at: + type: string + token: + type: string + description: API_Entities_Clusters_AgentTokenWithToken model + API_Entities_Clusters_Agent: + type: object + properties: + id: + type: string + name: + type: string + config_project: + "$ref": "#/definitions/API_Entities_ProjectIdentity" + created_at: + type: string + created_by_user_id: + type: string + is_receptive: + type: string + description: API_Entities_Clusters_Agent model + postApiV4ProjectsIdClusterAgents: + type: object + properties: + name: + type: string + description: The name of the agent + required: + - name + description: Register an agent with a project + postApiV4ProjectsIdRepositoryCommits: + type: object + properties: + branch: + type: string + description: Name of the branch to commit into. To create a new branch, also + provide either `start_branch` or `start_sha`, and optionally `start_project`. + example: master + commit_message: + type: string + description: Commit message + example: initial commit + actions: + type: array + description: Actions to perform in commit + items: + type: object + properties: + action: + type: string + description: The action to perform, `create`, `delete`, `move`, `update`, + `chmod` + enum: + - create + - update + - move + - delete + - chmod + file_path: + type: string + description: Full path to the file. + example: lib/class.rb + previous_path: + type: string + description: Original full path to the file being moved. + example: lib/class.rb + content: + type: string + description: File content + example: Some file content + encoding: + type: string + description: "`text` or `base64`" + enum: + - text + - base64 + default: text + last_commit_id: + type: string + description: Last known file commit id + example: 2695effb5807a22ff3d138d593fd856244e155e7 + execute_filemode: + type: boolean + description: When `true/false` enables/disables the execute flag on + the file. + required: + - action + - file_path + - previous_path + - content + - execute_filemode + start_branch: + type: string + description: Name of the branch to start the new branch from + example: staging + start_sha: + type: string + description: SHA of the commit to start the new branch from + example: 2695effb5807a22ff3d138d593fd856244e155e7 + start_project: + type: integer + format: int32 + description: The ID or path of the project to start the new branch from + example: 1 + author_email: + type: string + description: Author email for commit + example: janedoe@example.com + author_name: + type: string + description: Author name for commit + example: Jane Doe + stats: + type: boolean + description: Include commit stats + default: true + force: + type: boolean + description: When `true` overwrites the target branch with a new commit based + on the `start_branch` or `start_sha` + default: false + required: + - branch + - commit_message + - actions + description: Commit multiple file changes as one commit + API_Entities_CommitDetail: + type: object + properties: + id: + type: string + example: 2695effb5807a22ff3d138d593fd856244e155e7 + short_id: + type: string + example: 2695effb + created_at: + type: string + format: date-time + example: '2017-07-26T11:08:53.000+02:00' + parent_ids: + type: array + items: + type: string + example: 2a4b78934375d7f53875269ffd4f45fd83a84ebe + title: + type: string + example: Initial commit + message: + type: string + example: Initial commit + author_name: + type: string + example: John Smith + author_email: + type: string + example: john@example.com + authored_date: + type: string + format: date-time + example: '2012-05-28T04:42:42-07:00' + committer_name: + type: string + example: Jack Smith + committer_email: + type: string + example: jack@example.com + committed_date: + type: string + format: date-time + example: '2012-05-28T04:42:42-07:00' + trailers: + type: object + example: '{ "Merged-By": "Jane Doe janedoe@gitlab.com" }' + extended_trailers: + type: object + example: '{ "Signed-off-by": ["John Doe ", "Jane Doe "] + }' + web_url: + type: string + example: https://gitlab.example.com/janedoe/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746 + stats: + "$ref": "#/definitions/API_Entities_CommitStats" + status: + type: string + example: success + project_id: + type: integer + format: int32 + example: 1 + last_pipeline: + "$ref": "#/definitions/API_Entities_Ci_PipelineBasic" + description: API_Entities_CommitDetail model + API_Entities_CommitStats: + type: object + properties: + additions: + type: integer + format: int32 + example: 1 + deletions: + type: integer + format: int32 + example: 0 + total: + type: integer + format: int32 + example: 1 + API_Entities_Diff: + type: object + properties: + diff: + type: string + example: "@@ -71,6 +71,8 @@\\n..." + new_path: + type: string + example: doc/update/5.4-to-6.0.md + old_path: + type: string + example: doc/update/5.4-to-6.0.md + a_mode: + type: string + example: '100755' + b_mode: + type: string + example: '100644' + new_file: + type: boolean + renamed_file: + type: boolean + deleted_file: + type: boolean + generated_file: + type: boolean + description: API_Entities_Diff model + API_Entities_CommitNote: + type: object + properties: + note: + type: string + example: this doc is really nice + path: + type: string + example: README.md + line: + type: integer + format: int32 + example: 11 + line_type: + type: string + example: new + author: + "$ref": "#/definitions/API_Entities_UserBasic" + created_at: + type: string + format: date-time + example: '2016-01-19T09:44:55.600Z' + description: API_Entities_CommitNote model + API_Entities_CommitSequence: + type: object + properties: + count: + type: integer + format: int32 + example: 1 + description: API_Entities_CommitSequence model + postApiV4ProjectsIdRepositoryCommitsShaCherryPick: + type: object + properties: + branch: + type: string + description: The name of the branch + example: master + dry_run: + type: boolean + description: Does not commit any changes + default: false + message: + type: string + description: A custom commit message to use for the picked commit + example: Initial commit + required: + - branch + description: Cherry pick commit into a branch + postApiV4ProjectsIdRepositoryCommitsShaRevert: + type: object + properties: + branch: + type: string + description: Target branch name + example: master + dry_run: + type: boolean + description: Does not commit any changes + default: false + required: + - branch + description: Revert a commit in a branch + API_Entities_BasicRef: + type: object + properties: + type: + type: string + example: tag + name: + type: string + example: v1.1.0 + description: API_Entities_BasicRef model + postApiV4ProjectsIdRepositoryCommitsShaComments: + type: object + properties: + note: + type: string + description: The text of the comment + example: Nice code! + path: + type: string + description: The file path + example: doc/update/5.4-to-6.0.md + line: + type: integer + format: int32 + description: The line number + example: 11 + line_type: + type: string + description: The type of the line + enum: + - new + - old + default: new + required: + - note + - line + - line_type + description: Post comment to commit + API_Entities_CommitSignature: + type: object + properties: + signature_type: + type: string + example: PGP + signature: + type: string + commit_source: + type: string + example: gitaly + description: API_Entities_CommitSignature model + API_Entities_CommitStatus: + type: object + properties: + id: + type: integer + format: int32 + example: 93 + sha: + type: string + example: 18f3e63d05582537db6d183d9d557be09e1f90c8 + ref: + type: string + example: develop + status: + type: string + example: success + name: + type: string + example: default + target_url: + type: string + example: https://gitlab.example.com/janedoe/gitlab-foss/builds/91 + description: + type: string + created_at: + type: string + format: date-time + example: '2016-01-19T09:05:50.355Z' + started_at: + type: string + format: date-time + example: '2016-01-20T08:40:25.832Z' + finished_at: + type: string + format: date-time + example: '2016-01-21T08:40:25.832Z' + allow_failure: + type: boolean + example: false + coverage: + type: number + format: float + example: 98.29 + pipeline_id: + type: integer + format: int32 + example: 101 + author: + "$ref": "#/definitions/API_Entities_UserBasic" + description: API_Entities_CommitStatus model + postApiV4ProjectsIdStatusesSha: + type: object + properties: + state: + type: string + description: The state of the status + enum: + - pending + - running + - success + - failed + - canceled + - skipped + example: pending + ref: + type: string + description: The ref + example: develop + target_url: + type: string + description: The target URL to associate with this status + example: https://gitlab.example.com/janedoe/gitlab-foss/builds/91 + description: + type: string + description: A short description of the status + name: + type: string + description: A string label to differentiate this status from the status of + other systems + default: default + example: coverage + context: + type: string + description: A string label to differentiate this status from the status of + other systems + default: default + example: coverage + coverage: + type: number + format: float + description: The total code coverage + example: 100.0 + pipeline_id: + type: integer + format: int32 + description: An existing pipeline ID, when multiple pipelines on the same + commit SHA have been triggered + required: + - state + description: Post status to a commit + postApiV4ProjectsIdPackagesComposer: + type: object + properties: + branch: + type: string + description: The name of the branch + example: release + tag: + type: string + description: The name of the tag + example: v1.0.0 + description: Composer packages endpoint for registering packages + API_Entities_Packages_Conan_PackageSnapshot: + type: object + properties: + package_snapshot: + type: object + example: '{ "conan_package.tgz": "749b29bdf72587081ca03ec033ee59dc" }' + description: API_Entities_Packages_Conan_PackageSnapshot model + API_Entities_Packages_Conan_RecipeSnapshot: + type: object + properties: + recipe_snapshot: + type: object + example: '{ "conan_sources.tgz": "eadf19b33f4c3c7e113faabf26e76277" }' + description: API_Entities_Packages_Conan_RecipeSnapshot model + API_Entities_Packages_Conan_PackageManifest: + type: object + properties: + package_urls: + type: object + example: '{ "conan_package.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conan_package.tgz"' + description: API_Entities_Packages_Conan_PackageManifest model + API_Entities_Packages_Conan_RecipeManifest: + type: object + properties: + recipe_urls: + type: object + example: '{ "conan_sources.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conan_sources.tgz" + }' + description: API_Entities_Packages_Conan_RecipeManifest model + API_Entities_Packages_Conan_UploadUrls: + type: object + properties: + upload_urls: + type: object + example: '{ "conan_package.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/package/103f6067a947f366ef91fc1b7da351c588d1827f/0/conan_package.tgz" + }' + description: API_Entities_Packages_Conan_UploadUrls model + putApiV4ProjectsIdPackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionExportFileName: + type: object + properties: + file: + type: file + description: The package file to be published (generated by Multipart middleware) + required: + - file + description: Upload recipe package files + ? putApiV4ProjectsIdPackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionPackageConanPackageReferencePackageRevisionFileName + : type: object + properties: + file: + type: file + description: The package file to be published (generated by Multipart middleware) + required: + - file + description: Upload package files + API_Entities_Packages_Conan_Revision: + type: object + properties: + revision: + type: string + example: 75151329520e7685dcf5da49ded2fec0 + description: The revision hash of the Conan recipe or package + time: + type: string + example: '2024-12-17T09:16:40.334Z' + description: The UTC timestamp when the revision was created + description: API_Entities_Packages_Conan_Revision model + API_Entities_Packages_Conan_RecipeRevisions: + type: object + properties: + reference: + type: string + example: packageTest/1.2.3@gitlab-org+conan/stable + description: The Conan package reference + revisions: + type: array + items: + "$ref": "#/definitions/API_Entities_Packages_Conan_Revision" + description: List of recipe revisions + description: API_Entities_Packages_Conan_RecipeRevisions model + API_Entities_Packages_Conan_FilesList: + type: object + properties: + files: + type: object + example: '{ "files" : { "conan_sources.tgz" : { }, "conanmanifest.txt" : { + }, "conanfile.py" : { } } }' + description: API_Entities_Packages_Conan_FilesList model + ? putApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionFilesFileName + : type: object + properties: + file: + type: file + description: The package file to be published (generated by Multipart middleware) + required: + - file + description: Upload recipe package files + API_Entities_Packages_Conan_PackageRevisions: + type: object + properties: + packageReference: + type: string + example: packageTest/1.2.3@gitlab-org+conan/stable#1883c9f810f2d6e5b59d5285c7141970:133a1f2158ff2cf69739f316ec21143785be54c7 + description: The Conan package reference + revisions: + type: array + items: + "$ref": "#/definitions/API_Entities_Packages_Conan_Revision" + description: List of package revisions + description: API_Entities_Packages_Conan_PackageRevisions model + ? putApiV4ProjectsIdPackagesConanV2ConansPackageNamePackageVersionPackageUsernamePackageChannelRevisionsRecipeRevisionPackagesConanPackageReferenceRevisionsPackageRevisionFilesFileName + : type: object + properties: + file: + type: file + description: The package file to be published (generated by Multipart middleware) + required: + - file + description: Upload package files + putApiV4ProjectsIdPackagesDebianFileName: + type: object + properties: + file: + type: file + description: The package file to be published (generated by Multipart middleware) + distribution: + type: string + description: The Debian Codename or Suite + component: + type: string + description: The Debian Component + required: + - file + - component + description: Upload Debian package + putApiV4ProjectsIdPackagesDebianFileNameAuthorize: + type: object + properties: + distribution: + type: string + description: The Debian Codename or Suite + component: + type: string + description: The Debian Component + required: + - component + description: Authorize Debian package upload + API_Entities_DeployKeysProject: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + title: + type: string + example: Sample key 25 + created_at: + type: string + format: date-time + example: '2015-09-03T07:24:44.627Z' + expires_at: + type: string + format: date-time + example: '2020-09-03T07:24:44.627Z' + last_used_at: + type: string + format: date-time + example: '2020-09-03T07:24:44.627Z' + key: + type: string + example: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ== + usage_type: + type: string + example: auth + fingerprint: + type: string + example: 4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9 + fingerprint_sha256: + type: string + example: SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU + projects_with_write_access: + "$ref": "#/definitions/API_Entities_ProjectIdentity" + projects_with_readonly_access: + "$ref": "#/definitions/API_Entities_ProjectIdentity" + can_push: + type: boolean + description: API_Entities_DeployKeysProject model + postApiV4ProjectsIdDeployKeys: + type: object + properties: + key: + type: string + description: New deploy key + title: + type: string + description: New deploy key's title + can_push: + type: boolean + description: Can deploy key push to the project's repository + expires_at: + type: string + format: date-time + description: The expiration date of the SSH key in ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ) + required: + - key + - title + description: Add deploy key + putApiV4ProjectsIdDeployKeysKeyId: + type: object + properties: + title: + type: string + description: New deploy key's title + can_push: + type: boolean + description: Can deploy key push to the project's repository + description: Update deploy key + API_Entities_DeployKey: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + title: + type: string + example: Sample key 25 + created_at: + type: string + format: date-time + example: '2015-09-03T07:24:44.627Z' + expires_at: + type: string + format: date-time + example: '2020-09-03T07:24:44.627Z' + last_used_at: + type: string + format: date-time + example: '2020-09-03T07:24:44.627Z' + key: + type: string + example: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ== + usage_type: + type: string + example: auth + fingerprint: + type: string + example: 4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9 + fingerprint_sha256: + type: string + example: SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU + projects_with_write_access: + "$ref": "#/definitions/API_Entities_ProjectIdentity" + projects_with_readonly_access: + "$ref": "#/definitions/API_Entities_ProjectIdentity" + description: API_Entities_DeployKey model + postApiV4ProjectsIdDeployTokens: + type: object + properties: + name: + type: string + description: New deploy token's name + scopes: + type: array + description: Indicates the deploy token scopes. Must be at least one of `read_repository`, + `read_registry`, `write_registry`, `read_package_registry`, `write_package_registry`, + `read_virtual_registry`, or `write_virtual_registry`. + items: + type: string + enum: + - read_repository + - read_registry + - write_registry + - read_package_registry + - write_package_registry + - read_virtual_registry + - write_virtual_registry + expires_at: + type: string + format: date-time + description: Expiration date for the deploy token. Does not expire if no value + is provided. Expected in ISO 8601 format (`2019-03-15T08:00:00Z`). + username: + type: string + description: Username for deploy token. Default is `gitlab+deploy-token-{n}` + required: + - name + - scopes + description: Create a project deploy token + API_Entities_Deployment: + type: object + properties: + id: + type: integer + format: int32 + example: 41 + iid: + type: integer + format: int32 + example: 1 + ref: + type: string + example: main + sha: + type: string + example: 99d03678b90d914dbb1b109132516d71a4a03ea8 + created_at: + type: string + format: date-time + example: '2016-08-11T11:32:35.444Z' + updated_at: + type: string + format: date-time + example: '2016-08-11T11:32:35.444Z' + user: + "$ref": "#/definitions/API_Entities_UserBasic" + environment: + "$ref": "#/definitions/API_Entities_EnvironmentBasic" + deployable: + "$ref": "#/definitions/API_Entities_Ci_Job" + status: + type: string + example: created + description: API_Entities_Deployment model + API_Entities_EnvironmentBasic: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + name: + type: string + example: deploy + slug: + type: string + example: deploy + external_url: + type: string + example: https://deploy.gitlab.example.com + created_at: + type: string + format: date-time + example: '2019-05-25T18:55:13.252Z' + updated_at: + type: string + format: date-time + example: '2019-05-25T18:55:13.252Z' + description: API_Entities_EnvironmentBasic model + API_Entities_DeploymentExtended: + type: object + properties: + id: + type: integer + format: int32 + example: 41 + iid: + type: integer + format: int32 + example: 1 + ref: + type: string + example: main + sha: + type: string + example: 99d03678b90d914dbb1b109132516d71a4a03ea8 + created_at: + type: string + format: date-time + example: '2016-08-11T11:32:35.444Z' + updated_at: + type: string + format: date-time + example: '2016-08-11T11:32:35.444Z' + user: + "$ref": "#/definitions/API_Entities_UserBasic" + environment: + "$ref": "#/definitions/API_Entities_EnvironmentBasic" + deployable: + "$ref": "#/definitions/API_Entities_Ci_Job" + status: + type: string + example: created + pending_approval_count: + type: integer + format: int32 + example: 0 + approvals: + "$ref": "#/definitions/API_Entities_Deployments_Approval" + approval_summary: + "$ref": "#/definitions/API_Entities_Deployments_ApprovalSummary" + description: API_Entities_DeploymentExtended model + API_Entities_Deployments_Approval: + type: object + properties: + user: + "$ref": "#/definitions/API_Entities_UserBasic" + status: + type: string + example: approved + created_at: + type: string + format: date-time + example: '2022-02-24T20:22:30.097Z' + comment: + type: string + example: LGTM + description: API_Entities_Deployments_Approval model + API_Entities_Deployments_ApprovalSummary: + type: object + properties: + rules: + "$ref": "#/definitions/API_Entities_ProtectedEnvironments_ApprovalRuleForSummary" + API_Entities_ProtectedEnvironments_ApprovalRuleForSummary: + type: object + properties: + id: + type: string + user_id: + type: string + group_id: + type: string + access_level: + type: string + access_level_description: + type: string + required_approvals: + type: string + group_inheritance_type: + type: string + deployment_approvals: + "$ref": "#/definitions/API_Entities_Deployments_Approval" + postApiV4ProjectsIdDeployments: + type: object + properties: + environment: + type: string + description: The name of the environment to create the deployment for + sha: + type: string + description: The SHA of the commit that is deployed + ref: + type: string + description: The name of the branch or tag that is deployed + tag: + type: boolean + description: A boolean that indicates if the deployed ref is a tag (`true`) + or not (`false`) + status: + type: string + description: The status of the deployment that is created. One of `running`, + `success`, `failed`, or `canceled` + enum: + - running + - success + - failed + - canceled + required: + - environment + - sha + - ref + - tag + - status + description: Create a deployment + putApiV4ProjectsIdDeploymentsDeploymentId: + type: object + properties: + status: + type: string + description: The new status of the deployment. One of `running`, `success`, + `failed`, or `canceled` + enum: + - running + - success + - failed + - canceled + required: + - status + description: Update a deployment + postApiV4ProjectsIdDeploymentsDeploymentIdApproval: + type: object + properties: + status: + type: string + description: The status of the approval (either `approved` or `rejected`) + enum: + - approved + - rejected + comment: + type: string + description: A comment to go with the approval + represented_as: + type: string + description: The name of the User/Group/Role to use for the approval, when + the user belongs to multiple approval rules + required: + - status + description: Approve or reject a blocked deployment + API_Entities_DraftNote: + type: object + properties: + id: + type: integer + format: int32 + example: 2 + author_id: + type: integer + format: int32 + example: 4 + merge_request_id: + type: integer + format: int32 + example: 52 + resolve_discussion: + type: boolean + example: true + discussion_id: + type: integer + format: int32 + example: 613 + note: + type: string + example: This is a note + commit_id: + type: integer + format: int32 + example: 4 + line_code: + type: string + example: 1c497fbb3a46b78edf0_2_4 + position: + type: object + example: + base_sha: aa149113 + start_sha: b3a0a8c4 + head_sha: be3020c7 + old_path: example.md + new_path: example.md + position_type: text + old_line: 2 + new_line: 4 + line_range: + start: + line_code: 1c497fbb3a46b78edf04cc2a2fa33f67e3ffbe2a_2_4 + type: + old_line: 2 + new_line: 4 + end: + line_code: 1c497fbb3a46b78edf04cc2a2fa33f67e3ffbe2a_2_4 + type: + old_line: 2 + new_line: 4 + description: API_Entities_DraftNote model + postApiV4ProjectsIdMergeRequestsMergeRequestIidDraftNotes: + type: object + properties: + note: + type: string + description: The content of a note. + in_reply_to_discussion_id: + type: string + description: The ID of a discussion the draft note replies to. + commit_id: + type: string + description: The sha of a commit to associate the draft note to. + resolve_discussion: + type: boolean + description: The associated discussion should be resolved. + position: + type: object + properties: + base_sha: + type: string + description: Base commit SHA in the source branch + start_sha: + type: string + description: SHA referencing commit in target branch + head_sha: + type: string + description: SHA referencing HEAD of this merge request + position_type: + type: string + description: Type of the position reference + enum: + - text + - image + - file + new_path: + type: string + description: File path after change + new_line: + type: integer + format: int32 + description: Line number after change + old_path: + type: string + description: File path before change + old_line: + type: integer + format: int32 + description: Line number before change + width: + type: integer + format: int32 + description: Width of the image + height: + type: integer + format: int32 + description: Height of the image + x: + type: integer + format: int32 + description: X coordinate in the image + "y": + type: integer + format: int32 + description: Y coordinate in the image + line_range: + type: object + description: Multi-line start and end + properties: + start: + type: object + properties: + line_code: + type: string + description: Start line code for multi-line note + type: + type: string + description: Start line type for multi-line note + old_line: + type: string + description: Start old_line line number + new_line: + type: string + description: Start new_line line number + end: + type: object + properties: + line_code: + type: string + description: End line code for multi-line note + type: + type: string + description: End line type for multi-line note + old_line: + type: string + description: End old_line line number + new_line: + type: string + description: End new_line line number + required: + - base_sha + - start_sha + - head_sha + - position_type + required: + - note + description: Create a new draft note + putApiV4ProjectsIdMergeRequestsMergeRequestIidDraftNotesDraftNoteId: + type: object + properties: + note: + type: string + description: The content of a note. + position: + type: object + properties: + base_sha: + type: string + description: Base commit SHA in the source branch + start_sha: + type: string + description: SHA referencing commit in target branch + head_sha: + type: string + description: SHA referencing HEAD of this merge request + position_type: + type: string + description: Type of the position reference + enum: + - text + - image + - file + new_path: + type: string + description: File path after change + new_line: + type: integer + format: int32 + description: Line number after change + old_path: + type: string + description: File path before change + old_line: + type: integer + format: int32 + description: Line number before change + width: + type: integer + format: int32 + description: Width of the image + height: + type: integer + format: int32 + description: Height of the image + x: + type: integer + format: int32 + description: X coordinate in the image + "y": + type: integer + format: int32 + description: Y coordinate in the image + line_range: + type: object + description: Multi-line start and end + properties: + start: + type: object + properties: + line_code: + type: string + description: Start line code for multi-line note + type: + type: string + description: Start line type for multi-line note + old_line: + type: string + description: Start old_line line number + new_line: + type: string + description: Start new_line line number + end: + type: object + properties: + line_code: + type: string + description: End line code for multi-line note + type: + type: string + description: End line type for multi-line note + old_line: + type: string + description: End old_line line number + new_line: + type: string + description: End new_line line number + required: + - base_sha + - start_sha + - head_sha + - position_type + description: Modify an existing draft note + API_Entities_Environment: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + name: + type: string + example: deploy + slug: + type: string + example: deploy + external_url: + type: string + example: https://deploy.gitlab.example.com + created_at: + type: string + format: date-time + example: '2019-05-25T18:55:13.252Z' + updated_at: + type: string + format: date-time + example: '2019-05-25T18:55:13.252Z' + tier: + type: string + example: development + project: + "$ref": "#/definitions/API_Entities_BasicProjectDetails" + last_deployment: + "$ref": "#/definitions/API_Entities_Deployment" + state: + type: string + example: available + auto_stop_at: + type: string + format: date-time + example: '2019-05-25T18:55:13.252Z' + cluster_agent: + "$ref": "#/definitions/API_Entities_Clusters_Agent" + kubernetes_namespace: + type: string + flux_resource_path: + type: string + description: + type: string + example: description + auto_stop_setting: + type: string + example: always + description: API_Entities_Environment model + postApiV4ProjectsIdEnvironments: + type: object + properties: + name: + type: string + description: The name of the environment + external_url: + type: string + description: Place to link to for this environment + tier: + type: string + description: The tier of the new environment. Allowed values are `production`, + `staging`, `testing`, `development`, and `other` + enum: + - production + - staging + - testing + - development + - other + cluster_agent_id: + type: integer + format: int32 + description: The ID of the Cluster Agent to associate with this environment + kubernetes_namespace: + type: string + description: The Kubernetes namespace to associate with this environment + flux_resource_path: + type: string + description: The Flux resource path to associate with this environment + description: + type: string + description: The description of the environment + auto_stop_setting: + type: string + description: The auto stop setting for the environment. Allowed values are + `always` and `with_action` + enum: + - always + - with_action + required: + - name + description: Create a new environment + putApiV4ProjectsIdEnvironmentsEnvironmentId: + type: object + properties: + external_url: + type: string + description: The new URL on which this deployment is viewable + tier: + type: string + description: The tier of the new environment. Allowed values are `production`, + `staging`, `testing`, `development`, and `other` + enum: + - production + - staging + - testing + - development + - other + cluster_agent_id: + type: integer + format: int32 + description: The ID of the Cluster Agent to associate with this environment + kubernetes_namespace: + type: string + description: The Kubernetes namespace to associate with this environment + flux_resource_path: + type: string + description: The Flux resource path to associate with this environment + description: + type: string + description: The description of the environment + auto_stop_setting: + type: string + description: The auto stop setting for the environment. Allowed values are + `always` and `with_action` + enum: + - always + - with_action + description: Update an existing environment + postApiV4ProjectsIdEnvironmentsEnvironmentIdStop: + type: object + properties: + force: + type: boolean + description: Force environment to stop without executing `on_stop` actions + default: false + description: Stop an environment + postApiV4ProjectsIdEnvironmentsStopStale: + type: object + properties: + before: + type: string + format: date-time + description: Stop all environments that were last modified or deployed to + before this date. + required: + - before + description: Stop stale environments + API_Entities_ErrorTracking_ClientKey: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + active: + type: boolean + public_key: + type: string + example: glet_aa77551d849c083f76d0bc545ed053a3 + sentry_dsn: + type: string + example: https://glet_aa77551d849c083f76d0bc545ed053a3@example.com/errortracking/api/v1/projects/5 + description: API_Entities_ErrorTracking_ClientKey model + API_Entities_ErrorTracking_ProjectSetting: + type: object + properties: + active: + type: boolean + project_name: + type: string + example: sample sentry project + sentry_external_url: + type: string + example: https://sentry.io/myawesomeproject/project + api_url: + type: string + example: https://sentry.io/api/0/projects/myawesomeproject/project + integrated: + type: boolean + description: API_Entities_ErrorTracking_ProjectSetting model + patchApiV4ProjectsIdErrorTrackingSettings: + type: object + properties: + active: + type: boolean + description: Pass true to enable the already configured Error Tracking settings + or false to disable it. + integrated: + type: boolean + description: Pass true to enable the integrated Error Tracking backend. Available + in GitLab 14.2 and later. + required: + - active + description: Enable or disable the Error Tracking project settings + putApiV4ProjectsIdErrorTrackingSettings: + type: object + properties: + active: + type: boolean + description: Pass true to enable the configured Error Tracking settings or + false to disable it. + integrated: + type: boolean + description: Pass true to enable the integrated Error Tracking backend. + required: + - active + - integrated + description: Update Error Tracking project settings. Available in GitLab 15.10 + and later. + API_Entities_FeatureFlag: + type: object + properties: + name: + type: string + example: merge_train + description: + type: string + example: merge train feature flag + active: + type: boolean + version: + type: string + example: new_version_flag + created_at: + type: string + format: date-time + example: '2019-11-04T08:13:51.423Z' + updated_at: + type: string + format: date-time + example: '2019-11-04T08:13:51.423Z' + scopes: + type: string + strategies: + "$ref": "#/definitions/API_Entities_FeatureFlag_Strategy" + description: API_Entities_FeatureFlag model + API_Entities_FeatureFlag_Strategy: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + name: + type: string + example: userWithId + parameters: + type: string + example: '{"userIds": "user1"}' + scopes: + "$ref": "#/definitions/API_Entities_FeatureFlag_Scope" + user_list: + "$ref": "#/definitions/API_Entities_FeatureFlag_BasicUserList" + API_Entities_FeatureFlag_Scope: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + environment_scope: + type: string + example: production + API_Entities_FeatureFlag_BasicUserList: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + iid: + type: integer + format: int32 + example: 1 + name: + type: string + example: user_list + user_xids: + type: string + example: user1,user2 + postApiV4ProjectsIdFeatureFlags: + type: object + properties: + name: + type: string + description: The name of the feature flag + description: + type: string + description: The description of the feature flag + active: + type: boolean + description: The active state of the flag. Defaults to `true`. Supported in + GitLab 13.3 and later + version: + type: string + description: The version of the feature flag. Must be `new_version_flag`. + Omit to create a Legacy feature flag. + strategies: + type: array + items: + type: object + properties: + name: + type: string + description: The strategy name. Can be `default`, `gradualRolloutUserId`, + `userWithId`, or `gitlabUserList`. In GitLab 13.5 and later, can be + `flexibleRollout` + parameters: + type: string + description: The strategy parameters as a JSON-formatted string e.g. + `{"userIds":"user1"}` + user_list_id: + type: integer + format: int32 + description: The ID of the feature flag user list. If strategy is `gitlabUserList`. + scopes: + type: array + items: + type: object + properties: + environment_scope: + type: string + description: The environment scope of the scope + required: + - environment_scope + required: + - name + required: + - name + description: Create a new feature flag + putApiV4ProjectsIdFeatureFlagsFeatureFlagName: + type: object + properties: + name: + type: string + description: The new name of the feature flag. Supported in GitLab 13.3 and + later + description: + type: string + description: The description of the feature flag + active: + type: boolean + description: The active state of the flag. Supported in GitLab 13.3 and later + strategies: + type: array + items: + type: object + properties: + id: + type: integer + format: int32 + description: The feature flag strategy ID + name: + type: string + description: The strategy name + parameters: + type: string + description: The strategy parameters as a JSON-formatted string e.g. + `{"userIds":"user1"}` + user_list_id: + type: integer + format: int32 + description: The ID of the feature flag user list + _destroy: + type: boolean + description: Delete the strategy when true + scopes: + type: array + items: + type: object + properties: + id: + type: integer + format: int32 + description: The scope id + environment_scope: + type: string + description: The environment scope of the scope + _destroy: + type: boolean + description: Delete the scope when true + description: Update a feature flag + API_Entities_FeatureFlag_UserList: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + iid: + type: integer + format: int32 + example: 1 + name: + type: string + example: user_list + user_xids: + type: string + example: user1,user2 + project_id: + type: integer + format: int32 + example: 2 + created_at: + type: string + format: date-time + example: '2020-02-04T08:13:10.507Z' + updated_at: + type: string + format: date-time + example: '2020-02-04T08:13:10.507Z' + path: + type: string + edit_path: + type: string + description: API_Entities_FeatureFlag_UserList model + postApiV4ProjectsIdFeatureFlagsUserLists: + type: object + properties: + name: + type: string + description: The name of the list + user_xids: + type: string + description: A comma separated list of external user ids + required: + - name + - user_xids + description: Create a feature flag user list + putApiV4ProjectsIdFeatureFlagsUserListsIid: + type: object + properties: + name: + type: string + description: The name of the list + user_xids: + type: string + description: A comma separated list of external user ids + description: Update a feature flag user list + postApiV4ProjectsIdRepositoryFilesFilePath: + type: object + properties: + branch: + type: string + description: Name of the branch to commit into. To create a new branch, also + provide `start_branch`. + example: main + commit_message: + type: string + description: Commit message + example: Initial commit + start_branch: + type: string + description: Name of the branch to start the new commit from + example: main + author_email: + type: string + description: The email of the author + example: johndoe@example.com + author_name: + type: string + description: The name of the author + example: John Doe + content: + type: string + description: File content + example: file content + encoding: + type: string + description: File encoding + enum: + - base64 + - text + default: text + last_commit_id: + type: string + description: Last known commit id for this file + example: 2695effb5807a22ff3d138d593fd856244e155e7 + execute_filemode: + type: boolean + description: Enable / Disable the executable flag on the file path + required: + - branch + - commit_message + - content + description: Create new file in repository + putApiV4ProjectsIdRepositoryFilesFilePath: + type: object + properties: + branch: + type: string + description: Name of the branch to commit into. To create a new branch, also + provide `start_branch`. + example: main + commit_message: + type: string + description: Commit message + example: Initial commit + start_branch: + type: string + description: Name of the branch to start the new commit from + example: main + author_email: + type: string + description: The email of the author + example: johndoe@example.com + author_name: + type: string + description: The name of the author + example: John Doe + content: + type: string + description: File content + example: file content + encoding: + type: string + description: File encoding + enum: + - base64 + - text + default: text + last_commit_id: + type: string + description: Last known commit id for this file + example: 2695effb5807a22ff3d138d593fd856244e155e7 + execute_filemode: + type: boolean + description: Enable / Disable the executable flag on the file path + required: + - branch + - commit_message + - content + description: Update existing file in repository + API_Entities_FreezePeriod: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + freeze_start: + type: string + example: 0 23 * * 5 + freeze_end: + type: string + example: 0 8 * * 1 + cron_timezone: + type: string + example: UTC + created_at: + type: string + format: date-time + example: '2020-05-15T17:03:35.702Z' + updated_at: + type: string + format: date-time + example: '2020-05-15T17:03:35.702Z' + description: API_Entities_FreezePeriod model + postApiV4ProjectsIdFreezePeriods: + type: object + properties: + freeze_start: + type: string + description: Start of the freeze period in cron format. + freeze_end: + type: string + description: End of the freeze period in cron format + cron_timezone: + type: string + description: The time zone for the cron fields, defaults to UTC if not provided + required: + - freeze_start + - freeze_end + description: Create a freeze period + putApiV4ProjectsIdFreezePeriodsFreezePeriodId: + type: object + properties: + freeze_start: + type: string + description: Start of the freeze period in cron format + freeze_end: + type: string + description: End of the freeze period in cron format + cron_timezone: + type: string + description: The time zone for the cron fields + description: Update a freeze period + putApiV4ProjectsIdPackagesGenericPackageName*packageVersion(*path)FileNameAuthorize: + type: object + properties: + package_version: + type: string + description: Package version + status: + type: string + description: Package status + enum: + - default + - hidden + path: + type: integer + format: int32 + required: + - package_version + - path + description: Workhorse authorize generic package file + putApiV4ProjectsIdPackagesGenericPackageName*packageVersion(*path)FileName: + type: object + properties: + package_version: + type: string + description: Package version + path: + type: string + description: File directory path + status: + type: string + description: Package status + enum: + - default + - hidden + file: + type: file + description: The package file to be published (generated by Multipart middleware) + select: + type: string + enum: + - package_file + required: + - package_version + - file + description: Upload package file + API_Entities_GoModuleVersion: + type: object + properties: + Version: + type: string + example: v1.0.0 + Time: + type: string + example: 1617822312 -0600 + description: API_Entities_GoModuleVersion model + postApiV4ProjectsIdPackagesHelmApiChannelCharts: + type: object + properties: + chart: + type: file + description: The chart file to be published (generated by Multipart middleware) + required: + - chart + description: Upload a chart + putApiV4ProjectsIdServicesAppleAppStore: + type: object + properties: + app_store_issuer_id: + type: string + description: Apple App Store Connect issuer ID. + app_store_key_id: + type: string + description: Apple App Store Connect key ID. + app_store_private_key_file_name: + type: string + description: Apple App Store Connect private key file name. + app_store_private_key: + type: string + description: Apple App Store Connect private key. + app_store_protected_refs: + type: boolean + description: Set variables on protected branches and tags only. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - app_store_issuer_id + - app_store_key_id + - app_store_private_key_file_name + - app_store_private_key + description: Create/Edit Apple App Store integration + putApiV4ProjectsIdServicesAsana: + type: object + properties: + api_key: + type: string + description: User API token. The user must have access to the task. All comments + are attributed to this user. + restrict_to_branch: + type: string + description: Comma-separated list of branches to be automatically inspected. + Leave blank to include all branches. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - api_key + description: Create/Edit Asana integration + putApiV4ProjectsIdServicesAssembla: + type: object + properties: + token: + type: string + description: The authentication token. + subdomain: + type: string + description: The subdomain setting. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Assembla integration + putApiV4ProjectsIdServicesBamboo: + type: object + properties: + enable_ssl_verification: + type: boolean + description: Enable SSL verification. Defaults to `true` (enabled). + bamboo_url: + type: string + description: Bamboo root URL (for example, `https://bamboo.example.com`). + build_key: + type: string + description: Bamboo build plan key (for example, `KEY`). + username: + type: string + description: User with API access to the Bamboo server. + password: + type: string + description: Password of the user. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - bamboo_url + - build_key + - username + - password + description: Create/Edit Bamboo integration + putApiV4ProjectsIdServicesBugzilla: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + new_issue_url: + type: string + description: URL of the new issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + - new_issue_url + description: Create/Edit Bugzilla integration + putApiV4ProjectsIdServicesBuildkite: + type: object + properties: + project_url: + type: string + description: Pipeline URL (for example, `https://buildkite.com/example/pipeline`). + token: + type: string + description: Token you get after you create a Buildkite pipeline with a GitLab + repository. + enable_ssl_verification: + type: boolean + description: 'DEPRECATED: This parameter has no effect because SSL verification + is always enabled.' + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - token + description: Create/Edit Buildkite integration + putApiV4ProjectsIdServicesCampfire: + type: object + properties: + token: + type: string + description: API authentication token from Campfire. To get the token, sign + in to Campfire and select **My info**. + subdomain: + type: string + description: "`.campfirenow.com` subdomain when you're signed in." + room: + type: string + description: ID portion of the Campfire room URL. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Campfire integration + putApiV4ProjectsIdServicesConfluence: + type: object + properties: + confluence_url: + type: string + description: URL of the Confluence Workspace hosted on `atlassian.net`. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - confluence_url + description: Create/Edit Confluence integration + putApiV4ProjectsIdServicesCustomIssueTracker: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + new_issue_url: + type: string + description: URL of the new issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + - new_issue_url + description: Create/Edit Custom Issue Tracker integration + putApiV4ProjectsIdServicesDatadog: + type: object + properties: + datadog_site: + type: string + description: Datadog site to send data to. Learn more about Datadog sites + in the documentation. + api_url: + type: string + description: Full URL of your Datadog site. Only required if you do not use + a standard Datadog site. + api_key: + type: string + description: API + key used for authentication with Datadog. + datadog_ci_visibility: + type: boolean + description: Enable CI Visibility + archive_trace_events: + type: boolean + description: When enabled, job logs are collected by Datadog and displayed + along with pipeline execution traces. + datadog_service: + type: string + description: Tag all pipeline data from this GitLab instance in Datadog. Can + be used when managing several self-managed deployments. + datadog_env: + type: string + description: For self-managed deployments, `env` tag for all the data sent + to Datadog. + datadog_tags: + type: string + description: Custom tags in Datadog. Specify one tag per line in the format + `key:value\nkey2:value2`. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + build_events: + type: boolean + description: Trigger event when a build is created. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + subgroup_events: + type: boolean + project_events: + type: boolean + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - api_key + description: Create/Edit Datadog integration + putApiV4ProjectsIdServicesDiffblueCover: + type: object + properties: + diffblue_license_key: + type: string + description: Diffblue Cover license key. + diffblue_access_token_name: + type: string + description: Access token name used by Diffblue Cover in pipelines. + diffblue_access_token_secret: + type: string + description: Access token secret used by Diffblue Cover in pipelines. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - diffblue_license_key + - diffblue_access_token_name + - diffblue_access_token_secret + description: Create/Edit Diffblue Cover integration + putApiV4ProjectsIdServicesDiscord: + type: object + properties: + webhook: + type: string + description: Discord webhook (for example, `https://discord.com/api/webhooks/…`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_channel: + type: string + description: The name of the channel to receive push_events notifications + issue_channel: + type: string + description: The name of the channel to receive issues_events notifications + incident_channel: + type: string + description: The name of the channel to receive incident_events notifications + alert_channel: + type: string + description: The name of the channel to receive alert_events notifications + confidential_issue_channel: + type: string + description: The name of the channel to receive confidential_issues_events + notifications + merge_request_channel: + type: string + description: The name of the channel to receive merge_requests_events notifications + note_channel: + type: string + description: The name of the channel to receive note_events notifications + confidential_note_channel: + type: string + description: The name of the channel to receive confidential_note_events notifications + tag_push_channel: + type: string + description: The name of the channel to receive tag_push_events notifications + deployment_channel: + type: string + description: The name of the channel to receive deployment_events notifications + pipeline_channel: + type: string + description: The name of the channel to receive pipeline_events notifications + wiki_page_channel: + type: string + description: The name of the channel to receive wiki_page_events notifications + vulnerability_channel: + type: string + description: The name of the channel to receive vulnerability_events notifications + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + deployment_events: + type: boolean + description: Trigger event when a deployment starts or finishes. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Discord integration + putApiV4ProjectsIdServicesDroneCi: + type: object + properties: + enable_ssl_verification: + type: boolean + description: Enable SSL verification. Defaults to `true` (enabled). + drone_url: + type: string + description: Drone CI URL (for example, `http://drone.example.com`). + token: + type: string + description: Drone CI token. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - drone_url + - token + description: Create/Edit Drone Ci integration + putApiV4ProjectsIdServicesEmailsOnPush: + type: object + properties: + send_from_committer_email: + type: boolean + description: Send from committer + disable_diffs: + type: boolean + description: Disable code diffs + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + recipients: + type: string + description: Emails separated by whitespace. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - recipients + description: Create/Edit Emails On Push integration + putApiV4ProjectsIdServicesExternalWiki: + type: object + properties: + external_wiki_url: + type: string + description: URL of the external wiki. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - external_wiki_url + description: Create/Edit External Wiki integration + putApiV4ProjectsIdServicesGitlabSlackApplication: + type: object + properties: + channel: + type: string + description: Default channel to use if no other channel is configured. + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + labels_to_be_notified: + type: string + description: Labels to send notifications for. Leave blank to receive notifications + for all events. + labels_to_be_notified_behavior: + type: string + description: Labels to be notified for. Valid options are `match_any` and + `match_all`. The default value is `match_any`. + push_channel: + type: string + description: The name of the channel to receive push_events notifications + issue_channel: + type: string + description: The name of the channel to receive issues_events notifications + incident_channel: + type: string + description: The name of the channel to receive incident_events notifications + alert_channel: + type: string + description: The name of the channel to receive alert_events notifications + confidential_issue_channel: + type: string + description: The name of the channel to receive confidential_issues_events + notifications + merge_request_channel: + type: string + description: The name of the channel to receive merge_requests_events notifications + note_channel: + type: string + description: The name of the channel to receive note_events notifications + confidential_note_channel: + type: string + description: The name of the channel to receive confidential_note_events notifications + tag_push_channel: + type: string + description: The name of the channel to receive tag_push_events notifications + deployment_channel: + type: string + description: The name of the channel to receive deployment_events notifications + pipeline_channel: + type: string + description: The name of the channel to receive pipeline_events notifications + wiki_page_channel: + type: string + description: The name of the channel to receive wiki_page_events notifications + vulnerability_channel: + type: string + description: The name of the channel to receive vulnerability_events notifications + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + deployment_events: + type: boolean + description: Trigger event when a deployment starts or finishes. + incident_events: + type: boolean + description: Trigger event when an incident is created. + vulnerability_events: + type: boolean + alert_events: + type: boolean + description: Trigger event when a new, unique alert is recorded. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + description: Create/Edit Gitlab Slack Application integration + putApiV4ProjectsIdServicesGooglePlay: + type: object + properties: + package_name: + type: string + description: Package name of the app in Google Play. + service_account_key_file_name: + type: string + description: File name of the Google Play service account key. + service_account_key: + type: string + description: Google Play service account key. + google_play_protected_refs: + type: boolean + description: Set variables on protected branches and tags only. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - package_name + - service_account_key_file_name + - service_account_key + description: Create/Edit Google Play integration + putApiV4ProjectsIdServicesHangoutsChat: + type: object + properties: + webhook: + type: string + description: The Hangouts Chat webhook (for example, `https://chat.googleapis.com/v1/spaces...`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Hangouts Chat integration + putApiV4ProjectsIdServicesHarbor: + type: object + properties: + url: + type: string + description: The base URL to the Harbor instance linked to the GitLab project. + For example, `https://demo.goharbor.io`. + project_name: + type: string + description: The name of the project in the Harbor instance. For example, + `testproject`. + username: + type: string + description: The username created in the Harbor interface. + password: + type: string + description: The password of the user. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - url + - project_name + - username + - password + description: Create/Edit Harbor integration + putApiV4ProjectsIdServicesIrker: + type: object + properties: + server_host: + type: string + description: irker daemon hostname. The default value is `localhost`. + server_port: + type: integer + format: int32 + description: irker daemon port. The default value is `6659`. + default_irc_uri: + type: string + description: URI to add before each recipient. The default value is `irc://irc.network.net:6697/`. + recipients: + type: string + description: Comma-separated list of channels or email addresses. + colorize_messages: + type: boolean + description: Colorize messages + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - recipients + description: Create/Edit Irker integration + putApiV4ProjectsIdServicesJenkins: + type: object + properties: + enable_ssl_verification: + type: boolean + description: Enable SSL verification. Defaults to `true` (enabled). + jenkins_url: + type: string + description: URL of the Jenkins server. + project_name: + type: string + description: Name of the Jenkins project. + username: + type: string + description: Username of the Jenkins server. + password: + type: string + description: Password of the Jenkins server. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - jenkins_url + - project_name + description: Create/Edit Jenkins integration + putApiV4ProjectsIdServicesJira: + type: object + properties: + url: + type: string + description: The URL to the Jira project which is being linked to this GitLab + project (for example, `https://jira.example.com`). + api_url: + type: string + description: The base URL to the Jira instance API. Web URL value is used + if not set (for example, `https://jira-api.example.com`). + jira_auth_type: + type: integer + format: int32 + description: The authentication method to use with Jira. Use `0` for Basic + Authentication, and `1` for Jira personal access token. Defaults to `0`. + username: + type: string + description: The email or username to use with Jira. Use an email for Jira + Cloud, and a username for Jira Data Center and Jira Server. Required when + using Basic Authentication (`jira_auth_type` is `0`). + password: + type: string + description: The Jira API token, password, or personal access token to use + with Jira. When using Basic Authentication (`jira_auth_type` is `0`), use + an API token for Jira Cloud, and a password for Jira Data Center or Jira + Server. For a Jira personal access token (`jira_auth_type` is `1`), use + the personal access token. + jira_issue_regex: + type: string + description: Regular expression to match Jira issue keys. + jira_issue_prefix: + type: string + description: Prefix to match Jira issue keys. + jira_issue_transition_id: + type: string + description: The ID of one or more transitions for [custom issue transitions](../integration/jira/issues.md#custom-issue-transitions).Ignored + when `jira_issue_transition_automatic` is enabled. Defaults to a blank string,which + disables custom transitions. + issues_enabled: + type: string + description: Enable viewing Jira issues in GitLab. + project_keys: + type: array + description: Keys of Jira projects. When `issues_enabled` is `true`, this + setting specifies which Jira projects to view issues from in GitLab. + items: + type: string + vulnerabilities_enabled: + type: boolean + description: Turn on Jira issue creation for GitLab vulnerabilities. + vulnerabilities_issuetype: + type: string + description: Jira issue type to use when creating issues from vulnerabilities. + project_key: + type: string + description: Key of the project to use when creating issues from vulnerabilities.This + parameter is required if using the integration to create Jira issues from + vulnerabilities. + customize_jira_issue_enabled: + type: boolean + description: When set to `true`, opens a prefilled form on the Jira instancewhen + creating a Jira issue from a vulnerability. + commit_events: + type: boolean + description: Trigger event when a commit is created or updated. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - url + - password + description: Create/Edit Jira integration + putApiV4ProjectsIdServicesJiraCloudApp: + type: object + properties: + jira_cloud_app_service_ids: + type: string + description: Copy and paste your JSM Service ID here. Use comma (,) to separate + multiple IDs. + jira_cloud_app_enable_deployment_gating: + type: boolean + description: Enable to approve or reject blocked GitLab deployments from Jira + Service Management. + jira_cloud_app_deployment_gating_environments: + type: string + description: Enter the environment (production,staging,testing,development) + where you want to enable deployment gating. Use comma (,) to separate multiple + environments. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + description: Create/Edit Jira Cloud App integration + putApiV4ProjectsIdServicesMatrix: + type: object + properties: + hostname: + type: string + description: Custom hostname of the Matrix server. The default value is `https://matrix-client.matrix.org`. + token: + type: string + description: The Matrix access token (for example, `syt-zyx57W2v1u123ew11`). + room: + type: string + description: Unique identifier for the target room (in the format `!qPKKM111FFKKsfoCVy:matrix.org`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + incident_events: + type: boolean + description: Trigger event when an incident is created. + vulnerability_events: + type: boolean + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + - room + description: Create/Edit Matrix integration + putApiV4ProjectsIdServicesMattermostSlashCommands: + type: object + properties: + token: + type: string + description: The Mattermost token. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Mattermost Slash Commands integration + putApiV4ProjectsIdServicesSlackSlashCommands: + type: object + properties: + token: + type: string + description: The Slack token. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Slack Slash Commands integration + putApiV4ProjectsIdServicesPackagist: + type: object + properties: + username: + type: string + description: Username of a Packagist account. + token: + type: string + description: API token of the Packagist server. + server: + type: string + description: URL of the Packagist server. The default value is `https://packagist.org`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - username + - token + description: Create/Edit Packagist integration + putApiV4ProjectsIdServicesPhorge: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + description: Create/Edit Phorge integration + putApiV4ProjectsIdServicesPipelinesEmail: + type: object + properties: + recipients: + type: string + description: Comma-separated list of recipient email addresses. + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + notify_only_default_branch: + type: boolean + description: Send notifications for the default branch. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - recipients + description: Create/Edit Pipelines Email integration + putApiV4ProjectsIdServicesPivotaltracker: + type: object + properties: + token: + type: string + description: The Pivotal Tracker token. + restrict_to_branch: + type: string + description: Comma-separated list of branches to automatically inspect. Leave + blank to include all branches. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Pivotaltracker integration + putApiV4ProjectsIdServicesPumble: + type: object + properties: + webhook: + type: string + description: The Pumble webhook (for example, `https://api.pumble.com/workspaces/x/...`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Pumble integration + putApiV4ProjectsIdServicesPushover: + type: object + properties: + api_key: + type: string + description: The application key. + user_key: + type: string + description: The user key. + device: + type: string + description: Leave blank for all active devices. + priority: + type: string + description: The priority. + sound: + type: string + description: The sound of the notification. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - api_key + - user_key + - priority + description: Create/Edit Pushover integration + putApiV4ProjectsIdServicesRedmine: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + new_issue_url: + type: string + description: URL of the new issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + - new_issue_url + description: Create/Edit Redmine integration + putApiV4ProjectsIdServicesEwm: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + new_issue_url: + type: string + description: URL of the new issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + - new_issue_url + description: Create/Edit Ewm integration + putApiV4ProjectsIdServicesYoutrack: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + description: Create/Edit Youtrack integration + putApiV4ProjectsIdServicesClickup: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + description: Create/Edit Clickup integration + putApiV4ProjectsIdServicesSlack: + type: object + properties: + webhook: + type: string + description: Slack notifications webhook (for example, `https://hooks.slack.com/services/...`). + username: + type: string + description: Slack notifications username. + channel: + type: string + description: Default channel to use if no other channel is configured. + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + labels_to_be_notified: + type: string + description: Labels to send notifications for. Leave blank to receive notifications + for all events. + labels_to_be_notified_behavior: + type: string + description: Labels to be notified for. Valid options are `match_any` and + `match_all`. The default value is `match_any`. + push_channel: + type: string + description: The name of the channel to receive push_events notifications + issue_channel: + type: string + description: The name of the channel to receive issues_events notifications + incident_channel: + type: string + description: The name of the channel to receive incident_events notifications + alert_channel: + type: string + description: The name of the channel to receive alert_events notifications + confidential_issue_channel: + type: string + description: The name of the channel to receive confidential_issues_events + notifications + merge_request_channel: + type: string + description: The name of the channel to receive merge_requests_events notifications + note_channel: + type: string + description: The name of the channel to receive note_events notifications + confidential_note_channel: + type: string + description: The name of the channel to receive confidential_note_events notifications + tag_push_channel: + type: string + description: The name of the channel to receive tag_push_events notifications + deployment_channel: + type: string + description: The name of the channel to receive deployment_events notifications + pipeline_channel: + type: string + description: The name of the channel to receive pipeline_events notifications + wiki_page_channel: + type: string + description: The name of the channel to receive wiki_page_events notifications + vulnerability_channel: + type: string + description: The name of the channel to receive vulnerability_events notifications + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + deployment_events: + type: boolean + description: Trigger event when a deployment starts or finishes. + incident_events: + type: boolean + description: Trigger event when an incident is created. + vulnerability_events: + type: boolean + alert_events: + type: boolean + description: Trigger event when a new, unique alert is recorded. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Slack integration + putApiV4ProjectsIdServicesMicrosoftTeams: + type: object + properties: + webhook: + type: string + description: The Microsoft Teams webhook (for example, `https://outlook.office.com/webhook/...`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Microsoft Teams integration + putApiV4ProjectsIdServicesMattermost: + type: object + properties: + webhook: + type: string + description: Mattermost notifications webhook (for example, `http://mattermost.example.com/hooks/...`). + username: + type: string + description: Mattermost notifications username. + channel: + type: string + description: Default channel to use if no other channel is configured. + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + labels_to_be_notified: + type: string + description: Labels to send notifications for. Leave blank to receive notifications + for all events. + labels_to_be_notified_behavior: + type: string + description: Labels to be notified for. Valid options are `match_any` and + `match_all`. The default value is `match_any`. + push_channel: + type: string + description: The name of the channel to receive push_events notifications + issue_channel: + type: string + description: The name of the channel to receive issues_events notifications + incident_channel: + type: string + description: The name of the channel to receive incident_events notifications + alert_channel: + type: string + description: The name of the channel to receive alert_events notifications + confidential_issue_channel: + type: string + description: The name of the channel to receive confidential_issues_events + notifications + merge_request_channel: + type: string + description: The name of the channel to receive merge_requests_events notifications + note_channel: + type: string + description: The name of the channel to receive note_events notifications + confidential_note_channel: + type: string + description: The name of the channel to receive confidential_note_events notifications + tag_push_channel: + type: string + description: The name of the channel to receive tag_push_events notifications + deployment_channel: + type: string + description: The name of the channel to receive deployment_events notifications + pipeline_channel: + type: string + description: The name of the channel to receive pipeline_events notifications + wiki_page_channel: + type: string + description: The name of the channel to receive wiki_page_events notifications + vulnerability_channel: + type: string + description: The name of the channel to receive vulnerability_events notifications + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + deployment_events: + type: boolean + description: Trigger event when a deployment starts or finishes. + incident_events: + type: boolean + description: Trigger event when an incident is created. + vulnerability_events: + type: boolean + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Mattermost integration + putApiV4ProjectsIdServicesTeamcity: + type: object + properties: + enable_ssl_verification: + type: boolean + description: Enable SSL verification. Defaults to `true` (enabled). + teamcity_url: + type: string + description: TeamCity root URL (for example, `https://teamcity.example.com`). + build_type: + type: string + description: The build configuration ID of the TeamCity project. + username: + type: string + description: A user with permissions to trigger a manual build. + password: + type: string + description: The password of the user. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - teamcity_url + - build_type + - username + - password + description: Create/Edit Teamcity integration + putApiV4ProjectsIdServicesTelegram: + type: object + properties: + hostname: + type: string + description: Custom hostname of the Telegram API. The default value is `https://api.telegram.org`. + token: + type: string + description: The Telegram bot token (for example, `123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11`). + room: + type: string + description: Unique identifier for the target chat or the username of the + target channel (in the format `@channelusername`). + thread: + type: string + description: Unique identifier for the target message thread (topic in a forum + supergroup). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + incident_events: + type: boolean + description: Trigger event when an incident is created. + vulnerability_events: + type: boolean + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + - room + description: Create/Edit Telegram integration + putApiV4ProjectsIdServicesUnifyCircuit: + type: object + properties: + webhook: + type: string + description: The Unify Circuit webhook (for example, `https://circuit.com/rest/v2/webhooks/incoming/...`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Unify Circuit integration + putApiV4ProjectsIdServicesWebexTeams: + type: object + properties: + webhook: + type: string + description: The Webex Teams webhook. For example, https://api.ciscospark.com/v1/webhooks/incoming/... + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Webex Teams integration + putApiV4ProjectsIdServicesZentao: + type: object + properties: + url: + type: string + description: Base URL of the ZenTao instance. + api_url: + type: string + description: If different from Web URL. + api_token: + type: string + zentao_product_xid: + type: string + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - url + - api_token + - zentao_product_xid + description: Create/Edit Zentao integration + putApiV4ProjectsIdServicesSquashTm: + type: object + properties: + url: + type: string + description: URL of the Squash TM webhook. + token: + type: string + description: Secret token. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - url + description: Create/Edit Squash Tm integration + putApiV4ProjectsIdServicesGithub: + type: object + properties: + token: + type: string + description: GitHub API token with `repo:status` OAuth scope. + repository_url: + type: string + description: GitHub repository URL. + static_context: + type: boolean + description: Append the hostname of your GitLab instance to the status check + name. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + - repository_url + description: Create/Edit Github integration + putApiV4ProjectsIdServicesGitGuardian: + type: object + properties: + token: + type: string + description: Personal access token to authenticate calls to the GitGuardian + API. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Git Guardian integration + putApiV4ProjectsIdServicesGoogleCloudPlatformArtifactRegistry: + type: object + properties: + artifact_registry_project_id: + type: string + description: ID of the Google Cloud project. + artifact_registry_repositories: + type: string + description: Repository of Artifact Registry. + artifact_registry_location: + type: string + description: Location of the Artifact Registry repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - artifact_registry_project_id + - artifact_registry_repositories + - artifact_registry_location + description: Create/Edit Google Cloud Platform Artifact Registry integration + putApiV4ProjectsIdServicesGoogleCloudPlatformWorkloadIdentityFederation: + type: object + properties: + workload_identity_federation_project_id: + type: string + description: Google Cloud project ID for the Workload Identity Federation. + workload_identity_federation_project_number: + type: string + description: Google Cloud project number for the Workload Identity Federation. + workload_identity_pool_id: + type: string + description: ID of the Workload Identity Pool. + workload_identity_pool_provider_id: + type: string + description: ID of the Workload Identity Pool provider. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - workload_identity_federation_project_id + - workload_identity_federation_project_number + - workload_identity_pool_id + - workload_identity_pool_provider_id + description: Create/Edit Google Cloud Platform Workload Identity Federation integration + putApiV4ProjectsIdServicesMockCi: + type: object + properties: + enable_ssl_verification: + type: boolean + description: Enable SSL verification. Defaults to `true` (enabled). + mock_service_url: + type: string + description: URL of the Mock CI integration. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - mock_service_url + description: Create/Edit Mock Ci integration + putApiV4ProjectsIdServicesMockMonitoring: + type: object + properties: + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + description: Create/Edit Mock Monitoring integration + postApiV4ProjectsIdServicesMattermostSlashCommandsTrigger: + type: object + properties: + token: + type: string + description: The Mattermost token. + required: + - token + description: Trigger a slash command for mattermost-slash-commands + postApiV4ProjectsIdServicesSlackSlashCommandsTrigger: + type: object + properties: + token: + type: string + description: The Slack token. + required: + - token + description: Trigger a slash command for slack-slash-commands + putApiV4ProjectsIdIntegrationsAppleAppStore: + type: object + properties: + app_store_issuer_id: + type: string + description: Apple App Store Connect issuer ID. + app_store_key_id: + type: string + description: Apple App Store Connect key ID. + app_store_private_key_file_name: + type: string + description: Apple App Store Connect private key file name. + app_store_private_key: + type: string + description: Apple App Store Connect private key. + app_store_protected_refs: + type: boolean + description: Set variables on protected branches and tags only. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - app_store_issuer_id + - app_store_key_id + - app_store_private_key_file_name + - app_store_private_key + description: Create/Edit Apple App Store integration + putApiV4ProjectsIdIntegrationsAsana: + type: object + properties: + api_key: + type: string + description: User API token. The user must have access to the task. All comments + are attributed to this user. + restrict_to_branch: + type: string + description: Comma-separated list of branches to be automatically inspected. + Leave blank to include all branches. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - api_key + description: Create/Edit Asana integration + putApiV4ProjectsIdIntegrationsAssembla: + type: object + properties: + token: + type: string + description: The authentication token. + subdomain: + type: string + description: The subdomain setting. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Assembla integration + putApiV4ProjectsIdIntegrationsBamboo: + type: object + properties: + enable_ssl_verification: + type: boolean + description: Enable SSL verification. Defaults to `true` (enabled). + bamboo_url: + type: string + description: Bamboo root URL (for example, `https://bamboo.example.com`). + build_key: + type: string + description: Bamboo build plan key (for example, `KEY`). + username: + type: string + description: User with API access to the Bamboo server. + password: + type: string + description: Password of the user. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - bamboo_url + - build_key + - username + - password + description: Create/Edit Bamboo integration + putApiV4ProjectsIdIntegrationsBugzilla: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + new_issue_url: + type: string + description: URL of the new issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + - new_issue_url + description: Create/Edit Bugzilla integration + putApiV4ProjectsIdIntegrationsBuildkite: + type: object + properties: + project_url: + type: string + description: Pipeline URL (for example, `https://buildkite.com/example/pipeline`). + token: + type: string + description: Token you get after you create a Buildkite pipeline with a GitLab + repository. + enable_ssl_verification: + type: boolean + description: 'DEPRECATED: This parameter has no effect because SSL verification + is always enabled.' + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - token + description: Create/Edit Buildkite integration + putApiV4ProjectsIdIntegrationsCampfire: + type: object + properties: + token: + type: string + description: API authentication token from Campfire. To get the token, sign + in to Campfire and select **My info**. + subdomain: + type: string + description: "`.campfirenow.com` subdomain when you're signed in." + room: + type: string + description: ID portion of the Campfire room URL. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Campfire integration + putApiV4ProjectsIdIntegrationsConfluence: + type: object + properties: + confluence_url: + type: string + description: URL of the Confluence Workspace hosted on `atlassian.net`. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - confluence_url + description: Create/Edit Confluence integration + putApiV4ProjectsIdIntegrationsCustomIssueTracker: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + new_issue_url: + type: string + description: URL of the new issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + - new_issue_url + description: Create/Edit Custom Issue Tracker integration + putApiV4ProjectsIdIntegrationsDatadog: + type: object + properties: + datadog_site: + type: string + description: Datadog site to send data to. Learn more about Datadog sites + in the documentation. + api_url: + type: string + description: Full URL of your Datadog site. Only required if you do not use + a standard Datadog site. + api_key: + type: string + description: API + key used for authentication with Datadog. + datadog_ci_visibility: + type: boolean + description: Enable CI Visibility + archive_trace_events: + type: boolean + description: When enabled, job logs are collected by Datadog and displayed + along with pipeline execution traces. + datadog_service: + type: string + description: Tag all pipeline data from this GitLab instance in Datadog. Can + be used when managing several self-managed deployments. + datadog_env: + type: string + description: For self-managed deployments, `env` tag for all the data sent + to Datadog. + datadog_tags: + type: string + description: Custom tags in Datadog. Specify one tag per line in the format + `key:value\nkey2:value2`. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + build_events: + type: boolean + description: Trigger event when a build is created. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + subgroup_events: + type: boolean + project_events: + type: boolean + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - api_key + description: Create/Edit Datadog integration + putApiV4ProjectsIdIntegrationsDiffblueCover: + type: object + properties: + diffblue_license_key: + type: string + description: Diffblue Cover license key. + diffblue_access_token_name: + type: string + description: Access token name used by Diffblue Cover in pipelines. + diffblue_access_token_secret: + type: string + description: Access token secret used by Diffblue Cover in pipelines. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - diffblue_license_key + - diffblue_access_token_name + - diffblue_access_token_secret + description: Create/Edit Diffblue Cover integration + putApiV4ProjectsIdIntegrationsDiscord: + type: object + properties: + webhook: + type: string + description: Discord webhook (for example, `https://discord.com/api/webhooks/…`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_channel: + type: string + description: The name of the channel to receive push_events notifications + issue_channel: + type: string + description: The name of the channel to receive issues_events notifications + incident_channel: + type: string + description: The name of the channel to receive incident_events notifications + alert_channel: + type: string + description: The name of the channel to receive alert_events notifications + confidential_issue_channel: + type: string + description: The name of the channel to receive confidential_issues_events + notifications + merge_request_channel: + type: string + description: The name of the channel to receive merge_requests_events notifications + note_channel: + type: string + description: The name of the channel to receive note_events notifications + confidential_note_channel: + type: string + description: The name of the channel to receive confidential_note_events notifications + tag_push_channel: + type: string + description: The name of the channel to receive tag_push_events notifications + deployment_channel: + type: string + description: The name of the channel to receive deployment_events notifications + pipeline_channel: + type: string + description: The name of the channel to receive pipeline_events notifications + wiki_page_channel: + type: string + description: The name of the channel to receive wiki_page_events notifications + vulnerability_channel: + type: string + description: The name of the channel to receive vulnerability_events notifications + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + deployment_events: + type: boolean + description: Trigger event when a deployment starts or finishes. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Discord integration + putApiV4ProjectsIdIntegrationsDroneCi: + type: object + properties: + enable_ssl_verification: + type: boolean + description: Enable SSL verification. Defaults to `true` (enabled). + drone_url: + type: string + description: Drone CI URL (for example, `http://drone.example.com`). + token: + type: string + description: Drone CI token. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - drone_url + - token + description: Create/Edit Drone Ci integration + putApiV4ProjectsIdIntegrationsEmailsOnPush: + type: object + properties: + send_from_committer_email: + type: boolean + description: Send from committer + disable_diffs: + type: boolean + description: Disable code diffs + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + recipients: + type: string + description: Emails separated by whitespace. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - recipients + description: Create/Edit Emails On Push integration + putApiV4ProjectsIdIntegrationsExternalWiki: + type: object + properties: + external_wiki_url: + type: string + description: URL of the external wiki. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - external_wiki_url + description: Create/Edit External Wiki integration + putApiV4ProjectsIdIntegrationsGitlabSlackApplication: + type: object + properties: + channel: + type: string + description: Default channel to use if no other channel is configured. + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + labels_to_be_notified: + type: string + description: Labels to send notifications for. Leave blank to receive notifications + for all events. + labels_to_be_notified_behavior: + type: string + description: Labels to be notified for. Valid options are `match_any` and + `match_all`. The default value is `match_any`. + push_channel: + type: string + description: The name of the channel to receive push_events notifications + issue_channel: + type: string + description: The name of the channel to receive issues_events notifications + incident_channel: + type: string + description: The name of the channel to receive incident_events notifications + alert_channel: + type: string + description: The name of the channel to receive alert_events notifications + confidential_issue_channel: + type: string + description: The name of the channel to receive confidential_issues_events + notifications + merge_request_channel: + type: string + description: The name of the channel to receive merge_requests_events notifications + note_channel: + type: string + description: The name of the channel to receive note_events notifications + confidential_note_channel: + type: string + description: The name of the channel to receive confidential_note_events notifications + tag_push_channel: + type: string + description: The name of the channel to receive tag_push_events notifications + deployment_channel: + type: string + description: The name of the channel to receive deployment_events notifications + pipeline_channel: + type: string + description: The name of the channel to receive pipeline_events notifications + wiki_page_channel: + type: string + description: The name of the channel to receive wiki_page_events notifications + vulnerability_channel: + type: string + description: The name of the channel to receive vulnerability_events notifications + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + deployment_events: + type: boolean + description: Trigger event when a deployment starts or finishes. + incident_events: + type: boolean + description: Trigger event when an incident is created. + vulnerability_events: + type: boolean + alert_events: + type: boolean + description: Trigger event when a new, unique alert is recorded. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + description: Create/Edit Gitlab Slack Application integration + putApiV4ProjectsIdIntegrationsGooglePlay: + type: object + properties: + package_name: + type: string + description: Package name of the app in Google Play. + service_account_key_file_name: + type: string + description: File name of the Google Play service account key. + service_account_key: + type: string + description: Google Play service account key. + google_play_protected_refs: + type: boolean + description: Set variables on protected branches and tags only. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - package_name + - service_account_key_file_name + - service_account_key + description: Create/Edit Google Play integration + putApiV4ProjectsIdIntegrationsHangoutsChat: + type: object + properties: + webhook: + type: string + description: The Hangouts Chat webhook (for example, `https://chat.googleapis.com/v1/spaces...`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Hangouts Chat integration + putApiV4ProjectsIdIntegrationsHarbor: + type: object + properties: + url: + type: string + description: The base URL to the Harbor instance linked to the GitLab project. + For example, `https://demo.goharbor.io`. + project_name: + type: string + description: The name of the project in the Harbor instance. For example, + `testproject`. + username: + type: string + description: The username created in the Harbor interface. + password: + type: string + description: The password of the user. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - url + - project_name + - username + - password + description: Create/Edit Harbor integration + putApiV4ProjectsIdIntegrationsIrker: + type: object + properties: + server_host: + type: string + description: irker daemon hostname. The default value is `localhost`. + server_port: + type: integer + format: int32 + description: irker daemon port. The default value is `6659`. + default_irc_uri: + type: string + description: URI to add before each recipient. The default value is `irc://irc.network.net:6697/`. + recipients: + type: string + description: Comma-separated list of channels or email addresses. + colorize_messages: + type: boolean + description: Colorize messages + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - recipients + description: Create/Edit Irker integration + putApiV4ProjectsIdIntegrationsJenkins: + type: object + properties: + enable_ssl_verification: + type: boolean + description: Enable SSL verification. Defaults to `true` (enabled). + jenkins_url: + type: string + description: URL of the Jenkins server. + project_name: + type: string + description: Name of the Jenkins project. + username: + type: string + description: Username of the Jenkins server. + password: + type: string + description: Password of the Jenkins server. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - jenkins_url + - project_name + description: Create/Edit Jenkins integration + putApiV4ProjectsIdIntegrationsJira: + type: object + properties: + url: + type: string + description: The URL to the Jira project which is being linked to this GitLab + project (for example, `https://jira.example.com`). + api_url: + type: string + description: The base URL to the Jira instance API. Web URL value is used + if not set (for example, `https://jira-api.example.com`). + jira_auth_type: + type: integer + format: int32 + description: The authentication method to use with Jira. Use `0` for Basic + Authentication, and `1` for Jira personal access token. Defaults to `0`. + username: + type: string + description: The email or username to use with Jira. Use an email for Jira + Cloud, and a username for Jira Data Center and Jira Server. Required when + using Basic Authentication (`jira_auth_type` is `0`). + password: + type: string + description: The Jira API token, password, or personal access token to use + with Jira. When using Basic Authentication (`jira_auth_type` is `0`), use + an API token for Jira Cloud, and a password for Jira Data Center or Jira + Server. For a Jira personal access token (`jira_auth_type` is `1`), use + the personal access token. + jira_issue_regex: + type: string + description: Regular expression to match Jira issue keys. + jira_issue_prefix: + type: string + description: Prefix to match Jira issue keys. + jira_issue_transition_id: + type: string + description: The ID of one or more transitions for [custom issue transitions](../integration/jira/issues.md#custom-issue-transitions).Ignored + when `jira_issue_transition_automatic` is enabled. Defaults to a blank string,which + disables custom transitions. + issues_enabled: + type: string + description: Enable viewing Jira issues in GitLab. + project_keys: + type: array + description: Keys of Jira projects. When `issues_enabled` is `true`, this + setting specifies which Jira projects to view issues from in GitLab. + items: + type: string + vulnerabilities_enabled: + type: boolean + description: Turn on Jira issue creation for GitLab vulnerabilities. + vulnerabilities_issuetype: + type: string + description: Jira issue type to use when creating issues from vulnerabilities. + project_key: + type: string + description: Key of the project to use when creating issues from vulnerabilities.This + parameter is required if using the integration to create Jira issues from + vulnerabilities. + customize_jira_issue_enabled: + type: boolean + description: When set to `true`, opens a prefilled form on the Jira instancewhen + creating a Jira issue from a vulnerability. + commit_events: + type: boolean + description: Trigger event when a commit is created or updated. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - url + - password + description: Create/Edit Jira integration + putApiV4ProjectsIdIntegrationsJiraCloudApp: + type: object + properties: + jira_cloud_app_service_ids: + type: string + description: Copy and paste your JSM Service ID here. Use comma (,) to separate + multiple IDs. + jira_cloud_app_enable_deployment_gating: + type: boolean + description: Enable to approve or reject blocked GitLab deployments from Jira + Service Management. + jira_cloud_app_deployment_gating_environments: + type: string + description: Enter the environment (production,staging,testing,development) + where you want to enable deployment gating. Use comma (,) to separate multiple + environments. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + description: Create/Edit Jira Cloud App integration + putApiV4ProjectsIdIntegrationsMatrix: + type: object + properties: + hostname: + type: string + description: Custom hostname of the Matrix server. The default value is `https://matrix-client.matrix.org`. + token: + type: string + description: The Matrix access token (for example, `syt-zyx57W2v1u123ew11`). + room: + type: string + description: Unique identifier for the target room (in the format `!qPKKM111FFKKsfoCVy:matrix.org`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + incident_events: + type: boolean + description: Trigger event when an incident is created. + vulnerability_events: + type: boolean + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + - room + description: Create/Edit Matrix integration + putApiV4ProjectsIdIntegrationsMattermostSlashCommands: + type: object + properties: + token: + type: string + description: The Mattermost token. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Mattermost Slash Commands integration + putApiV4ProjectsIdIntegrationsSlackSlashCommands: + type: object + properties: + token: + type: string + description: The Slack token. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Slack Slash Commands integration + putApiV4ProjectsIdIntegrationsPackagist: + type: object + properties: + username: + type: string + description: Username of a Packagist account. + token: + type: string + description: API token of the Packagist server. + server: + type: string + description: URL of the Packagist server. The default value is `https://packagist.org`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - username + - token + description: Create/Edit Packagist integration + putApiV4ProjectsIdIntegrationsPhorge: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + description: Create/Edit Phorge integration + putApiV4ProjectsIdIntegrationsPipelinesEmail: + type: object + properties: + recipients: + type: string + description: Comma-separated list of recipient email addresses. + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + notify_only_default_branch: + type: boolean + description: Send notifications for the default branch. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - recipients + description: Create/Edit Pipelines Email integration + putApiV4ProjectsIdIntegrationsPivotaltracker: + type: object + properties: + token: + type: string + description: The Pivotal Tracker token. + restrict_to_branch: + type: string + description: Comma-separated list of branches to automatically inspect. Leave + blank to include all branches. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Pivotaltracker integration + putApiV4ProjectsIdIntegrationsPumble: + type: object + properties: + webhook: + type: string + description: The Pumble webhook (for example, `https://api.pumble.com/workspaces/x/...`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Pumble integration + putApiV4ProjectsIdIntegrationsPushover: + type: object + properties: + api_key: + type: string + description: The application key. + user_key: + type: string + description: The user key. + device: + type: string + description: Leave blank for all active devices. + priority: + type: string + description: The priority. + sound: + type: string + description: The sound of the notification. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - api_key + - user_key + - priority + description: Create/Edit Pushover integration + putApiV4ProjectsIdIntegrationsRedmine: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + new_issue_url: + type: string + description: URL of the new issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + - new_issue_url + description: Create/Edit Redmine integration + putApiV4ProjectsIdIntegrationsEwm: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + new_issue_url: + type: string + description: URL of the new issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + - new_issue_url + description: Create/Edit Ewm integration + putApiV4ProjectsIdIntegrationsYoutrack: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + description: Create/Edit Youtrack integration + putApiV4ProjectsIdIntegrationsClickup: + type: object + properties: + project_url: + type: string + description: URL of the project. + issues_url: + type: string + description: URL of the issue. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - project_url + - issues_url + description: Create/Edit Clickup integration + putApiV4ProjectsIdIntegrationsSlack: + type: object + properties: + webhook: + type: string + description: Slack notifications webhook (for example, `https://hooks.slack.com/services/...`). + username: + type: string + description: Slack notifications username. + channel: + type: string + description: Default channel to use if no other channel is configured. + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + labels_to_be_notified: + type: string + description: Labels to send notifications for. Leave blank to receive notifications + for all events. + labels_to_be_notified_behavior: + type: string + description: Labels to be notified for. Valid options are `match_any` and + `match_all`. The default value is `match_any`. + push_channel: + type: string + description: The name of the channel to receive push_events notifications + issue_channel: + type: string + description: The name of the channel to receive issues_events notifications + incident_channel: + type: string + description: The name of the channel to receive incident_events notifications + alert_channel: + type: string + description: The name of the channel to receive alert_events notifications + confidential_issue_channel: + type: string + description: The name of the channel to receive confidential_issues_events + notifications + merge_request_channel: + type: string + description: The name of the channel to receive merge_requests_events notifications + note_channel: + type: string + description: The name of the channel to receive note_events notifications + confidential_note_channel: + type: string + description: The name of the channel to receive confidential_note_events notifications + tag_push_channel: + type: string + description: The name of the channel to receive tag_push_events notifications + deployment_channel: + type: string + description: The name of the channel to receive deployment_events notifications + pipeline_channel: + type: string + description: The name of the channel to receive pipeline_events notifications + wiki_page_channel: + type: string + description: The name of the channel to receive wiki_page_events notifications + vulnerability_channel: + type: string + description: The name of the channel to receive vulnerability_events notifications + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + deployment_events: + type: boolean + description: Trigger event when a deployment starts or finishes. + incident_events: + type: boolean + description: Trigger event when an incident is created. + vulnerability_events: + type: boolean + alert_events: + type: boolean + description: Trigger event when a new, unique alert is recorded. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Slack integration + putApiV4ProjectsIdIntegrationsMicrosoftTeams: + type: object + properties: + webhook: + type: string + description: The Microsoft Teams webhook (for example, `https://outlook.office.com/webhook/...`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Microsoft Teams integration + putApiV4ProjectsIdIntegrationsMattermost: + type: object + properties: + webhook: + type: string + description: Mattermost notifications webhook (for example, `http://mattermost.example.com/hooks/...`). + username: + type: string + description: Mattermost notifications username. + channel: + type: string + description: Default channel to use if no other channel is configured. + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + labels_to_be_notified: + type: string + description: Labels to send notifications for. Leave blank to receive notifications + for all events. + labels_to_be_notified_behavior: + type: string + description: Labels to be notified for. Valid options are `match_any` and + `match_all`. The default value is `match_any`. + push_channel: + type: string + description: The name of the channel to receive push_events notifications + issue_channel: + type: string + description: The name of the channel to receive issues_events notifications + incident_channel: + type: string + description: The name of the channel to receive incident_events notifications + alert_channel: + type: string + description: The name of the channel to receive alert_events notifications + confidential_issue_channel: + type: string + description: The name of the channel to receive confidential_issues_events + notifications + merge_request_channel: + type: string + description: The name of the channel to receive merge_requests_events notifications + note_channel: + type: string + description: The name of the channel to receive note_events notifications + confidential_note_channel: + type: string + description: The name of the channel to receive confidential_note_events notifications + tag_push_channel: + type: string + description: The name of the channel to receive tag_push_events notifications + deployment_channel: + type: string + description: The name of the channel to receive deployment_events notifications + pipeline_channel: + type: string + description: The name of the channel to receive pipeline_events notifications + wiki_page_channel: + type: string + description: The name of the channel to receive wiki_page_events notifications + vulnerability_channel: + type: string + description: The name of the channel to receive vulnerability_events notifications + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + deployment_events: + type: boolean + description: Trigger event when a deployment starts or finishes. + incident_events: + type: boolean + description: Trigger event when an incident is created. + vulnerability_events: + type: boolean + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Mattermost integration + putApiV4ProjectsIdIntegrationsTeamcity: + type: object + properties: + enable_ssl_verification: + type: boolean + description: Enable SSL verification. Defaults to `true` (enabled). + teamcity_url: + type: string + description: TeamCity root URL (for example, `https://teamcity.example.com`). + build_type: + type: string + description: The build configuration ID of the TeamCity project. + username: + type: string + description: A user with permissions to trigger a manual build. + password: + type: string + description: The password of the user. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - teamcity_url + - build_type + - username + - password + description: Create/Edit Teamcity integration + putApiV4ProjectsIdIntegrationsTelegram: + type: object + properties: + hostname: + type: string + description: Custom hostname of the Telegram API. The default value is `https://api.telegram.org`. + token: + type: string + description: The Telegram bot token (for example, `123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11`). + room: + type: string + description: Unique identifier for the target chat or the username of the + target channel (in the format `@channelusername`). + thread: + type: string + description: Unique identifier for the target message thread (topic in a forum + supergroup). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + incident_events: + type: boolean + description: Trigger event when an incident is created. + vulnerability_events: + type: boolean + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + - room + description: Create/Edit Telegram integration + putApiV4ProjectsIdIntegrationsUnifyCircuit: + type: object + properties: + webhook: + type: string + description: The Unify Circuit webhook (for example, `https://circuit.com/rest/v2/webhooks/incoming/...`). + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Unify Circuit integration + putApiV4ProjectsIdIntegrationsWebexTeams: + type: object + properties: + webhook: + type: string + description: The Webex Teams webhook. For example, https://api.ciscospark.com/v1/webhooks/incoming/... + notify_only_broken_pipelines: + type: boolean + description: Send notifications for broken pipelines. + branches_to_be_notified: + type: string + description: Branches to send notifications for. Valid options are `all`, + `default`, `protected`, and `default_and_protected`. The default value is + `default`. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + merge_requests_events: + type: boolean + description: Trigger event when a merge request is created, updated, or merged. + note_events: + type: boolean + description: Trigger event for new comments. + confidential_note_events: + type: boolean + description: Trigger event for new comments on confidential issues. + tag_push_events: + type: boolean + description: Trigger event for new tags pushed to the repository. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + wiki_page_events: + type: boolean + description: Trigger event when a wiki page is created or updated. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - webhook + description: Create/Edit Webex Teams integration + putApiV4ProjectsIdIntegrationsZentao: + type: object + properties: + url: + type: string + description: Base URL of the ZenTao instance. + api_url: + type: string + description: If different from Web URL. + api_token: + type: string + zentao_product_xid: + type: string + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - url + - api_token + - zentao_product_xid + description: Create/Edit Zentao integration + putApiV4ProjectsIdIntegrationsSquashTm: + type: object + properties: + url: + type: string + description: URL of the Squash TM webhook. + token: + type: string + description: Secret token. + issues_events: + type: boolean + description: Trigger event when an issue is created, updated, or closed. + confidential_issues_events: + type: boolean + description: Trigger event when a confidential issue is created, updated, + or closed. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - url + description: Create/Edit Squash Tm integration + putApiV4ProjectsIdIntegrationsGithub: + type: object + properties: + token: + type: string + description: GitHub API token with `repo:status` OAuth scope. + repository_url: + type: string + description: GitHub repository URL. + static_context: + type: boolean + description: Append the hostname of your GitLab instance to the status check + name. + pipeline_events: + type: boolean + description: Trigger event when a pipeline status changes. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + - repository_url + description: Create/Edit Github integration + putApiV4ProjectsIdIntegrationsGitGuardian: + type: object + properties: + token: + type: string + description: Personal access token to authenticate calls to the GitGuardian + API. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - token + description: Create/Edit Git Guardian integration + putApiV4ProjectsIdIntegrationsGoogleCloudPlatformArtifactRegistry: + type: object + properties: + artifact_registry_project_id: + type: string + description: ID of the Google Cloud project. + artifact_registry_repositories: + type: string + description: Repository of Artifact Registry. + artifact_registry_location: + type: string + description: Location of the Artifact Registry repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - artifact_registry_project_id + - artifact_registry_repositories + - artifact_registry_location + description: Create/Edit Google Cloud Platform Artifact Registry integration + putApiV4ProjectsIdIntegrationsGoogleCloudPlatformWorkloadIdentityFederation: + type: object + properties: + workload_identity_federation_project_id: + type: string + description: Google Cloud project ID for the Workload Identity Federation. + workload_identity_federation_project_number: + type: string + description: Google Cloud project number for the Workload Identity Federation. + workload_identity_pool_id: + type: string + description: ID of the Workload Identity Pool. + workload_identity_pool_provider_id: + type: string + description: ID of the Workload Identity Pool provider. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - workload_identity_federation_project_id + - workload_identity_federation_project_number + - workload_identity_pool_id + - workload_identity_pool_provider_id + description: Create/Edit Google Cloud Platform Workload Identity Federation integration + putApiV4ProjectsIdIntegrationsMockCi: + type: object + properties: + enable_ssl_verification: + type: boolean + description: Enable SSL verification. Defaults to `true` (enabled). + mock_service_url: + type: string + description: URL of the Mock CI integration. + push_events: + type: boolean + description: Trigger event for pushes to the repository. + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + required: + - mock_service_url + description: Create/Edit Mock Ci integration + putApiV4ProjectsIdIntegrationsMockMonitoring: + type: object + properties: + use_inherited_settings: + type: boolean + description: Indicates whether to inherit the default settings. Defaults to + `false`. + description: Create/Edit Mock Monitoring integration + postApiV4ProjectsIdIntegrationsMattermostSlashCommandsTrigger: + type: object + properties: + token: + type: string + description: The Mattermost token. + required: + - token + description: Trigger a slash command for mattermost-slash-commands + postApiV4ProjectsIdIntegrationsSlackSlashCommandsTrigger: + type: object + properties: + token: + type: string + description: The Slack token. + required: + - token + description: Trigger a slash command for slack-slash-commands + postApiV4ProjectsIdInvitations: + type: object + properties: + access_level: + type: integer + format: int32 + description: 'A valid access level (defaults: `30`, developer access level)' + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + - 5 + email: + type: array + description: The email address to invite, or multiple emails separated by + comma + items: + type: string + user_id: + type: array + description: The user ID of the new member or multiple IDs separated by commas. + items: + type: string + expires_at: + type: string + format: date-time + description: Date string in the format YEAR-MONTH-DAY + invite_source: + type: string + description: Source that triggered the member creation process + default: invitations-api + member_role_id: + type: integer + format: int32 + description: The ID of a member role for the invited user + required: + - access_level + description: Invite non-members by email address to a group or project. + putApiV4ProjectsIdInvitationsEmail: + type: object + properties: + access_level: + type: integer + format: int32 + description: 'A valid access level (defaults: `30`, developer access level)' + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + expires_at: + type: string + format: date-time + description: Date string in ISO 8601 format (`YYYY-MM-DDTHH:MM:SSZ`) + member_role_id: + type: integer + format: int32 + description: The ID of a member role for the invited user + description: Updates a group or project invitation. + API_Entities_RelatedIssue: + type: object + properties: + id: + type: integer + format: int32 + example: 84 + iid: + type: integer + format: int32 + example: 14 + project_id: + type: integer + format: int32 + example: 4 + title: + type: string + example: Impedit et ut et dolores vero provident ullam est + description: + type: string + example: Repellendus impedit et vel velit dignissimos. + state: + type: string + example: closed + created_at: + type: string + format: date-time + example: '2022-08-17T12:46:35.053Z' + updated_at: + type: string + format: date-time + example: '2022-11-14T17:22:01.470Z' + closed_at: + type: string + format: date-time + example: '2022-11-15T08:30:55.232Z' + closed_by: + "$ref": "#/definitions/API_Entities_UserBasic" + labels: + type: array + items: + type: string + example: bug + milestone: + "$ref": "#/definitions/API_Entities_Milestone" + assignees: + "$ref": "#/definitions/API_Entities_UserBasic" + author: + "$ref": "#/definitions/API_Entities_UserBasic" + type: + type: string + example: ISSUE + description: One of ["ISSUE", "INCIDENT", "TEST_CASE", "REQUIREMENT", "TASK", + "TICKET"] + assignee: + "$ref": "#/definitions/API_Entities_UserBasic" + user_notes_count: + type: string + merge_requests_count: + type: string + upvotes: + type: string + downvotes: + type: string + due_date: + type: string + format: date + example: '2022-11-20' + confidential: + type: boolean + discussion_locked: + type: boolean + issue_type: + type: string + example: issue + web_url: + type: string + example: http://example.com/example/example/issues/14 + time_stats: + "$ref": "#/definitions/API_Entities_IssuableTimeStats" + task_completion_status: + type: string + weight: + type: string + blocking_issues_count: + type: string + has_tasks: + type: string + task_status: + type: string + _links: + type: object + properties: + self: + type: string + notes: + type: string + award_emoji: + type: string + project: + type: string + closed_as_duplicate_of: + type: string + references: + "$ref": "#/definitions/API_Entities_IssuableReferences" + severity: + type: string + description: One of ["UNKNOWN", "LOW", "MEDIUM", "HIGH", "CRITICAL"] + subscribed: + type: string + moved_to_id: + type: string + imported: + type: string + imported_from: + type: string + example: github + service_desk_reply_to: + type: string + epic_iid: + type: string + epic: + "$ref": "#/definitions/EpicBaseEntity" + iteration: + "$ref": "#/definitions/API_Entities_Iteration" + health_status: + type: string + issue_link_id: + type: string + link_type: + type: string + link_created_at: + type: string + link_updated_at: + type: string + description: API_Entities_RelatedIssue model + EpicBaseEntity: + type: object + properties: + id: + type: string + iid: + type: string + title: + type: string + url: + type: string + group_id: + type: string + human_readable_end_date: + type: string + human_readable_timestamp: + type: string + API_Entities_Iteration: + type: object + properties: + id: + type: string + iid: + type: string + sequence: + type: string + group_id: + type: string + title: + type: string + description: + type: string + state: + type: string + created_at: + type: string + updated_at: + type: string + start_date: + type: string + due_date: + type: string + web_url: + type: string + postApiV4ProjectsIdIssuesIssueIidLinks: + type: object + properties: + target_project_id: + type: string + description: The ID or URL-encoded path of a target project + target_issue_iid: + type: string + description: The internal ID of a target project’s issue + link_type: + type: string + description: The type of the relation (“relates_to”, “blocks”, “is_blocked_by”),defaults + to “relates_to”) + enum: + - relates_to + - blocks + - is_blocked_by + required: + - target_project_id + - target_issue_iid + description: Create an issue link + API_Entities_IssueLink: + type: object + properties: + source_issue: + "$ref": "#/definitions/API_Entities_IssueBasic" + target_issue: + "$ref": "#/definitions/API_Entities_IssueBasic" + link_type: + type: string + description: API_Entities_IssueLink model + API_Entities_IssueBasic: + type: object + properties: + id: + type: integer + format: int32 + example: 84 + iid: + type: integer + format: int32 + example: 14 + project_id: + type: integer + format: int32 + example: 4 + title: + type: string + example: Impedit et ut et dolores vero provident ullam est + description: + type: string + example: Repellendus impedit et vel velit dignissimos. + state: + type: string + example: closed + created_at: + type: string + format: date-time + example: '2022-08-17T12:46:35.053Z' + updated_at: + type: string + format: date-time + example: '2022-11-14T17:22:01.470Z' + closed_at: + type: string + format: date-time + example: '2022-11-15T08:30:55.232Z' + closed_by: + "$ref": "#/definitions/API_Entities_UserBasic" + labels: + type: array + items: + type: string + example: bug + milestone: + "$ref": "#/definitions/API_Entities_Milestone" + assignees: + "$ref": "#/definitions/API_Entities_UserBasic" + author: + "$ref": "#/definitions/API_Entities_UserBasic" + type: + type: string + example: ISSUE + description: One of ["ISSUE", "INCIDENT", "TEST_CASE", "REQUIREMENT", "TASK", + "TICKET"] + assignee: + "$ref": "#/definitions/API_Entities_UserBasic" + user_notes_count: + type: string + merge_requests_count: + type: string + upvotes: + type: string + downvotes: + type: string + due_date: + type: string + format: date + example: '2022-11-20' + confidential: + type: boolean + discussion_locked: + type: boolean + issue_type: + type: string + example: issue + web_url: + type: string + example: http://example.com/example/example/issues/14 + time_stats: + "$ref": "#/definitions/API_Entities_IssuableTimeStats" + task_completion_status: + type: string + weight: + type: string + blocking_issues_count: + type: string + API_Entities_Ci_Lint_Result: + type: object + properties: + valid: + type: boolean + errors: + type: array + items: + type: string + example: variables config should be a hash of key value pairs + warnings: + type: array + items: + type: string + example: jobs:job may allow multiple pipelines ... + merged_yaml: + type: string + example: |- + ---\n:another_test:\n :stage: test\n + :script: echo 2\n:test:\n :stage: test\n :script: echo 1\n + includes: + type: array + items: + "$ref": "#/definitions/API_Entities_Ci_Lint_Result_Include" + example: '{ "blob": "https://gitlab.com/root/example-project/-/blob/...' + jobs: + type: array + items: + type: object + example: '{ "name": "test: .... }' + description: API_Entities_Ci_Lint_Result model + API_Entities_Ci_Lint_Result_Include: + type: object + properties: + type: + type: string + example: local + location: + type: string + example: ".gitlab/ci/build-images.gitlab-ci.yml" + blob: + type: string + example: https://gitlab.com/gitlab-org/gitlab/-/blob/e52d6d0246d7375291850e61f0abc101fbda9dc2/.gitlab/ci/build-images.gitlab-ci.yml + raw: + type: string + example: https://gitlab.com/gitlab-org/gitlab/-/raw/e52d6d0246d7375291850e61f0abc101fbda9dc2/.gitlab/ci/build-images.gitlab-ci.yml + extra: + type: object + example: '{ "job_name": "test", "project": "gitlab-org/gitlab", "ref": "master" + }' + context_project: + type: string + example: gitlab-org/gitlab + context_sha: + type: string + example: e52d6d0246d7375291850e61f0abc101fbda9dc2 + postApiV4ProjectsIdCiLint: + type: object + properties: + content: + type: string + description: Content of .gitlab-ci.yml + dry_run: + type: boolean + description: Run pipeline creation simulation, or only do static check. This + is false by default + default: false + include_jobs: + type: boolean + description: |- + If the list of jobs that would exist in a static check or pipeline + simulation should be included in the response. This is false by default + ref: + type: string + description: When dry_run is true, sets the branch or tag to use. Defaults + to the project’s default branch when not set + required: + - content + description: Validate a CI YAML configuration with a namespace + postApiV4ProjectsIdUploads: + type: object + properties: + file: + type: file + description: The attachment file to be uploaded + required: + - file + description: Upload a file + API_Entities_ProjectUpload: + type: object + properties: + id: + type: string + alt: + type: string + url: + type: string + full_path: + type: string + markdown: + type: string + description: API_Entities_ProjectUpload model + putApiV4ProjectsIdPackagesMaven*pathFileNameAuthorize: + type: object + properties: + path: + type: string + description: Package path + example: foo/bar/mypkg/1.0-SNAPSHOT + required: + - path + description: Workhorse authorize the maven package file upload + putApiV4ProjectsIdPackagesMaven*pathFileName: + type: object + properties: + path: + type: string + description: Package path + example: foo/bar/mypkg/1.0-SNAPSHOT + file: + type: file + description: The package file to be published (generated by Multipart middleware) + required: + - path + - file + description: Upload the maven package file + postApiV4ProjectsIdMembers: + type: object + properties: + access_level: + type: integer + format: int32 + description: A valid access level. + user_id: + type: integer + format: int32 + description: The user ID of the new member or multiple IDs separated by commas. + username: + type: string + description: The username of the new member or multiple usernames separated + by commas. + expires_at: + type: string + format: date-time + description: Date string in the format YEAR-MONTH-DAY + invite_source: + type: string + description: Source that triggered the member creation process + default: members-api + required: + - access_level + description: Adds a member to a group or project. + putApiV4ProjectsIdMembersUserId: + type: object + properties: + access_level: + type: integer + format: int32 + description: A valid access level + expires_at: + type: string + format: date-time + description: Date string in the format YEAR-MONTH-DAY + member_role_id: + type: integer + format: int32 + description: The ID of the Member Role to be updated + required: + - access_level + description: Updates a member of a group or project. + API_Entities_MergeRequestApprovals: + type: object + properties: + user_has_approved: + type: boolean + user_can_approve: + type: boolean + approved: + type: boolean + approved_by: + "$ref": "#/definitions/API_Entities_Approvals" + description: API_Entities_MergeRequestApprovals model + API_Entities_Approvals: + type: object + properties: + user: + "$ref": "#/definitions/API_Entities_UserBasic" + postApiV4ProjectsIdMergeRequestsMergeRequestIidApprove: + type: object + properties: + sha: + type: string + description: When present, must have the HEAD SHA of the source branch + approval_password: + type: string + description: Current user's password if project is set to require explicit + auth on approval + example: secret + description: Approve a merge request + EE_API_Entities_MergeRequestApprovalState: + type: object + properties: + approval_rules_overwritten: + type: boolean + rules: + type: array + items: + "$ref": "#/definitions/EE_API_Entities_MergeRequestApprovalStateRule" + description: EE_API_Entities_MergeRequestApprovalState model + EE_API_Entities_MergeRequestApprovalStateRule: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + name: + type: string + example: QA + rule_type: + type: string + example: regular + eligible_approvers: + type: array + items: + "$ref": "#/definitions/API_Entities_UserBasic" + approvals_required: + type: integer + format: int32 + example: 2 + users: + type: array + items: + "$ref": "#/definitions/API_Entities_UserBasic" + groups: + type: array + items: + "$ref": "#/definitions/API_Entities_Group" + contains_hidden_groups: + type: boolean + report_type: + type: string + section: + type: string + example: Backend + source_rule: + "$ref": "#/definitions/EE_API_Entities_MergeRequestApprovalRule_SourceRule" + overridden: + type: boolean + code_owner: + type: boolean + approved_by: + type: array + items: + "$ref": "#/definitions/API_Entities_UserBasic" + approved: + type: boolean + EE_API_Entities_MergeRequestApprovalRule_SourceRule: + type: object + properties: + approvals_required: + type: integer + format: int32 + example: 2 + postApiV4ProjectsIdMergeRequestsMergeRequestIidApprovals: + type: object + properties: + approvals_required: + type: integer + format: int32 + description: The amount of approvals required. Must be higher than the project + approvals + example: 2 + required: + - approvals_required + description: 'Deprecated in 16.0: Use the merge request approvals API instead. + Change approval-related configuration' + EE_API_Entities_ApprovalState: + type: object + properties: + id: + type: integer + format: int32 + example: 84 + iid: + type: integer + format: int32 + example: 14 + project_id: + type: integer + format: int32 + example: 4 + title: + type: string + example: Impedit et ut et dolores vero provident ullam est + description: + type: string + example: Repellendus impedit et vel velit dignissimos. + state: + type: string + example: closed + created_at: + type: string + format: date-time + example: '2022-08-17T12:46:35.053Z' + updated_at: + type: string + format: date-time + example: '2022-11-14T17:22:01.470Z' + merge_status: + type: string + example: can_be_merged + approved: + type: boolean + approvals_required: + type: integer + format: int32 + example: 2 + approvals_left: + type: integer + format: int32 + example: 2 + require_password_to_approve: + type: boolean + approved_by: + type: array + items: + "$ref": "#/definitions/API_Entities_Approvals" + suggested_approvers: + type: array + items: + "$ref": "#/definitions/API_Entities_UserBasic" + approvers: + type: string + approver_groups: + type: string + user_has_approved: + type: boolean + user_can_approve: + type: boolean + approval_rules_left: + type: array + items: + "$ref": "#/definitions/EE_API_Entities_ApprovalRuleShort" + has_approval_rules: + type: boolean + merge_request_approvers_available: + type: boolean + multiple_approval_rules_available: + type: boolean + invalid_approvers_rules: + type: array + items: + "$ref": "#/definitions/EE_API_Entities_ApprovalRuleShort" + description: EE_API_Entities_ApprovalState model + EE_API_Entities_ApprovalRuleShort: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + name: + type: string + example: QA + rule_type: + type: string + example: regular + postApiV4ProjectsIdMergeRequestsMergeRequestIidTimeEstimate: + type: object + properties: + duration: + type: string + description: The duration in human format. + example: 3h30m + required: + - duration + description: Set a time estimate for a merge_request + postApiV4ProjectsIdMergeRequestsMergeRequestIidAddSpentTime: + type: object + properties: + duration: + type: string + description: The duration in human format. + required: + - duration + description: Add spent time for a merge_request + postApiV4ProjectsIdMergeRequests: + type: object + properties: + title: + type: string + description: The title of the merge request. + source_branch: + type: string + description: The source branch. + target_branch: + type: string + description: The target branch. + target_project_id: + type: integer + format: int32 + description: The target project of the merge request defaults to the :id of + the project. + assignee_id: + type: integer + format: int32 + description: Assignee user ID. + assignee_ids: + type: array + description: The IDs of the users to assign the merge request to, as a comma-separated + list. Set to 0 or provide an empty value to unassign all assignees. + items: + type: integer + format: int32 + reviewer_ids: + type: array + description: The IDs of the users to review the merge request, as a comma-separated + list. Set to 0 or provide an empty value to unassign all reviewers. + items: + type: integer + format: int32 + description: + type: string + description: Description of the merge request. Limited to 1,048,576 characters. + labels: + type: array + description: Comma-separated label names for a merge request. Set to an empty + string to unassign all labels. + items: + type: string + add_labels: + type: array + description: Comma-separated label names to add to a merge request. + items: + type: string + remove_labels: + type: array + description: Comma-separated label names to remove from a merge request. + items: + type: string + milestone_id: + type: integer + format: int32 + description: The global ID of a milestone to assign the merge reques to. + remove_source_branch: + type: boolean + description: Flag indicating if a merge request should remove the source branch + when merging. + allow_collaboration: + type: boolean + description: Allow commits from members who can merge to the target branch. + allow_maintainer_to_push: + type: boolean + description: "[deprecated] See allow_collaboration" + squash: + type: boolean + description: Squash commits into a single commit when merging. + merge_after: + type: string + description: Date after which the merge request can be merged. + approvals_before_merge: + type: integer + format: int32 + description: Number of approvals required before this can be merged + required: + - title + - source_branch + - target_branch + description: Create merge request + API_Entities_MergeRequest: + type: object + properties: + id: + type: integer + format: int32 + example: 84 + iid: + type: integer + format: int32 + example: 14 + project_id: + type: integer + format: int32 + example: 4 + title: + type: string + example: Impedit et ut et dolores vero provident ullam est + description: + type: string + example: Repellendus impedit et vel velit dignissimos. + state: + type: string + example: closed + created_at: + type: string + format: date-time + example: '2022-08-17T12:46:35.053Z' + updated_at: + type: string + format: date-time + example: '2022-11-14T17:22:01.470Z' + merged_by: + "$ref": "#/definitions/API_Entities_UserBasic" + merge_user: + "$ref": "#/definitions/API_Entities_UserBasic" + merged_at: + type: string + closed_by: + "$ref": "#/definitions/API_Entities_UserBasic" + closed_at: + type: string + title_html: + type: string + description_html: + type: string + target_branch: + type: string + source_branch: + type: string + user_notes_count: + type: string + upvotes: + type: string + downvotes: + type: string + author: + "$ref": "#/definitions/API_Entities_UserBasic" + assignees: + "$ref": "#/definitions/API_Entities_UserBasic" + assignee: + "$ref": "#/definitions/API_Entities_UserBasic" + reviewers: + "$ref": "#/definitions/API_Entities_UserBasic" + source_project_id: + type: string + target_project_id: + type: string + labels: + type: string + draft: + type: string + imported: + type: string + imported_from: + type: string + example: bitbucket + work_in_progress: + type: string + milestone: + "$ref": "#/definitions/API_Entities_Milestone" + merge_when_pipeline_succeeds: + type: string + merge_status: + type: string + detailed_merge_status: + type: string + merge_after: + type: string + sha: + type: string + merge_commit_sha: + type: string + squash_commit_sha: + type: string + discussion_locked: + type: string + should_remove_source_branch: + type: string + force_remove_source_branch: + type: string + prepared_at: + type: string + allow_collaboration: + type: string + allow_maintainer_to_push: + type: string + reference: + type: string + references: + "$ref": "#/definitions/API_Entities_IssuableReferences" + web_url: + type: string + time_stats: + "$ref": "#/definitions/API_Entities_IssuableTimeStats" + squash: + type: string + squash_on_merge: + type: string + task_completion_status: + type: string + has_conflicts: + type: string + blocking_discussions_resolved: + type: string + approvals_before_merge: + type: string + subscribed: + type: string + changes_count: + type: string + latest_build_started_at: + type: string + latest_build_finished_at: + type: string + first_deployed_to_production_at: + type: string + pipeline: + "$ref": "#/definitions/API_Entities_Ci_PipelineBasic" + head_pipeline: + "$ref": "#/definitions/API_Entities_Ci_Pipeline" + diff_refs: + "$ref": "#/definitions/API_Entities_DiffRefs" + merge_error: + type: string + rebase_in_progress: + type: string + diverged_commits_count: + type: string + first_contribution: + type: string + user: + type: object + properties: + can_merge: + type: string + description: API_Entities_MergeRequest model + API_Entities_DiffRefs: + type: object + properties: + base_sha: + type: string + head_sha: + type: string + start_sha: + type: string + API_Entities_MergeRequestReviewer: + type: object + properties: + user: + "$ref": "#/definitions/API_Entities_UserBasic" + state: + type: string + created_at: + type: string + description: API_Entities_MergeRequestReviewer model + postApiV4ProjectsIdMergeRequestsMergeRequestIidContextCommits: + type: object + properties: + commits: + type: array + description: The context commits’ SHA. + items: + type: string + required: + - commits + description: Create merge request context commits + API_Entities_MergeRequestChanges: + type: object + properties: + id: + type: integer + format: int32 + example: 84 + iid: + type: integer + format: int32 + example: 14 + project_id: + type: integer + format: int32 + example: 4 + title: + type: string + example: Impedit et ut et dolores vero provident ullam est + description: + type: string + example: Repellendus impedit et vel velit dignissimos. + state: + type: string + example: closed + created_at: + type: string + format: date-time + example: '2022-08-17T12:46:35.053Z' + updated_at: + type: string + format: date-time + example: '2022-11-14T17:22:01.470Z' + merged_by: + "$ref": "#/definitions/API_Entities_UserBasic" + merge_user: + "$ref": "#/definitions/API_Entities_UserBasic" + merged_at: + type: string + closed_by: + "$ref": "#/definitions/API_Entities_UserBasic" + closed_at: + type: string + title_html: + type: string + description_html: + type: string + target_branch: + type: string + source_branch: + type: string + user_notes_count: + type: string + upvotes: + type: string + downvotes: + type: string + author: + "$ref": "#/definitions/API_Entities_UserBasic" + assignees: + "$ref": "#/definitions/API_Entities_UserBasic" + assignee: + "$ref": "#/definitions/API_Entities_UserBasic" + reviewers: + "$ref": "#/definitions/API_Entities_UserBasic" + source_project_id: + type: string + target_project_id: + type: string + labels: + type: string + draft: + type: string + imported: + type: string + imported_from: + type: string + example: bitbucket + work_in_progress: + type: string + milestone: + "$ref": "#/definitions/API_Entities_Milestone" + merge_when_pipeline_succeeds: + type: string + merge_status: + type: string + detailed_merge_status: + type: string + merge_after: + type: string + sha: + type: string + merge_commit_sha: + type: string + squash_commit_sha: + type: string + discussion_locked: + type: string + should_remove_source_branch: + type: string + force_remove_source_branch: + type: string + prepared_at: + type: string + allow_collaboration: + type: string + allow_maintainer_to_push: + type: string + reference: + type: string + references: + "$ref": "#/definitions/API_Entities_IssuableReferences" + web_url: + type: string + time_stats: + "$ref": "#/definitions/API_Entities_IssuableTimeStats" + squash: + type: string + squash_on_merge: + type: string + task_completion_status: + type: string + has_conflicts: + type: string + blocking_discussions_resolved: + type: string + approvals_before_merge: + type: string + subscribed: + type: string + changes_count: + type: string + latest_build_started_at: + type: string + latest_build_finished_at: + type: string + first_deployed_to_production_at: + type: string + pipeline: + "$ref": "#/definitions/API_Entities_Ci_PipelineBasic" + head_pipeline: + "$ref": "#/definitions/API_Entities_Ci_Pipeline" + diff_refs: + "$ref": "#/definitions/API_Entities_DiffRefs" + merge_error: + type: string + rebase_in_progress: + type: string + diverged_commits_count: + type: string + first_contribution: + type: string + user: + type: object + properties: + can_merge: + type: string + changes: + "$ref": "#/definitions/API_Entities_Diff" + overflow: + type: string + description: API_Entities_MergeRequestChanges model + postApiV4ProjectsIdMergeRequestsMergeRequestIidPipelines: + type: object + properties: + async: + type: boolean + description: Indicates if the merge request pipeline creation should be performed + asynchronously. If set to `true`, the pipeline will be created outside of + the API request and the endpoint will return an empty response with a `202` + status code. When the response is `202`, the creation can still fail outside + of this request. + default: false + description: Create merge request pipeline + putApiV4ProjectsIdMergeRequestsMergeRequestIid: + type: object + properties: + title: + type: string + description: The title of the merge request. + target_branch: + type: string + description: The target branch. + state_event: + type: string + description: New state (close/reopen). + enum: + - close + - reopen + discussion_locked: + type: boolean + description: Flag indicating if the merge request’s discussion is locked. + If the discussion is locked only project members can add, edit or resolve + comments. + assignee_id: + type: integer + format: int32 + description: Assignee user ID. + assignee_ids: + type: array + description: The IDs of the users to assign the merge request to, as a comma-separated + list. Set to 0 or provide an empty value to unassign all assignees. + items: + type: integer + format: int32 + reviewer_ids: + type: array + description: The IDs of the users to review the merge request, as a comma-separated + list. Set to 0 or provide an empty value to unassign all reviewers. + items: + type: integer + format: int32 + description: + type: string + description: Description of the merge request. Limited to 1,048,576 characters. + labels: + type: array + description: Comma-separated label names for a merge request. Set to an empty + string to unassign all labels. + items: + type: string + add_labels: + type: array + description: Comma-separated label names to add to a merge request. + items: + type: string + remove_labels: + type: array + description: Comma-separated label names to remove from a merge request. + items: + type: string + milestone_id: + type: integer + format: int32 + description: The global ID of a milestone to assign the merge reques to. + remove_source_branch: + type: boolean + description: Flag indicating if a merge request should remove the source branch + when merging. + allow_collaboration: + type: boolean + description: Allow commits from members who can merge to the target branch. + allow_maintainer_to_push: + type: boolean + description: "[deprecated] See allow_collaboration" + squash: + type: boolean + description: Squash commits into a single commit when merging. + merge_after: + type: string + description: Date after which the merge request can be merged. + approvals_before_merge: + type: integer + format: int32 + description: Number of approvals required before this can be merged + description: Update merge request + putApiV4ProjectsIdMergeRequestsMergeRequestIidMerge: + type: object + properties: + merge_commit_message: + type: string + description: Custom merge commit message. + squash_commit_message: + type: string + description: Custom squash commit message. + should_remove_source_branch: + type: boolean + description: If `true`, removes the source branch. + merge_when_pipeline_succeeds: + type: boolean + description: 'Deprecated: Use auto_merge instead.' + auto_merge: + type: boolean + description: If `true`, the merge request is set to auto merge. + sha: + type: string + description: If present, then this SHA must match the HEAD of the source branch, + otherwise the merge fails. + squash: + type: boolean + description: If `true`, the commits are squashed into a single commit on merge. + skip_merge_train: + type: boolean + description: If `true` skips train restart when merging immediately in a merge + train configured project. + description: Merge a merge request + putApiV4ProjectsIdMergeRequestsMergeRequestIidRebase: + type: object + properties: + skip_ci: + type: boolean + description: Set to true to skip creating a CI pipeline. + description: Rebase a merge request + API_Entities_MRNote: + type: object + properties: + note: + type: string + author: + "$ref": "#/definitions/API_Entities_UserBasic" + description: API_Entities_MRNote model + API_Entities_MergeRequestDiff: + type: object + properties: + id: + type: string + head_commit_sha: + type: string + base_commit_sha: + type: string + start_commit_sha: + type: string + created_at: + type: string + merge_request_id: + type: string + state: + type: string + real_size: + type: string + patch_id_sha: + type: string + description: API_Entities_MergeRequestDiff model + API_Entities_MergeRequestDiffFull: + type: object + properties: + id: + type: string + head_commit_sha: + type: string + base_commit_sha: + type: string + start_commit_sha: + type: string + created_at: + type: string + merge_request_id: + type: string + state: + type: string + real_size: + type: string + patch_id_sha: + type: string + commits: + "$ref": "#/definitions/API_Entities_Commit" + diffs: + "$ref": "#/definitions/API_Entities_Diff" + description: API_Entities_MergeRequestDiffFull model + putApiV4ProjectsIdPackagesMlModelsModelVersionIdFiles(*path)FileNameAuthorize: + type: object + properties: + path: + type: string + description: File directory path + status: + type: string + description: Package status + enum: + - default + - hidden + description: Workhorse authorize model package file + putApiV4ProjectsIdPackagesMlModelsModelVersionIdFiles(*path)FileName: + type: object + properties: + path: + type: string + description: File directory path + status: + type: string + description: Package status + enum: + - default + - hidden + file: + type: file + description: The package file to be published (generated by Multipart middleware) + required: + - file + description: Workhorse upload model package file + putApiV4ProjectsIdPackagesNpmPackage*packageNameDistTagsTag: + type: object + properties: + package_name: + type: string + description: Package name + required: + - package_name + description: Create or Update the given tag for the given NPM package and version + putApiV4ProjectsIdPackagesNpmPackageName: + type: object + properties: + versions: + type: object + description: Package version info + required: + - versions + description: Create or deprecate NPM package + API_Entities_Nuget_PackagesVersions: + type: object + properties: + versions: + type: array + items: + type: string + example: 1.3.0.17 + description: API_Entities_Nuget_PackagesVersions model + putApiV4ProjectsIdPackagesNuget: + type: object + properties: + package: + type: file + description: The package file to be published (generated by Multipart middleware) + required: + - package + description: The NuGet V3 Feed Package Publish endpoint + putApiV4ProjectsIdPackagesNugetSymbolpackage: + type: object + properties: + package: + type: file + description: The package file to be published (generated by Multipart middleware) + required: + - package + description: The NuGet Symbol Package Publish endpoint + putApiV4ProjectsIdPackagesNugetV2: + type: object + properties: + package: + type: file + description: The package file to be published (generated by Multipart middleware) + required: + - package + description: The NuGet V2 Feed Package Publish endpoint + API_Entities_PackageFile: + type: object + properties: + id: + type: integer + format: int32 + example: 225 + package_id: + type: integer + format: int32 + example: 4 + created_at: + type: string + format: date-time + example: '2018-11-07T15:25:52.199Z' + file_name: + type: string + example: my-app-1.5-20181107.152550-1.jar + size: + type: integer + format: int32 + example: '2421' + file_md5: + type: string + example: 58e6a45a629910c6ff99145a688971ac + file_sha1: + type: string + example: ebd193463d3915d7e22219f52740056dfd26cbfe + file_sha256: + type: string + example: a903393463d3915d7e22219f52740056dfd26cbfeff321b + pipelines: + "$ref": "#/definitions/API_Entities_Package_Pipeline" + description: API_Entities_PackageFile model + patchApiV4ProjectsIdPages: + type: object + properties: + pages_unique_domain_enabled: + type: boolean + description: Whether to use unique domain + pages_https_only: + type: boolean + description: Whether to force HTTPS + pages_primary_domain: + type: string + description: Set pages primary domain + description: Update pages settings + API_Entities_PagesDomain: + type: object + properties: + domain: + type: string + url: + type: string + verified: + type: string + verification_code: + type: string + enabled_until: + type: string + auto_ssl_enabled: + type: string + certificate: + "$ref": "#/definitions/API_Entities_PagesDomainCertificate" + description: API_Entities_PagesDomain model + API_Entities_PagesDomainCertificate: + type: object + properties: + subject: + type: string + expired: + type: string + certificate: + type: string + certificate_text: + type: string + postApiV4ProjectsIdPagesDomains: + type: object + properties: + domain: + type: string + description: The domain + certificate: + type: file + description: The certificate + key: + type: file + description: The key + auto_ssl_enabled: + type: boolean + description: Enables automatic generation of SSL certificates issued by Let's + Encrypt for custom domains. + default: false + user_provided_certificate: + type: string + user_provided_key: + type: string + required: + - domain + description: Create a new pages domain + putApiV4ProjectsIdPagesDomainsDomain: + type: object + properties: + certificate: + type: file + description: The certificate + key: + type: file + description: The key + auto_ssl_enabled: + type: boolean + description: Enables automatic generation of SSL certificates issued by Let's + Encrypt for custom domains. + description: Updates a pages domain + API_Entities_ClusterProject: + type: object + properties: + id: + type: string + name: + type: string + created_at: + type: string + domain: + type: string + enabled: + type: string + managed: + type: string + provider_type: + type: string + platform_type: + type: string + environment_scope: + type: string + cluster_type: + type: string + namespace_per_environment: + type: string + user: + "$ref": "#/definitions/API_Entities_UserBasic" + platform_kubernetes: + "$ref": "#/definitions/API_Entities_Platform_Kubernetes" + provider_gcp: + "$ref": "#/definitions/API_Entities_Provider_Gcp" + management_project: + "$ref": "#/definitions/API_Entities_ProjectIdentity" + project: + "$ref": "#/definitions/API_Entities_BasicProjectDetails" + description: API_Entities_ClusterProject model + postApiV4ProjectsIdClustersUser: + type: object + properties: + name: + type: string + description: Cluster name + enabled: + type: boolean + description: Determines if cluster is active or not, defaults to true + default: true + domain: + type: string + description: Cluster base domain + environment_scope: + type: string + description: The associated environment to the cluster + default: "*" + namespace_per_environment: + type: boolean + description: Deploy each environment to a separate Kubernetes namespace + default: true + management_project_id: + type: integer + format: int32 + description: The ID of the management project + managed: + type: boolean + description: Determines if GitLab will manage namespaces and service accounts + for this cluster, defaults to true + default: true + platform_kubernetes_attributes: + type: object + description: Platform Kubernetes data + properties: + api_url: + type: string + description: URL to access the Kubernetes API + token: + type: string + description: Token to authenticate against Kubernetes + ca_cert: + type: string + description: TLS certificate (needed if API is using a self-signed TLS + certificate) + namespace: + type: string + description: Unique namespace related to Project + authorization_type: + type: string + description: Cluster authorization type, defaults to RBAC + enum: + - unknown_authorization + - rbac + - abac + default: rbac + required: + - api_url + - token + required: + - name + - platform_kubernetes_attributes + description: Add existing cluster to project + putApiV4ProjectsIdClustersClusterId: + type: object + properties: + name: + type: string + description: Cluster name + domain: + type: string + description: Cluster base domain + environment_scope: + type: string + description: The associated environment to the cluster + namespace_per_environment: + type: boolean + description: Deploy each environment to a separate Kubernetes namespace + default: true + management_project_id: + type: integer + format: int32 + description: The ID of the management project + enabled: + type: boolean + description: Determines if cluster is active or not + managed: + type: boolean + description: Determines if GitLab will manage namespaces and service accounts + for this cluster + platform_kubernetes_attributes: + type: object + description: Platform Kubernetes data + properties: + api_url: + type: string + description: URL to access the Kubernetes API + token: + type: string + description: Token to authenticate against Kubernetes + ca_cert: + type: string + description: TLS certificate (needed if API is using a self-signed TLS + certificate) + namespace: + type: string + description: Unique namespace related to Project + description: Edit project cluster + API_Entities_ContainerRegistry_TagDetails: + type: object + properties: + name: + type: string + example: latest + path: + type: string + example: namespace1/project1/test_image_1:latest + location: + type: string + example: registry.dev/namespace1/project1/test_image_1:latest + revision: + type: string + example: tagrevision + short_revision: + type: string + example: shortrevison + digest: + type: string + example: shadigest + created_at: + type: string + format: date-time + example: '2022-01-10T13:39:08.229Z' + total_size: + type: integer + format: int32 + example: 3 + description: API_Entities_ContainerRegistry_TagDetails model + API_Entities_Projects_ContainerRegistry_Protection_Rule: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + project_id: + type: integer + format: int32 + example: 1 + repository_path_pattern: + type: string + example: flightjs/flight0 + minimum_access_level_for_push: + type: string + example: maintainer + minimum_access_level_for_delete: + type: string + example: maintainer + description: API_Entities_Projects_ContainerRegistry_Protection_Rule model + postApiV4ProjectsIdRegistryProtectionRepositoryRules: + type: object + properties: + repository_path_pattern: + type: string + description: |- + Container repository path pattern protected by the protection rule. + For example `flight/flight-*`. Wildcard character `*` allowed. + minimum_access_level_for_push: + type: string + description: |- + Minimum GitLab access level to allow to push container images to the container registry. + For example maintainer, owner or admin. + enum: + - maintainer + - owner + - admin + minimum_access_level_for_delete: + type: string + description: |- + Minimum GitLab access level to allow to delete container images in the container registry. + For example maintainer, owner or admin. + enum: + - maintainer + - owner + - admin + required: + - repository_path_pattern + description: Create a container protection rule for a project + patchApiV4ProjectsIdRegistryProtectionRepositoryRulesProtectionRuleId: + type: object + properties: + repository_path_pattern: + type: string + description: |- + Container repository path pattern protected by the protection rule. + For example `flight/flight-*`. Wildcard character `*` allowed. + minimum_access_level_for_push: + type: string + description: |- + Minimum GitLab access level to allow to push container images to the container registry. + For example maintainer, owner or admin. To unset the value, use an empty string `""`. + enum: + - maintainer + - owner + - admin + - '' + minimum_access_level_for_delete: + type: string + description: |- + Minimum GitLab access level to allow to delete container images in the container registry. + For example maintainer, owner or admin. To unset the value, use an empty string `""`. + enum: + - maintainer + - owner + - admin + - '' + description: Update a container protection rule for a project + postApiV4ProjectsIdDebianDistributions: + type: object + properties: + codename: + type: string + description: The Debian Codename + example: sid + suite: + type: string + description: The Debian Suite + example: unstable + origin: + type: string + description: The Debian Origin + example: Grep + label: + type: string + description: The Debian Label + example: grep.be + version: + type: string + description: The Debian Version + example: '12' + description: + type: string + description: The Debian Description + example: My description + valid_time_duration_seconds: + type: integer + format: int32 + description: The duration before the Release file should be considered expired + by the client + example: 604800 + components: + type: array + description: The list of Components + example: main + items: + type: string + architectures: + type: array + description: The list of Architectures + example: amd64 + items: + type: string + required: + - codename + description: Create a Debian Distribution + putApiV4ProjectsIdDebianDistributionsCodename: + type: object + properties: + suite: + type: string + description: The Debian Suite + example: unstable + origin: + type: string + description: The Debian Origin + example: Grep + label: + type: string + description: The Debian Label + example: grep.be + version: + type: string + description: The Debian Version + example: '12' + description: + type: string + description: The Debian Description + example: My description + valid_time_duration_seconds: + type: integer + format: int32 + description: The duration before the Release file should be considered expired + by the client + example: 604800 + components: + type: array + description: The list of Components + example: main + items: + type: string + architectures: + type: array + description: The list of Architectures + example: amd64 + items: + type: string + description: Update a Debian Distribution + API_Entities_Event: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + project_id: + type: integer + format: int32 + example: 2 + action_name: + type: string + example: closed + target_id: + type: integer + format: int32 + example: 160 + target_iid: + type: integer + format: int32 + example: 157 + target_type: + type: string + example: Issue + author_id: + type: integer + format: int32 + example: 25 + target_title: + type: string + example: Public project search field + created_at: + type: string + example: '2017-02-09T10:43:19.667Z' + note: + "$ref": "#/definitions/API_Entities_Note" + author: + "$ref": "#/definitions/API_Entities_UserBasic" + wiki_page: + "$ref": "#/definitions/API_Entities_WikiPageBasic" + imported: + type: boolean + example: false + imported_from: + type: string + example: none + push_data: + "$ref": "#/definitions/API_Entities_PushEventPayload" + author_username: + type: string + example: root + description: API_Entities_Event model + API_Entities_Note: + type: object + properties: + id: + type: string + type: + type: string + body: + type: string + author: + "$ref": "#/definitions/API_Entities_UserBasic" + created_at: + type: string + updated_at: + type: string + system: + type: string + noteable_id: + type: string + noteable_type: + type: string + project_id: + type: string + commit_id: + type: string + position: + type: string + resolvable: + type: string + resolved: + type: string + resolved_by: + "$ref": "#/definitions/API_Entities_UserBasic" + resolved_at: + type: string + suggestions: + "$ref": "#/definitions/API_Entities_Suggestion" + confidential: + type: string + internal: + type: string + imported: + type: string + imported_from: + type: string + example: github + noteable_iid: + type: string + commands_changes: + type: string + API_Entities_Suggestion: + type: object + properties: + id: + type: string + from_line: + type: string + to_line: + type: string + appliable: + type: string + applied: + type: string + from_content: + type: string + to_content: + type: string + description: API_Entities_Suggestion model + API_Entities_PushEventPayload: + type: object + properties: + commit_count: + type: integer + format: int32 + example: 1 + action: + type: string + example: pushed + ref_type: + type: string + example: branch + commit_from: + type: string + example: 50d4420237a9de7be1304607147aec22e4a14af7 + commit_to: + type: string + example: c5feabde2d8cd023215af4d2ceeb7a64839fc428 + ref: + type: string + example: master + commit_title: + type: string + example: Add simple search to projects in public area + ref_count: + type: integer + format: int32 + example: 1 + API_Entities_ProjectExportStatus: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + description: + type: string + example: desc + name: + type: string + example: project1 + name_with_namespace: + type: string + example: John Doe / project1 + path: + type: string + example: project1 + path_with_namespace: + type: string + example: namespace1/project1 + created_at: + type: string + format: date-time + example: '2020-05-07T04:27:17.016Z' + export_status: + type: string + enum: + - queued + - started + - finished + - failed + example: finished + _links: + type: object + properties: + api_url: + type: string + example: https://gitlab.example.com/api/v4/projects/1/export/download + web_url: + type: string + example: https://gitlab.example.com/gitlab-org/gitlab-test/download_export + description: API_Entities_ProjectExportStatus model + postApiV4ProjectsIdExport: + type: object + properties: + description: + type: string + description: Override the project description + upload: + type: object + properties: + url: + type: string + description: The URL to upload the project + http_method: + type: string + description: HTTP method to upload the exported project + enum: + - PUT + - POST + default: PUT + description: Start export + postApiV4ProjectsIdExportRelations: + type: object + properties: + batched: + type: boolean + description: Whether to export in batches + description: Start relations export + putApiV4ProjectsIdHooksHookIdUrlVariablesKey: + type: object + properties: + value: + type: string + description: The value of the variable + required: + - value + description: Set a url variable + putApiV4ProjectsIdHooksHookIdCustomHeadersKey: + type: object + properties: + value: + type: string + description: The value of the custom header + required: + - value + description: Set a custom header + API_Entities_ProjectHook: + type: object + properties: + id: + type: string + example: 1 + url: + type: string + example: https://webhook.site + name: + type: string + example: Hook name + description: + type: string + example: Hook description + created_at: + type: string + format: date-time + example: '2012-05-28T04:42:42-07:00' + push_events: + type: boolean + tag_push_events: + type: boolean + merge_requests_events: + type: boolean + repository_update_events: + type: boolean + enable_ssl_verification: + type: boolean + alert_status: + type: symbol + example: executable + disabled_until: + type: string + format: date-time + example: '2012-05-28T04:42:42-07:00' + url_variables: + type: array + items: + type: object + example: + token: secr3t + push_events_branch_filter: + type: string + example: my-branch-* + branch_filter_strategy: + type: string + example: wildcard + custom_webhook_template: + type: string + example: '{"event":"{{object_kind}}"}' + custom_headers: + type: array + items: + type: object + example: + X-Custom-Header: value + project_id: + type: string + example: 1 + issues_events: + type: boolean + confidential_issues_events: + type: boolean + note_events: + type: boolean + confidential_note_events: + type: boolean + pipeline_events: + type: boolean + wiki_page_events: + type: boolean + deployment_events: + type: boolean + feature_flag_events: + type: boolean + job_events: + type: boolean + releases_events: + type: boolean + milestone_events: + type: boolean + emoji_events: + type: boolean + resource_access_token_events: + type: boolean + vulnerability_events: + type: boolean + description: API_Entities_ProjectHook model + putApiV4ProjectsIdHooksHookId: + type: object + properties: + url: + type: string + description: The URL to send the request to + name: + type: string + description: Name of the hook + description: + type: string + description: Description of the hook + push_events: + type: boolean + description: Trigger hook on push events + issues_events: + type: boolean + description: Trigger hook on issues events + confidential_issues_events: + type: boolean + description: Trigger hook on confidential issues events + merge_requests_events: + type: boolean + description: Trigger hook on merge request events + tag_push_events: + type: boolean + description: Trigger hook on tag push events + note_events: + type: boolean + description: Trigger hook on note (comment) events + confidential_note_events: + type: boolean + description: Trigger hook on confidential note (comment) events + job_events: + type: boolean + description: Trigger hook on job events + pipeline_events: + type: boolean + description: Trigger hook on pipeline events + wiki_page_events: + type: boolean + description: Trigger hook on wiki events + deployment_events: + type: boolean + description: Trigger hook on deployment events + feature_flag_events: + type: boolean + description: Trigger hook on feature flag events + releases_events: + type: boolean + description: Trigger hook on release events + milestone_events: + type: boolean + description: Trigger hook on milestone events + emoji_events: + type: boolean + description: Trigger hook on emoji events + resource_access_token_events: + type: boolean + description: Trigger hook on project access token expiry events + enable_ssl_verification: + type: boolean + description: Do SSL verification when triggering the hook + token: + type: string + description: Secret token to validate received payloads; this will not be + returned in the response + push_events_branch_filter: + type: string + description: Trigger hook on specified branch only + custom_webhook_template: + type: string + description: Custom template for the request payload + branch_filter_strategy: + type: string + description: Filter push events by branch. Possible values are `wildcard` + (default), `regex`, and `all_branches` + enum: + - wildcard + - regex + - all_branches + vulnerability_events: + type: boolean + description: Trigger hook on vulnerability events + url_variables: + type: array + description: URL variables for interpolation + items: + type: object + properties: + key: + type: string + description: Name of the variable + example: token + value: + type: string + description: Value of the variable + example: '123' + required: + - key + - value + custom_headers: + type: array + description: Custom headers + items: + type: object + properties: + key: + type: string + description: Name of the header + example: X-Custom-Header + value: + type: string + description: Value of the header + example: value + required: + - key + - value + description: Edit project hook + postApiV4ProjectsIdHooks: + type: object + properties: + url: + type: string + description: The URL to send the request to + example: http://example.com/hook + name: + type: string + description: Name of the hook + description: + type: string + description: Description of the hook + push_events: + type: boolean + description: Trigger hook on push events + issues_events: + type: boolean + description: Trigger hook on issues events + confidential_issues_events: + type: boolean + description: Trigger hook on confidential issues events + merge_requests_events: + type: boolean + description: Trigger hook on merge request events + tag_push_events: + type: boolean + description: Trigger hook on tag push events + note_events: + type: boolean + description: Trigger hook on note (comment) events + confidential_note_events: + type: boolean + description: Trigger hook on confidential note (comment) events + job_events: + type: boolean + description: Trigger hook on job events + pipeline_events: + type: boolean + description: Trigger hook on pipeline events + wiki_page_events: + type: boolean + description: Trigger hook on wiki events + deployment_events: + type: boolean + description: Trigger hook on deployment events + feature_flag_events: + type: boolean + description: Trigger hook on feature flag events + releases_events: + type: boolean + description: Trigger hook on release events + milestone_events: + type: boolean + description: Trigger hook on milestone events + emoji_events: + type: boolean + description: Trigger hook on emoji events + resource_access_token_events: + type: boolean + description: Trigger hook on project access token expiry events + enable_ssl_verification: + type: boolean + description: Do SSL verification when triggering the hook + token: + type: string + description: Secret token to validate received payloads; this will not be + returned in the response + push_events_branch_filter: + type: string + description: Trigger hook on specified branch only + custom_webhook_template: + type: string + description: Custom template for the request payload + branch_filter_strategy: + type: string + description: Filter push events by branch. Possible values are `wildcard` + (default), `regex`, and `all_branches` + enum: + - wildcard + - regex + - all_branches + vulnerability_events: + type: boolean + description: Trigger hook on vulnerability events + url_variables: + type: array + description: URL variables for interpolation + items: + type: object + properties: + key: + type: string + description: Name of the variable + example: token + value: + type: string + description: Value of the variable + example: '123' + required: + - key + - value + custom_headers: + type: array + description: Custom headers + items: + type: object + properties: + key: + type: string + description: Name of the header + example: X-Custom-Header + value: + type: string + description: Value of the header + example: value + required: + - key + - value + required: + - url + description: Add project hook + API_Entities_ProjectImportStatus: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + description: + type: string + example: desc + name: + type: string + example: project1 + name_with_namespace: + type: string + example: John Doe / project1 + path: + type: string + example: project1 + path_with_namespace: + type: string + example: namespace1/project1 + created_at: + type: string + format: date-time + example: '2020-05-07T04:27:17.016Z' + import_status: + type: string + example: scheduled + import_type: + type: string + example: gitlab_project + correlation_id: + type: string + example: dfcf583058ed4508e4c7c617bd7f0edd + failed_relations: + type: array + items: + "$ref": "#/definitions/API_Entities_ProjectImportFailedRelation" + import_error: + type: string + example: Error message + stats: + type: object + description: API_Entities_ProjectImportStatus model + API_Entities_ProjectImportFailedRelation: + type: object + properties: + id: + type: string + example: 1 + created_at: + type: string + format: date-time + example: '2012-05-28T04:42:42-07:00' + exception_class: + type: string + example: StandardError + source: + type: string + example: ImportRepositoryWorker + exception_message: + type: string + relation_name: + type: string + example: issues + line_number: + type: integer + format: int32 + example: 1 + API_Entities_RelationImportTracker: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + project_path: + type: string + example: namespace1/project1 + relation: + type: string + example: issues + status: + type: string + example: pending + created_at: + type: string + format: date-time + example: '2022-01-31T15:10:45.080Z' + updated_at: + type: string + format: date-time + example: '2022-01-31T15:10:45.080Z' + description: API_Entities_RelationImportTracker model + API_Entities_ProjectJobTokenScope: + type: object + properties: + inbound_enabled: + type: boolean + outbound_enabled: + type: boolean + description: API_Entities_ProjectJobTokenScope model + patchApiV4ProjectsIdJobTokenScope: + type: object + properties: + enabled: + type: boolean + description: Indicates CI/CD job tokens generated in other projects have restricted + access to this project. + required: + - enabled + description: Patch CI_JOB_TOKEN access settings. + postApiV4ProjectsIdJobTokenScopeAllowlist: + type: object + properties: + target_project_id: + type: integer + format: int32 + description: ID of target project + example: 2 + required: + - target_project_id + description: Add target project to allowlist. + postApiV4ProjectsIdJobTokenScopeGroupsAllowlist: + type: object + properties: + target_group_id: + type: integer + format: int32 + description: ID of target group + example: 2 + required: + - target_group_id + description: Add target group to allowlist. + API_Entities_Projects_Packages_Protection_Rule: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + project_id: + type: integer + format: int32 + example: 1 + package_name_pattern: + type: string + example: flightjs/flight + package_type: + type: string + example: npm + minimum_access_level_for_delete: + type: string + example: owner + minimum_access_level_for_push: + type: string + example: maintainer + description: API_Entities_Projects_Packages_Protection_Rule model + postApiV4ProjectsIdPackagesProtectionRules: + type: object + properties: + package_name_pattern: + type: string + description: |- + Package name protected by the rule. For example @my-scope/my-package-*. + Wildcard character * allowed. + package_type: + type: string + description: Package type protected by the rule. For example npm. + enum: + - conan + - generic + - helm + - maven + - npm + - nuget + - pypi + minimum_access_level_for_delete: + type: string + description: Minimum GitLab access level required to delete a package. Valid + values include `null`, `owner` or `admin`. If the value is `null`, the default + minimum access level is `maintainer`. Must be provided when `minimum_access_level_for_push` + is not set. Behind a feature flag named `packages_protected_packages_delete`. + Disabled by default. + enum: + - owner + - admin + minimum_access_level_for_push: + type: string + description: Minimum GitLab access level required to push a package. Valid + values include `null`, `maintainer`, `owner` or `admin`. If the value is + `null`, the default minimum access level is `developer`. Must be provided + when `minimum_access_level_for_delete` is not set. + enum: + - maintainer + - owner + - admin + required: + - package_name_pattern + - package_type + description: Create a package protection rule for a project + patchApiV4ProjectsIdPackagesProtectionRulesPackageProtectionRuleId: + type: object + properties: + package_name_pattern: + type: string + description: |- + Package name protected by the rule. For example @my-scope/my-package-*. + Wildcard character * allowed. + package_type: + type: string + description: Package type protected by the rule. For example npm. + enum: + - conan + - generic + - helm + - maven + - npm + - nuget + - pypi + minimum_access_level_for_delete: + type: string + description: Minimum GitLab access level required to delete a package. Valid + values include `null`, `owner` or `admin`. If the value is `null`, the default + minimum access level is `maintainer`. Must be provided when `minimum_access_level_for_push` + is not set. Behind a feature flag named `packages_protected_packages_delete`. + Disabled by default. + enum: + - owner + - admin + minimum_access_level_for_push: + type: string + description: Minimum GitLab access level required to push a package. Valid + values include `null`, `maintainer`, `owner` or `admin`. If the value is + `null`, the default minimum access level is `developer`. Must be provided + when `minimum_access_level_for_delete` is not set. + enum: + - maintainer + - owner + - admin + description: Update a package protection rule for a project + API_Entities_ProjectSnippet: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + title: + type: string + example: test + description: + type: string + example: Ruby test snippet + visibility: + type: string + example: public + author: + "$ref": "#/definitions/API_Entities_UserBasic" + created_at: + type: string + format: date-time + example: '2012-06-28T10:52:04Z' + updated_at: + type: string + format: date-time + example: '2012-06-28T10:52:04Z' + project_id: + type: integer + format: int32 + example: 1 + web_url: + type: string + example: http://example.com/example/example/snippets/1 + raw_url: + type: string + example: http://example.com/example/example/snippets/1/raw + ssh_url_to_repo: + type: string + example: ssh://user@gitlab.example.com/snippets/65.git + http_url_to_repo: + type: string + example: https://gitlab.example.com/snippets/65.git + file_name: + type: string + example: add.rb + files: + type: array + items: + type: string + example: e0d123e5f316bef78bfdf5a008837577 + imported: + type: boolean + example: false + imported_from: + type: string + example: none + repository_storage: + type: string + description: API_Entities_ProjectSnippet model + postApiV4ProjectsIdSnippets: + type: object + properties: + title: + type: string + description: The title of the snippet + description: + type: string + description: The description of a snippet + visibility: + type: string + description: The visibility of the snippet + enum: + - private + - internal + - public + files: + type: array + description: An array of files + items: + type: object + properties: + file_path: + type: string + description: The path of a snippet file + content: + type: string + description: The content of a snippet file + required: + - file_path + - content + content: + type: string + description: The content of a snippet + file_name: + type: string + description: The name of a snippet file + required: + - title + - visibility + - file_name + description: Create a new project snippet + putApiV4ProjectsIdSnippetsSnippetId: + type: object + properties: + content: + type: string + description: The content of the snippet + description: + type: string + description: The description of a snippet + file_name: + type: string + description: The file name of the snippet + title: + type: string + description: The title of the snippet + visibility: + type: string + description: The visibility of the snippet + enum: + - private + - internal + - public + files: + type: array + description: An array of files to update + items: + type: object + properties: + action: + type: string + description: 'The type of action to perform on the file, must be one + of: create, update, delete, move' + enum: + - create + - update + - delete + - move + content: + type: string + description: The content of a snippet + file_path: + type: string + description: The file path of a snippet file + previous_path: + type: string + description: The previous path of a snippet file + required: + - action + description: Update an existing project snippet + API_Entities_UserAgentDetail: + type: object + properties: + user_agent: + type: string + example: AppleWebKit/537.36 + ip_address: + type: string + example: 127.0.0.1 + akismet_submitted: + type: boolean + example: false + description: API_Entities_UserAgentDetail model + API_Entities_ProjectDailyStatistics: + type: object + properties: + fetches: + type: object + properties: + total: + type: integer + format: int32 + example: 3 + days: + type: array + items: + "$ref": "#/definitions/API_Entities_ProjectDailyFetches" + description: API_Entities_ProjectDailyStatistics model + API_Entities_ProjectDailyFetches: + type: object + properties: + count: + type: integer + format: int32 + example: 3 + date: + type: string + format: date + example: '2022-01-01' + API_Entities_TemplatesList: + type: object + properties: + key: + type: string + example: mit + name: + type: string + example: MIT License + description: API_Entities_TemplatesList model + API_Entities_License: + type: object + properties: + key: + type: string + example: gpl-3.0 + name: + type: string + example: GNU General Public License v3.0 + nickname: + type: string + example: GNU GPLv3 + html_url: + type: string + example: http://choosealicense.com/licenses/gpl-3.0 + source_url: + type: string + popular: + type: boolean + description: + type: string + example: A simple license + conditions: + type: array + items: + type: string + example: include-copyright + permissions: + type: array + items: + type: string + example: commercial-use + limitations: + type: array + items: + type: string + example: liability + content: + type: string + example: GNU GENERAL PUBLIC LICENSE + description: API_Entities_License model + putApiV4ProjectsIdCustomAttributesKey: + type: object + properties: + value: + type: string + description: The value of the custom attribute + required: + - value + description: Set a custom attribute on a project + postApiV4Projects: + type: object + properties: + name: + type: string + description: The name of the project + example: New Project + path: + type: string + description: The path of the repository + example: new_project + default_branch: + type: string + description: The default branch of the project + example: main + description: + type: string + description: The description of the project + build_git_strategy: + type: string + description: The Git strategy. Defaults to `fetch` + enum: + - fetch + - clone + build_timeout: + type: integer + format: int32 + description: Build timeout + auto_cancel_pending_pipelines: + type: string + description: Auto-cancel pending pipelines + enum: + - disabled + - enabled + ci_config_path: + type: string + description: The path to CI config file. Defaults to `.gitlab-ci.yml` + service_desk_enabled: + type: boolean + description: Disable or enable the service desk + issues_enabled: + type: boolean + description: Flag indication if the issue tracker is enabled + merge_requests_enabled: + type: boolean + description: Flag indication if merge requests are enabled + wiki_enabled: + type: boolean + description: Flag indication if the wiki is enabled + jobs_enabled: + type: boolean + description: Flag indication if jobs are enabled + snippets_enabled: + type: boolean + description: Flag indication if snippets are enabled + issues_access_level: + type: string + description: Issues access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + repository_access_level: + type: string + description: Repository access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + merge_requests_access_level: + type: string + description: Merge requests access level. One of `disabled`, `private` or + `enabled` + enum: + - disabled + - private + - enabled + forking_access_level: + type: string + description: Forks access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + wiki_access_level: + type: string + description: Wiki access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + builds_access_level: + type: string + description: Builds access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + snippets_access_level: + type: string + description: Snippets access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + pages_access_level: + type: string + description: Pages access level. One of `disabled`, `private`, `enabled` or + `public` + enum: + - disabled + - private + - enabled + - public + analytics_access_level: + type: string + description: Analytics access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + container_registry_access_level: + type: string + description: Controls visibility of the container registry. One of `disabled`, + `private` or `enabled`. `private` will make the container registry accessible + only to project members (reporter role and above). `enabled` will make the + container registry accessible to everyone who has access to the project. + `disabled` will disable the container registry + enum: + - disabled + - private + - enabled + security_and_compliance_access_level: + type: string + description: Security and compliance access level. One of `disabled`, `private` + or `enabled` + enum: + - disabled + - private + - enabled + releases_access_level: + type: string + description: Releases access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + environments_access_level: + type: string + description: Environments access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + feature_flags_access_level: + type: string + description: Feature flags access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + infrastructure_access_level: + type: string + description: Infrastructure access level. One of `disabled`, `private` or + `enabled` + enum: + - disabled + - private + - enabled + monitor_access_level: + type: string + description: Monitor access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + model_experiments_access_level: + type: string + description: Model experiments access level. One of `disabled`, `private` + or `enabled` + enum: + - disabled + - private + - enabled + model_registry_access_level: + type: string + description: Model registry access level. One of `disabled`, `private` or + `enabled` + enum: + - disabled + - private + - enabled + emails_disabled: + type: boolean + description: 'Deprecated: Use emails_enabled instead.' + emails_enabled: + type: boolean + description: Enable email notifications + show_default_award_emojis: + type: boolean + description: Show default award emojis + show_diff_preview_in_email: + type: boolean + description: Include the code diff preview in merge request notification emails + warn_about_potentially_unwanted_characters: + type: boolean + description: Warn about potentially unwanted characters + enforce_auth_checks_on_uploads: + type: boolean + description: Enforce auth check on uploads + shared_runners_enabled: + type: boolean + description: Flag indication if shared runners are enabled for that project + group_runners_enabled: + type: boolean + description: Flag indication if group runners are enabled for that project + resolve_outdated_diff_discussions: + type: boolean + description: Automatically resolve merge request diff threads on lines changed + with a push + remove_source_branch_after_merge: + type: boolean + description: Remove the source branch by default after merge + container_registry_enabled: + type: boolean + description: 'Deprecated: Use :container_registry_access_level instead. Flag + indication if the container registry is enabled for that project' + container_expiration_policy_attributes: + type: object + properties: + cadence: + type: string + description: Container expiration policy cadence for recurring job + keep_n: + type: integer + format: int32 + description: Container expiration policy number of images to keep + older_than: + type: string + description: Container expiration policy remove images older than value + name_regex: + type: string + description: Container expiration policy regex for image removal + name_regex_keep: + type: string + description: Container expiration policy regex for image retention + enabled: + type: boolean + description: Flag indication if container expiration policy is enabled + lfs_enabled: + type: boolean + description: Flag indication if Git LFS is enabled for that project + visibility: + type: string + description: The visibility of the project. + enum: + - private + - internal + - public + public_builds: + type: boolean + description: 'Deprecated: Use public_jobs instead.' + public_jobs: + type: boolean + description: Perform public builds + request_access_enabled: + type: boolean + description: Allow users to request member access + only_allow_merge_if_pipeline_succeeds: + type: boolean + description: Only allow to merge if builds succeed + allow_merge_on_skipped_pipeline: + type: boolean + description: Allow to merge if pipeline is skipped + only_allow_merge_if_all_discussions_are_resolved: + type: boolean + description: Only allow to merge if all threads are resolved + tag_list: + type: array + description: 'Deprecated: Use :topics instead' + items: + type: string + topics: + type: array + description: The list of topics for a project + items: + type: string + avatar: + type: file + description: Avatar image for project + printing_merge_request_link_enabled: + type: boolean + description: Show link to create/view merge request when pushing from the + command line + merge_method: + type: string + description: The merge method used when merging merge requests + enum: + - ff + - rebase_merge + - merge + suggestion_commit_message: + type: string + description: The commit message used to apply merge request suggestions + merge_commit_template: + type: string + description: Template used to create merge commit message + squash_commit_template: + type: string + description: Template used to create squash commit message + issue_branch_template: + type: string + description: Template used to create a branch from an issue + auto_devops_enabled: + type: boolean + description: Flag indication if Auto DevOps is enabled + auto_devops_deploy_strategy: + type: string + description: Auto Deploy strategy + enum: + - continuous + - manual + - timed_incremental + autoclose_referenced_issues: + type: boolean + description: Flag indication if referenced issues auto-closing is enabled + repository_storage: + type: string + description: Which storage shard the repository is on. Available only to admins + packages_enabled: + type: boolean + description: Enable project packages feature + squash_option: + type: string + description: Squash default for project. One of `never`, `always`, `default_on`, + or `default_off`. + enum: + - never + - always + - default_on + - default_off + mr_default_target_self: + type: boolean + description: Merge requests of this forked project targets itself by default + merge_request_title_regex: + type: string + description: The regex the Merge Request must adhere to + merge_request_title_regex_description: + type: string + description: The description for the regex the Merge Request must adhere to + only_allow_merge_if_all_status_checks_passed: + type: boolean + description: Blocks merge requests from merging unless all status checks have + passed + approvals_before_merge: + type: integer + format: int32 + description: How many approvers should approve merge request by default + mirror: + type: boolean + description: "[Deprecated] Enables pull mirroring in a project" + mirror_trigger_builds: + type: boolean + description: "[Deprecated] Pull mirroring triggers builds" + external_authorization_classification_label: + type: string + description: The classification label for the project + requirements_access_level: + type: string + description: Requirements feature access level. One of `disabled`, `private` + or `enabled` + enum: + - disabled + - private + - enabled + prevent_merge_without_jira_issue: + type: boolean + description: Require an associated issue from Jira + auto_duo_code_review_enabled: + type: boolean + description: Enable automatic reviews by GitLab Duo on merge requests + repository_object_format: + type: string + description: The object format of the project repository + enum: + - sha1 + - sha256 + initialize_with_readme: + type: boolean + description: Initialize a project with a README.md + use_custom_template: + type: boolean + description: Use custom template + group_with_project_templates_id: + type: integer + format: int32 + description: Group ID that serves as the template source + namespace_id: + type: integer + format: int32 + description: Namespace ID for the new project. Default to the user namespace. + import_url: + type: string + description: URL from which the project is imported + template_name: + type: string + description: Name of template from which to create project + template_project_id: + type: integer + format: int32 + description: Project ID of template from which to create project + description: Create new project + postApiV4ProjectsUserUserId: + type: object + properties: + name: + type: string + description: The name of the project + example: New Project + path: + type: string + description: The path of the repository + example: new_project + default_branch: + type: string + description: The default branch of the project + example: main + description: + type: string + description: The description of the project + build_git_strategy: + type: string + description: The Git strategy. Defaults to `fetch` + enum: + - fetch + - clone + build_timeout: + type: integer + format: int32 + description: Build timeout + auto_cancel_pending_pipelines: + type: string + description: Auto-cancel pending pipelines + enum: + - disabled + - enabled + ci_config_path: + type: string + description: The path to CI config file. Defaults to `.gitlab-ci.yml` + service_desk_enabled: + type: boolean + description: Disable or enable the service desk + issues_enabled: + type: boolean + description: Flag indication if the issue tracker is enabled + merge_requests_enabled: + type: boolean + description: Flag indication if merge requests are enabled + wiki_enabled: + type: boolean + description: Flag indication if the wiki is enabled + jobs_enabled: + type: boolean + description: Flag indication if jobs are enabled + snippets_enabled: + type: boolean + description: Flag indication if snippets are enabled + issues_access_level: + type: string + description: Issues access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + repository_access_level: + type: string + description: Repository access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + merge_requests_access_level: + type: string + description: Merge requests access level. One of `disabled`, `private` or + `enabled` + enum: + - disabled + - private + - enabled + forking_access_level: + type: string + description: Forks access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + wiki_access_level: + type: string + description: Wiki access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + builds_access_level: + type: string + description: Builds access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + snippets_access_level: + type: string + description: Snippets access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + pages_access_level: + type: string + description: Pages access level. One of `disabled`, `private`, `enabled` or + `public` + enum: + - disabled + - private + - enabled + - public + analytics_access_level: + type: string + description: Analytics access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + container_registry_access_level: + type: string + description: Controls visibility of the container registry. One of `disabled`, + `private` or `enabled`. `private` will make the container registry accessible + only to project members (reporter role and above). `enabled` will make the + container registry accessible to everyone who has access to the project. + `disabled` will disable the container registry + enum: + - disabled + - private + - enabled + security_and_compliance_access_level: + type: string + description: Security and compliance access level. One of `disabled`, `private` + or `enabled` + enum: + - disabled + - private + - enabled + releases_access_level: + type: string + description: Releases access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + environments_access_level: + type: string + description: Environments access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + feature_flags_access_level: + type: string + description: Feature flags access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + infrastructure_access_level: + type: string + description: Infrastructure access level. One of `disabled`, `private` or + `enabled` + enum: + - disabled + - private + - enabled + monitor_access_level: + type: string + description: Monitor access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + model_experiments_access_level: + type: string + description: Model experiments access level. One of `disabled`, `private` + or `enabled` + enum: + - disabled + - private + - enabled + model_registry_access_level: + type: string + description: Model registry access level. One of `disabled`, `private` or + `enabled` + enum: + - disabled + - private + - enabled + emails_disabled: + type: boolean + description: 'Deprecated: Use emails_enabled instead.' + emails_enabled: + type: boolean + description: Enable email notifications + show_default_award_emojis: + type: boolean + description: Show default award emojis + show_diff_preview_in_email: + type: boolean + description: Include the code diff preview in merge request notification emails + warn_about_potentially_unwanted_characters: + type: boolean + description: Warn about potentially unwanted characters + enforce_auth_checks_on_uploads: + type: boolean + description: Enforce auth check on uploads + shared_runners_enabled: + type: boolean + description: Flag indication if shared runners are enabled for that project + group_runners_enabled: + type: boolean + description: Flag indication if group runners are enabled for that project + resolve_outdated_diff_discussions: + type: boolean + description: Automatically resolve merge request diff threads on lines changed + with a push + remove_source_branch_after_merge: + type: boolean + description: Remove the source branch by default after merge + container_registry_enabled: + type: boolean + description: 'Deprecated: Use :container_registry_access_level instead. Flag + indication if the container registry is enabled for that project' + container_expiration_policy_attributes: + type: object + properties: + cadence: + type: string + description: Container expiration policy cadence for recurring job + keep_n: + type: integer + format: int32 + description: Container expiration policy number of images to keep + older_than: + type: string + description: Container expiration policy remove images older than value + name_regex: + type: string + description: Container expiration policy regex for image removal + name_regex_keep: + type: string + description: Container expiration policy regex for image retention + enabled: + type: boolean + description: Flag indication if container expiration policy is enabled + lfs_enabled: + type: boolean + description: Flag indication if Git LFS is enabled for that project + visibility: + type: string + description: The visibility of the project. + enum: + - private + - internal + - public + public_builds: + type: boolean + description: 'Deprecated: Use public_jobs instead.' + public_jobs: + type: boolean + description: Perform public builds + request_access_enabled: + type: boolean + description: Allow users to request member access + only_allow_merge_if_pipeline_succeeds: + type: boolean + description: Only allow to merge if builds succeed + allow_merge_on_skipped_pipeline: + type: boolean + description: Allow to merge if pipeline is skipped + only_allow_merge_if_all_discussions_are_resolved: + type: boolean + description: Only allow to merge if all threads are resolved + tag_list: + type: array + description: 'Deprecated: Use :topics instead' + items: + type: string + topics: + type: array + description: The list of topics for a project + items: + type: string + avatar: + type: file + description: Avatar image for project + printing_merge_request_link_enabled: + type: boolean + description: Show link to create/view merge request when pushing from the + command line + merge_method: + type: string + description: The merge method used when merging merge requests + enum: + - ff + - rebase_merge + - merge + suggestion_commit_message: + type: string + description: The commit message used to apply merge request suggestions + merge_commit_template: + type: string + description: Template used to create merge commit message + squash_commit_template: + type: string + description: Template used to create squash commit message + issue_branch_template: + type: string + description: Template used to create a branch from an issue + auto_devops_enabled: + type: boolean + description: Flag indication if Auto DevOps is enabled + auto_devops_deploy_strategy: + type: string + description: Auto Deploy strategy + enum: + - continuous + - manual + - timed_incremental + autoclose_referenced_issues: + type: boolean + description: Flag indication if referenced issues auto-closing is enabled + repository_storage: + type: string + description: Which storage shard the repository is on. Available only to admins + packages_enabled: + type: boolean + description: Enable project packages feature + squash_option: + type: string + description: Squash default for project. One of `never`, `always`, `default_on`, + or `default_off`. + enum: + - never + - always + - default_on + - default_off + mr_default_target_self: + type: boolean + description: Merge requests of this forked project targets itself by default + merge_request_title_regex: + type: string + description: The regex the Merge Request must adhere to + merge_request_title_regex_description: + type: string + description: The description for the regex the Merge Request must adhere to + only_allow_merge_if_all_status_checks_passed: + type: boolean + description: Blocks merge requests from merging unless all status checks have + passed + approvals_before_merge: + type: integer + format: int32 + description: How many approvers should approve merge request by default + mirror: + type: boolean + description: "[Deprecated] Enables pull mirroring in a project" + mirror_trigger_builds: + type: boolean + description: "[Deprecated] Pull mirroring triggers builds" + external_authorization_classification_label: + type: string + description: The classification label for the project + requirements_access_level: + type: string + description: Requirements feature access level. One of `disabled`, `private` + or `enabled` + enum: + - disabled + - private + - enabled + prevent_merge_without_jira_issue: + type: boolean + description: Require an associated issue from Jira + auto_duo_code_review_enabled: + type: boolean + description: Enable automatic reviews by GitLab Duo on merge requests + repository_object_format: + type: string + description: The object format of the project repository + enum: + - sha1 + - sha256 + initialize_with_readme: + type: boolean + description: Initialize a project with a README.md + use_custom_template: + type: boolean + description: Use custom template + group_with_project_templates_id: + type: integer + format: int32 + description: Group ID that serves as the template source + namespace_id: + type: integer + format: int32 + description: Namespace ID for the new project. Default to the user namespace. + import_url: + type: string + description: URL from which the project is imported + template_name: + type: string + description: Name of template from which to create project + template_project_id: + type: integer + format: int32 + description: Project ID of template from which to create project + required: + - name + description: Create new project for a specified user. Only available to admin + users. + API_Entities_ProjectWithAccess: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + description: + type: string + example: desc + name: + type: string + example: project1 + name_with_namespace: + type: string + example: John Doe / project1 + path: + type: string + example: project1 + path_with_namespace: + type: string + example: namespace1/project1 + created_at: + type: string + format: date-time + example: '2020-05-07T04:27:17.016Z' + default_branch: + type: string + example: main + tag_list: + type: array + items: + type: string + example: tag + topics: + type: array + items: + type: string + example: topic + ssh_url_to_repo: + type: string + example: git@gitlab.example.com:gitlab/gitlab.git + http_url_to_repo: + type: string + example: https://gitlab.example.com/gitlab/gitlab.git + web_url: + type: string + example: https://gitlab.example.com/gitlab/gitlab + readme_url: + type: string + example: https://gitlab.example.com/gitlab/gitlab/blob/master/README.md + forks_count: + type: integer + format: int32 + example: 1 + license_url: + type: string + example: https://gitlab.example.com/gitlab/gitlab/blob/master/LICENCE + license: + "$ref": "#/definitions/API_Entities_LicenseBasic" + avatar_url: + type: string + example: http://example.com/uploads/project/avatar/3/uploads/avatar.png + star_count: + type: integer + format: int32 + example: 1 + last_activity_at: + type: string + format: date-time + example: '2013-09-30T13:46:02Z' + namespace: + "$ref": "#/definitions/API_Entities_NamespaceBasic" + custom_attributes: + "$ref": "#/definitions/API_Entities_CustomAttribute" + repository_storage: + type: string + example: default + forked_from_project: + "$ref": "#/definitions/API_Entities_BasicProjectDetails" + container_registry_image_prefix: + type: string + example: registry.gitlab.example.com/gitlab/gitlab-client + _links: + type: object + properties: + self: + type: string + example: https://gitlab.example.com/api/v4/projects/4 + issues: + type: string + example: https://gitlab.example.com/api/v4/projects/4/issues + merge_requests: + type: string + example: https://gitlab.example.com/api/v4/projects/4/merge_requests + repo_branches: + type: string + example: https://gitlab.example.com/api/v4/projects/4/repository/branches + labels: + type: string + example: https://gitlab.example.com/api/v4/projects/4/labels + events: + type: string + example: https://gitlab.example.com/api/v4/projects/4/events + members: + type: string + example: https://gitlab.example.com/api/v4/projects/4/members + cluster_agents: + type: string + example: https://gitlab.example.com/api/v4/projects/4/cluster_agents + marked_for_deletion_at: + type: string + marked_for_deletion_on: + type: string + packages_enabled: + type: boolean + empty_repo: + type: boolean + archived: + type: boolean + visibility: + type: string + example: public + owner: + "$ref": "#/definitions/API_Entities_UserBasic" + resolve_outdated_diff_discussions: + type: boolean + container_expiration_policy: + "$ref": "#/definitions/API_Entities_ContainerExpirationPolicy" + repository_object_format: + type: string + example: sha1 + issues_enabled: + type: boolean + merge_requests_enabled: + type: boolean + wiki_enabled: + type: boolean + jobs_enabled: + type: boolean + snippets_enabled: + type: boolean + container_registry_enabled: + type: boolean + service_desk_enabled: + type: boolean + service_desk_address: + type: string + example: address@example.com + can_create_merge_request_in: + type: boolean + issues_access_level: + type: string + example: enabled + repository_access_level: + type: string + example: enabled + merge_requests_access_level: + type: string + example: enabled + forking_access_level: + type: string + example: enabled + wiki_access_level: + type: string + example: enabled + builds_access_level: + type: string + example: enabled + snippets_access_level: + type: string + example: enabled + pages_access_level: + type: string + example: enabled + analytics_access_level: + type: string + example: enabled + container_registry_access_level: + type: string + example: enabled + security_and_compliance_access_level: + type: string + example: enabled + releases_access_level: + type: string + example: enabled + environments_access_level: + type: string + example: enabled + feature_flags_access_level: + type: string + example: enabled + infrastructure_access_level: + type: string + example: enabled + monitor_access_level: + type: string + example: enabled + model_experiments_access_level: + type: string + example: enabled + model_registry_access_level: + type: string + example: enabled + emails_disabled: + type: boolean + emails_enabled: + type: boolean + shared_runners_enabled: + type: boolean + lfs_enabled: + type: boolean + creator_id: + type: integer + format: int32 + example: 1 + mr_default_target_self: + type: boolean + import_url: + type: string + example: https://gitlab.com/gitlab/gitlab.git + import_type: + type: string + example: git + import_status: + type: string + example: none + import_error: + type: string + example: Import error + open_issues_count: + type: integer + format: int32 + example: 1 + description_html: + type: string + updated_at: + type: string + format: date-time + example: '2020-05-07T04:27:17.016Z' + ci_default_git_depth: + type: integer + format: int32 + example: 20 + ci_delete_pipelines_in_seconds: + type: integer + format: int32 + example: 86400 + ci_forward_deployment_enabled: + type: boolean + ci_forward_deployment_rollback_allowed: + type: boolean + ci_job_token_scope_enabled: + type: boolean + ci_separated_caches: + type: boolean + ci_allow_fork_pipelines_to_run_in_parent_project: + type: boolean + ci_id_token_sub_claim_components: + type: array + items: + type: string + build_git_strategy: + type: string + example: fetch + keep_latest_artifact: + type: boolean + restrict_user_defined_variables: + type: boolean + ci_pipeline_variables_minimum_override_role: + type: string + runner_token_expiration_interval: + type: integer + format: int32 + example: 3600 + group_runners_enabled: + type: boolean + auto_cancel_pending_pipelines: + type: string + example: enabled + build_timeout: + type: integer + format: int32 + example: 3600 + auto_devops_enabled: + type: boolean + auto_devops_deploy_strategy: + type: string + example: continuous + ci_push_repository_for_job_token_allowed: + type: boolean + runners_token: + type: string + example: b8547b1dc37721d05889db52fa2f02 + ci_config_path: + type: string + example: '' + public_jobs: + type: boolean + shared_with_groups: + type: array + items: + type: string + only_allow_merge_if_pipeline_succeeds: + type: boolean + allow_merge_on_skipped_pipeline: + type: boolean + request_access_enabled: + type: boolean + only_allow_merge_if_all_discussions_are_resolved: + type: boolean + remove_source_branch_after_merge: + type: boolean + printing_merge_request_link_enabled: + type: boolean + merge_method: + type: string + example: merge + merge_request_title_regex: + type: string + example: "/Title of merge request/" + merge_request_title_regex_description: + type: string + example: This requires the title to include a Jira label + squash_option: + type: string + example: default_off + enforce_auth_checks_on_uploads: + type: boolean + suggestion_commit_message: + type: string + example: Suggestion message + merge_commit_template: + type: string + example: "%(title)" + squash_commit_template: + type: string + example: "%(source_branch)" + issue_branch_template: + type: string + example: "%(title)" + statistics: + "$ref": "#/definitions/API_Entities_ProjectStatistics" + warn_about_potentially_unwanted_characters: + type: boolean + autoclose_referenced_issues: + type: boolean + max_artifacts_size: + type: integer + format: int32 + approvals_before_merge: + type: string + mirror: + type: string + mirror_user_id: + type: string + mirror_trigger_builds: + type: string + only_mirror_protected_branches: + type: string + mirror_overwrites_diverged_branches: + type: string + external_authorization_classification_label: + type: string + requirements_enabled: + type: string + requirements_access_level: + type: string + security_and_compliance_enabled: + type: string + secret_push_protection_enabled: + type: boolean + pre_receive_secret_detection_enabled: + type: boolean + compliance_frameworks: + type: string + issues_template: + type: string + merge_requests_template: + type: string + ci_restrict_pipeline_cancellation_role: + type: string + merge_pipelines_enabled: + type: string + merge_trains_enabled: + type: string + merge_trains_skip_train_allowed: + type: string + only_allow_merge_if_all_status_checks_passed: + type: string + allow_pipeline_trigger_approve_deployment: + type: boolean + prevent_merge_without_jira_issue: + type: string + auto_duo_code_review_enabled: + type: string + web_based_commit_signing_enabled: + type: string + permissions: + type: object + properties: + project_access: + "$ref": "#/definitions/API_Entities_ProjectAccess" + group_access: + "$ref": "#/definitions/API_Entities_GroupAccess" + description: API_Entities_ProjectWithAccess model + API_Entities_ProjectAccess: + type: object + properties: + access_level: + type: string + notification_level: + type: string + API_Entities_GroupAccess: + type: object + properties: + access_level: + type: string + notification_level: + type: string + postApiV4ProjectsIdFork: + type: object + properties: + namespace: + type: string + description: "(deprecated) The ID or name of the namespace that the project + will be forked into" + example: gitlab + namespace_id: + type: integer + format: int32 + description: The ID of the namespace that the project will be forked into + example: 1 + namespace_path: + type: string + description: The path of the namespace that the project will be forked into + example: new_path/gitlab + path: + type: string + description: The path that will be assigned to the fork + example: fork + name: + type: string + description: The name that will be assigned to the fork + example: Fork + description: + type: string + description: The description that will be assigned to the fork + example: Description + visibility: + type: string + description: The visibility of the fork + enum: + - private + - internal + - public + mr_default_target_self: + type: boolean + description: Merge requests of this forked project targets itself by default + branches: + type: string + description: Branches to fork + description: Fork new project for the current user or provided namespace. + putApiV4ProjectsId: + type: object + properties: + name: + type: string + description: The name of the project + example: project + default_branch: + type: string + description: The default branch of the project + example: main + path: + type: string + description: The path of the repository + example: group/project + description: + type: string + description: The description of the project + build_git_strategy: + type: string + description: The Git strategy. Defaults to `fetch` + enum: + - fetch + - clone + build_timeout: + type: integer + format: int32 + description: Build timeout + auto_cancel_pending_pipelines: + type: string + description: Auto-cancel pending pipelines + enum: + - disabled + - enabled + ci_config_path: + type: string + description: The path to CI config file. Defaults to `.gitlab-ci.yml` + service_desk_enabled: + type: boolean + description: Disable or enable the service desk + issues_enabled: + type: boolean + description: Flag indication if the issue tracker is enabled + merge_requests_enabled: + type: boolean + description: Flag indication if merge requests are enabled + wiki_enabled: + type: boolean + description: Flag indication if the wiki is enabled + jobs_enabled: + type: boolean + description: Flag indication if jobs are enabled + snippets_enabled: + type: boolean + description: Flag indication if snippets are enabled + issues_access_level: + type: string + description: Issues access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + repository_access_level: + type: string + description: Repository access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + merge_requests_access_level: + type: string + description: Merge requests access level. One of `disabled`, `private` or + `enabled` + enum: + - disabled + - private + - enabled + forking_access_level: + type: string + description: Forks access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + wiki_access_level: + type: string + description: Wiki access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + builds_access_level: + type: string + description: Builds access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + snippets_access_level: + type: string + description: Snippets access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + pages_access_level: + type: string + description: Pages access level. One of `disabled`, `private`, `enabled` or + `public` + enum: + - disabled + - private + - enabled + - public + analytics_access_level: + type: string + description: Analytics access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + container_registry_access_level: + type: string + description: Controls visibility of the container registry. One of `disabled`, + `private` or `enabled`. `private` will make the container registry accessible + only to project members (reporter role and above). `enabled` will make the + container registry accessible to everyone who has access to the project. + `disabled` will disable the container registry + enum: + - disabled + - private + - enabled + security_and_compliance_access_level: + type: string + description: Security and compliance access level. One of `disabled`, `private` + or `enabled` + enum: + - disabled + - private + - enabled + releases_access_level: + type: string + description: Releases access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + environments_access_level: + type: string + description: Environments access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + feature_flags_access_level: + type: string + description: Feature flags access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + infrastructure_access_level: + type: string + description: Infrastructure access level. One of `disabled`, `private` or + `enabled` + enum: + - disabled + - private + - enabled + monitor_access_level: + type: string + description: Monitor access level. One of `disabled`, `private` or `enabled` + enum: + - disabled + - private + - enabled + model_experiments_access_level: + type: string + description: Model experiments access level. One of `disabled`, `private` + or `enabled` + enum: + - disabled + - private + - enabled + model_registry_access_level: + type: string + description: Model registry access level. One of `disabled`, `private` or + `enabled` + enum: + - disabled + - private + - enabled + emails_disabled: + type: boolean + description: 'Deprecated: Use emails_enabled instead.' + emails_enabled: + type: boolean + description: Enable email notifications + show_default_award_emojis: + type: boolean + description: Show default award emojis + show_diff_preview_in_email: + type: boolean + description: Include the code diff preview in merge request notification emails + warn_about_potentially_unwanted_characters: + type: boolean + description: Warn about potentially unwanted characters + enforce_auth_checks_on_uploads: + type: boolean + description: Enforce auth check on uploads + shared_runners_enabled: + type: boolean + description: Flag indication if shared runners are enabled for that project + group_runners_enabled: + type: boolean + description: Flag indication if group runners are enabled for that project + resolve_outdated_diff_discussions: + type: boolean + description: Automatically resolve merge request diff threads on lines changed + with a push + remove_source_branch_after_merge: + type: boolean + description: Remove the source branch by default after merge + container_registry_enabled: + type: boolean + description: 'Deprecated: Use :container_registry_access_level instead. Flag + indication if the container registry is enabled for that project' + container_expiration_policy_attributes: + type: object + properties: + cadence: + type: string + description: Container expiration policy cadence for recurring job + keep_n: + type: integer + format: int32 + description: Container expiration policy number of images to keep + older_than: + type: string + description: Container expiration policy remove images older than value + name_regex: + type: string + description: Container expiration policy regex for image removal + name_regex_keep: + type: string + description: Container expiration policy regex for image retention + enabled: + type: boolean + description: Flag indication if container expiration policy is enabled + lfs_enabled: + type: boolean + description: Flag indication if Git LFS is enabled for that project + visibility: + type: string + description: The visibility of the project. + enum: + - private + - internal + - public + public_builds: + type: boolean + description: 'Deprecated: Use public_jobs instead.' + public_jobs: + type: boolean + description: Perform public builds + request_access_enabled: + type: boolean + description: Allow users to request member access + only_allow_merge_if_pipeline_succeeds: + type: boolean + description: Only allow to merge if builds succeed + allow_merge_on_skipped_pipeline: + type: boolean + description: Allow to merge if pipeline is skipped + only_allow_merge_if_all_discussions_are_resolved: + type: boolean + description: Only allow to merge if all threads are resolved + tag_list: + type: array + description: 'Deprecated: Use :topics instead' + items: + type: string + topics: + type: array + description: The list of topics for a project + items: + type: string + avatar: + type: file + description: Avatar image for project + printing_merge_request_link_enabled: + type: boolean + description: Show link to create/view merge request when pushing from the + command line + merge_method: + type: string + description: The merge method used when merging merge requests + enum: + - ff + - rebase_merge + - merge + suggestion_commit_message: + type: string + description: The commit message used to apply merge request suggestions + merge_commit_template: + type: string + description: Template used to create merge commit message + squash_commit_template: + type: string + description: Template used to create squash commit message + issue_branch_template: + type: string + description: Template used to create a branch from an issue + auto_devops_enabled: + type: boolean + description: Flag indication if Auto DevOps is enabled + auto_devops_deploy_strategy: + type: string + description: Auto Deploy strategy + enum: + - continuous + - manual + - timed_incremental + autoclose_referenced_issues: + type: boolean + description: Flag indication if referenced issues auto-closing is enabled + repository_storage: + type: string + description: Which storage shard the repository is on. Available only to admins + packages_enabled: + type: boolean + description: Enable project packages feature + squash_option: + type: string + description: Squash default for project. One of `never`, `always`, `default_on`, + or `default_off`. + enum: + - never + - always + - default_on + - default_off + mr_default_target_self: + type: boolean + description: Merge requests of this forked project targets itself by default + merge_request_title_regex: + type: string + description: The regex the Merge Request must adhere to + merge_request_title_regex_description: + type: string + description: The description for the regex the Merge Request must adhere to + only_allow_merge_if_all_status_checks_passed: + type: boolean + description: Blocks merge requests from merging unless all status checks have + passed + approvals_before_merge: + type: integer + format: int32 + description: How many approvers should approve merge request by default + mirror: + type: boolean + description: "[Deprecated] Enables pull mirroring in a project" + mirror_trigger_builds: + type: boolean + description: "[Deprecated] Pull mirroring triggers builds" + external_authorization_classification_label: + type: string + description: The classification label for the project + requirements_access_level: + type: string + description: Requirements feature access level. One of `disabled`, `private` + or `enabled` + enum: + - disabled + - private + - enabled + prevent_merge_without_jira_issue: + type: boolean + description: Require an associated issue from Jira + auto_duo_code_review_enabled: + type: boolean + description: Enable automatic reviews by GitLab Duo on merge requests + ci_default_git_depth: + type: integer + format: int32 + description: Default number of revisions for shallow cloning + keep_latest_artifact: + type: boolean + description: Indicates if the latest artifact should be kept for this project. + ci_forward_deployment_enabled: + type: boolean + description: Prevent older deployment jobs that are still pending + ci_forward_deployment_rollback_allowed: + type: boolean + description: Allow job retries for rollback deployments + ci_allow_fork_pipelines_to_run_in_parent_project: + type: boolean + description: Allow fork merge request pipelines to run in parent project + ci_separated_caches: + type: boolean + description: Enable or disable separated caches based on branch protection. + restrict_user_defined_variables: + type: boolean + description: Restrict use of user-defined variables when triggering a pipeline + ci_pipeline_variables_minimum_override_role: + type: string + description: Limit ability to override CI/CD variables when triggering a pipeline + to only users with at least the set minimum role + enum: + - no_one_allowed + - developer + - maintainer + - owner + ci_push_repository_for_job_token_allowed: + type: boolean + description: Allow pushing to this project's repository by authenticating + with a CI/CD job token generated in this project. + ci_id_token_sub_claim_components: + type: array + description: Claims that will be used to build the sub claim in id tokens + items: + type: string + ci_delete_pipelines_in_seconds: + type: integer + format: int32 + description: Pipelines older than the configured time are deleted + max_artifacts_size: + type: integer + format: int32 + description: Set the maximum file size for each job's artifacts + allow_pipeline_trigger_approve_deployment: + type: boolean + description: Allow pipeline triggerer to approve deployments + mirror_user_id: + type: integer + format: int32 + description: "[Deprecated] User responsible for all the activity surrounding + a pull mirror event. Can only be set by admins" + only_mirror_protected_branches: + type: boolean + description: "[Deprecated] Only mirror protected branches" + mirror_branch_regex: + type: string + description: "[Deprecated] Only mirror branches match regex" + mirror_overwrites_diverged_branches: + type: boolean + description: "[Deprecated] Pull mirror overwrites diverged branches" + import_url: + type: string + description: URL from which the project is imported + fallback_approvals_required: + type: integer + format: int32 + description: Overall approvals required when no rule is present + issues_template: + type: string + description: Default description for Issues. Description is parsed with GitLab + Flavored Markdown. + merge_requests_template: + type: string + description: Default description for merge requests. Description is parsed + with GitLab Flavored Markdown. + merge_pipelines_enabled: + type: boolean + description: Enable merged results pipelines. + merge_trains_enabled: + type: boolean + description: Enable merge trains. + merge_trains_skip_train_allowed: + type: boolean + description: Allow merge train merge requests to be merged without waiting + for pipelines to finish. + ci_restrict_pipeline_cancellation_role: + type: string + description: Roles allowed to cancel pipelines and jobs. + web_based_commit_signing_enabled: + type: boolean + description: Enable web based commit signing for this project + description: Update an existing project + postApiV4ProjectsIdShare: + type: object + properties: + group_id: + type: integer + format: int32 + description: The ID of a group + example: 1 + group_access: + type: integer + format: int32 + description: The group access level + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + expires_at: + type: string + format: date + description: Share expiration date + member_role_id: + type: integer + format: int32 + description: The ID of the Member Role to be assigned to the group + required: + - group_id + - group_access + description: Share the project with a group + API_Entities_ProjectGroupLink: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + project_id: + type: integer + format: int32 + example: 1 + group_id: + type: integer + format: int32 + example: 1 + group_access: + type: integer + format: int32 + example: 10 + expires_at: + type: string + format: date + example: '2016-09-26' + member_role_id: + type: integer + format: int32 + example: 12 + description: API_Entities_ProjectGroupLink model + API_Entities_PublicGroupDetails: + type: object + properties: + id: + type: string + web_url: + type: string + name: + type: string + avatar_url: + type: string + full_name: + type: string + full_path: + type: string + description: API_Entities_PublicGroupDetails model + postApiV4ProjectsIdHousekeeping: + type: object + properties: + task: + type: string + description: "`prune` to trigger manual prune of unreachable objects or `eager` + to trigger eager housekeeping." + enum: + - eager + - prune + default: eager + description: Start the housekeeping task for a project + putApiV4ProjectsIdTransfer: + type: object + properties: + namespace: + type: string + description: The ID or path of the new namespace + example: gitlab + required: + - namespace + description: Transfer a project to a new namespace + API_Entities_ProjectRepositoryStorage: + type: object + properties: + disk_path: + type: string + example: "@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b" + project_id: + type: integer + format: int32 + example: 1 + repository_storage: + type: string + example: default + created_at: + type: string + format: date-time + example: '2012-10-12T17:04:47Z' + description: API_Entities_ProjectRepositoryStorage model + API_Entities_ProtectedBranch: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + name: + type: string + example: main + push_access_levels: + type: array + items: + "$ref": "#/definitions/API_Entities_ProtectedRefAccess" + merge_access_levels: + type: array + items: + "$ref": "#/definitions/API_Entities_ProtectedRefAccess" + allow_force_push: + type: boolean + unprotect_access_levels: + type: array + items: + "$ref": "#/definitions/API_Entities_ProtectedRefAccess" + code_owner_approval_required: + type: boolean + inherited: + type: boolean + description: API_Entities_ProtectedBranch model + API_Entities_ProtectedRefAccess: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + access_level: + type: integer + format: int32 + example: 40 + access_level_description: + type: string + example: Maintainers + deploy_key_id: + type: integer + format: int32 + example: 1 + user_id: + type: integer + format: int32 + example: 1 + group_id: + type: integer + format: int32 + example: 1 + postApiV4ProjectsIdProtectedBranches: + type: object + properties: + name: + type: string + description: The name of the protected branch + example: main + push_access_level: + type: integer + format: int32 + description: 'Access levels allowed to push (defaults: `40`, maintainer access + level)' + enum: + - 30 + - 40 + - 60 + - 0 + merge_access_level: + type: integer + format: int32 + description: 'Access levels allowed to merge (defaults: `40`, maintainer access + level)' + enum: + - 30 + - 40 + - 60 + - 0 + allow_force_push: + type: boolean + description: Allow force push for all users with push access. + default: false + unprotect_access_level: + type: integer + format: int32 + description: 'Access levels allowed to unprotect (defaults: `40`, maintainer + access level)' + enum: + - 30 + - 40 + - 60 + allowed_to_push: + type: array + description: An array of users/groups allowed to push + items: + type: object + properties: + access_level: + type: integer + format: int32 + enum: + - 30 + - 40 + - 60 + - 0 + deploy_key_id: + type: integer + format: int32 + example: 1 + user_id: + type: integer + format: int32 + example: 1 + group_id: + type: integer + format: int32 + example: 1 + id: + type: integer + format: int32 + example: 1 + _destroy: + type: boolean + description: Delete the object when true + allowed_to_merge: + type: array + description: An array of users/groups allowed to merge + items: + type: object + properties: + access_level: + type: integer + format: int32 + enum: + - 30 + - 40 + - 60 + - 0 + user_id: + type: integer + format: int32 + example: 1 + group_id: + type: integer + format: int32 + example: 1 + id: + type: integer + format: int32 + example: 1 + _destroy: + type: boolean + description: Delete the object when true + allowed_to_unprotect: + type: array + description: An array of users/groups allowed to unprotect + items: + type: object + properties: + access_level: + type: integer + format: int32 + enum: + - 30 + - 40 + - 60 + user_id: + type: integer + format: int32 + example: 1 + group_id: + type: integer + format: int32 + example: 1 + id: + type: integer + format: int32 + example: 1 + _destroy: + type: boolean + description: Delete the object when true + code_owner_approval_required: + type: boolean + description: Prevent pushes to this branch if it matches an item in CODEOWNERS + required: + - name + description: Protect a single branch + patchApiV4ProjectsIdProtectedBranchesName: + type: object + properties: + allow_force_push: + type: boolean + description: Allow force push for all users with push access. + unprotect_access_level: + type: integer + format: int32 + description: 'Access levels allowed to unprotect (defaults: `40`, maintainer + access level)' + enum: + - 30 + - 40 + - 60 + allowed_to_push: + type: array + description: An array of users/groups allowed to push + items: + type: object + properties: + access_level: + type: integer + format: int32 + enum: + - 30 + - 40 + - 60 + - 0 + deploy_key_id: + type: integer + format: int32 + example: 1 + user_id: + type: integer + format: int32 + example: 1 + group_id: + type: integer + format: int32 + example: 1 + id: + type: integer + format: int32 + example: 1 + _destroy: + type: boolean + description: Delete the object when true + allowed_to_merge: + type: array + description: An array of users/groups allowed to merge + items: + type: object + properties: + access_level: + type: integer + format: int32 + enum: + - 30 + - 40 + - 60 + - 0 + user_id: + type: integer + format: int32 + example: 1 + group_id: + type: integer + format: int32 + example: 1 + id: + type: integer + format: int32 + example: 1 + _destroy: + type: boolean + description: Delete the object when true + allowed_to_unprotect: + type: array + description: An array of users/groups allowed to unprotect + items: + type: object + properties: + access_level: + type: integer + format: int32 + enum: + - 30 + - 40 + - 60 + user_id: + type: integer + format: int32 + example: 1 + group_id: + type: integer + format: int32 + example: 1 + id: + type: integer + format: int32 + example: 1 + _destroy: + type: boolean + description: Delete the object when true + code_owner_approval_required: + type: boolean + description: Prevent pushes to this branch if it matches an item in CODEOWNERS + description: Update a protected branch + API_Entities_ProtectedTag: + type: object + properties: + name: + type: string + example: release-1-0 + create_access_levels: + "$ref": "#/definitions/API_Entities_ProtectedRefAccess" + description: API_Entities_ProtectedTag model + postApiV4ProjectsIdProtectedTags: + type: object + properties: + name: + type: string + description: The name of the protected tag + example: release-1-0 + create_access_level: + type: integer + format: int32 + description: 'Access levels allowed to create (defaults: `40`, maintainer + access level)' + enum: + - 30 + - 40 + - 60 + - 0 + example: 30 + allowed_to_create: + type: array + description: An array of users/groups allowed to create + items: + type: object + properties: + access_level: + type: integer + format: int32 + enum: + - 30 + - 40 + - 60 + - 0 + user_id: + type: integer + format: int32 + group_id: + type: integer + format: int32 + deploy_key_id: + type: integer + format: int32 + required: + - name + description: Protect a single tag or wildcard + postApiV4ProjectsIdPackagesPypi: + type: object + properties: + content: + type: file + description: The package file to be published (generated by Multipart middleware) + name: + type: string + example: my.pypi.package + version: + type: string + example: 1.3.7 + requires_python: + type: string + example: ">=3.7" + md5_digest: + type: string + example: 900150983cd24fb0d6963f7d28e17f72 + sha256_digest: + type: string + example: ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad + metadata_version: + type: string + example: '2.3' + author_email: + type: string + example: cschultz@example.com, snoopy@peanuts.com + description: + type: string + description_content_type: + type: string + example: text/markdown; charset=UTF-8; variant=GFM + summary: + type: string + example: A module for collecting votes from beagles. + keywords: + type: string + example: dog,puppy,voting,election + required: + - content + - name + - version + description: The PyPi Package upload endpoint + postApiV4ProjectsIdReleases: + type: object + properties: + tag_name: + type: string + description: The tag where the release is created from + tag_message: + type: string + description: Message to use if creating a new annotated tag + name: + type: string + description: The release name + description: + type: string + description: The description of the release. You can use Markdown + ref: + type: string + description: If a tag specified in `tag_name` doesn't exist, the release is + created from `ref` and tagged with `tag_name`. It can be a commit SHA, another + tag name, or a branch name. + assets: + type: object + properties: + links: + type: array + items: + type: object + properties: + name: + type: string + description: The name of the link. Link names must be unique within + the release + url: + type: string + description: The URL of the link. Link URLs must be unique within + the release + direct_asset_path: + type: string + description: Optional path for a direct asset link + filepath: + type: string + description: 'Deprecated: optional path for a direct asset link' + link_type: + type: string + description: 'The type of the link: `other`, `runbook`, `image`, + `package`. Defaults to `other`' + required: + - name + - url + milestones: + type: array + description: The title of each milestone the release is associated with. GitLab + Premium customers can specify group milestones. Cannot be combined with + `milestone_ids` parameter. + items: + type: string + milestone_ids: + type: string + description: The ID of each milestone the release is associated with. GitLab + Premium customers can specify group milestones. Cannot be combined with + `milestones` parameter. + released_at: + type: string + format: date-time + description: Date and time for the release. Defaults to the current time. + Expected in ISO 8601 format (`2019-03-15T08:00:00Z`). Only provide this + field if creating an upcoming or historical release. + legacy_catalog_publish: + type: boolean + description: If true, the release will be published to the CI catalog. This + parameter is for internal use only and will be removed in a future release. + If the feature flag ci_release_cli_catalog_publish_option is disabled, this + parameter will be ignored and the release will published to the CI catalog + as it was before this parameter was introduced. + required: + - tag_name + description: Create a release + putApiV4ProjectsIdReleasesTagName: + type: object + properties: + name: + type: string + description: The release name + description: + type: string + description: The description of the release. You can use Markdown + released_at: + type: string + format: date-time + description: The date when the release is/was ready. Expected in ISO 8601 + format (`2019-03-15T08:00:00Z`) + milestones: + type: array + description: The title of each milestone to associate with the release. GitLab + Premium customers can specify group milestones. Cannot be combined with + `milestone_ids` parameter. To remove all milestones from the release, specify + `[]` + items: + type: string + milestone_ids: + type: string + description: The ID of each milestone the release is associated with. GitLab + Premium customers can specify group milestones. Cannot be combined with + `milestones` parameter. To remove all milestones from the release, specify + `[]` + description: Update a release + postApiV4ProjectsIdReleasesTagNameAssetsLinks: + type: object + properties: + name: + type: string + description: The name of the link. Link names must be unique in the release + url: + type: string + description: The URL of the link. Link URLs must be unique in the release. + direct_asset_path: + type: string + description: Optional path for a direct asset link + filepath: + type: string + description: 'Deprecated: optional path for a direct asset link' + link_type: + type: string + description: 'The type of the link: `other`, `runbook`, `image`, or `package`. + Defaults to `other`' + enum: + - other + - runbook + - image + - package + default: other + required: + - name + - url + description: Create a release link + putApiV4ProjectsIdReleasesTagNameAssetsLinksLinkId: + type: object + properties: + name: + type: string + description: The name of the link + url: + type: string + description: The URL of the link + direct_asset_path: + type: string + description: Optional path for a direct asset link + filepath: + type: string + description: 'Deprecated: optional path for a direct asset link' + link_type: + type: string + description: 'The type of the link: `other`, `runbook`, `image`, or `package`. + Defaults to `other`' + enum: + - other + - runbook + - image + - package + default: other + description: Update a release link + API_Entities_RemoteMirror: + type: object + properties: + id: + type: integer + format: int32 + example: 101486 + enabled: + type: boolean + example: true + url: + type: string + example: https://*****:*****@example.com/gitlab/example.git + update_status: + type: string + example: finished + last_update_at: + type: string + format: date-time + example: '2020-01-06T17:32:02.823Z' + last_update_started_at: + type: string + format: date-time + example: '2020-01-06T17:32:02.823Z' + last_successful_update_at: + type: string + format: date-time + example: '2020-01-06T17:31:55.864Z' + last_error: + type: integer + format: int32 + example: The remote mirror URL is invalid. + only_protected_branches: + type: boolean + keep_divergent_refs: + type: boolean + auth_method: + type: string + example: password + mirror_branch_regex: + type: string + description: API_Entities_RemoteMirror model + postApiV4ProjectsIdRemoteMirrors: + type: object + properties: + url: + type: string + description: The URL for a remote mirror + example: https://*****:*****@example.com/gitlab/example.git + enabled: + type: boolean + description: Determines if the mirror is enabled + auth_method: + type: string + description: Determines the mirror authentication method + enum: + - ssh_public_key + - password + keep_divergent_refs: + type: boolean + description: Determines if divergent refs are kept on the target + only_protected_branches: + type: boolean + description: Determines if only protected branches are mirrored + mirror_branch_regex: + type: string + description: Determines if only matched branches are mirrored + required: + - url + description: Create remote mirror for a project + putApiV4ProjectsIdRemoteMirrorsMirrorId: + type: object + properties: + enabled: + type: boolean + description: Determines if the mirror is enabled + example: true + auth_method: + type: string + description: Determines the mirror authentication method + keep_divergent_refs: + type: boolean + description: Determines if divergent refs are kept on the target + only_protected_branches: + type: boolean + description: Determines if only protected branches are mirrored + mirror_branch_regex: + type: string + description: Determines if only matched branches are mirrored + description: Update the attributes of a single remote mirror + API_Entities_TreeObject: + type: object + properties: + id: + type: string + example: a1e8f8d745cc87e3a9248358d9352bb7f9a0aeba + name: + type: string + example: html + type: + type: string + example: tree + path: + type: string + example: files/html + mode: + type: string + example: '040000' + description: API_Entities_TreeObject model + API_Entities_Compare: + type: object + properties: + commit: + "$ref": "#/definitions/API_Entities_Commit" + commits: + type: array + items: + "$ref": "#/definitions/API_Entities_Commit" + diffs: + type: array + items: + "$ref": "#/definitions/API_Entities_Diff" + compare_timeout: + type: boolean + compare_same_ref: + type: boolean + web_url: + type: string + example: https://gitlab.example.com/gitlab/gitlab-foss/-/compare/main...feature + description: API_Entities_Compare model + API_Entities_RepositoryHealth: + type: object + properties: + size: + type: integer + format: int32 + references: + "$ref": "#/definitions/API_Entities_RepositoryHealth_References" + objects: + "$ref": "#/definitions/API_Entities_RepositoryHealth_Objects" + commit_graph: + "$ref": "#/definitions/API_Entities_RepositoryHealth_CommitGraph" + bitmap: + "$ref": "#/definitions/API_Entities_RepositoryHealth_Bitmap" + multi_pack_index: + "$ref": "#/definitions/API_Entities_RepositoryHealth_MultiPackIndex" + multi_pack_index_bitmap: + "$ref": "#/definitions/API_Entities_RepositoryHealth_Bitmap" + alternates: + type: object + is_object_pool: + type: boolean + last_full_repack: + "$ref": "#/definitions/API_Entities_RepositoryHealth_LastFullRepack" + updated_at: + type: string + format: date-time + example: '2025-02-24T09:05:50.355Z' + description: API_Entities_RepositoryHealth model + API_Entities_RepositoryHealth_References: + type: object + properties: + loose_count: + type: integer + format: int32 + packed_size: + type: integer + format: int32 + reference_backend: + type: string + API_Entities_RepositoryHealth_Objects: + type: object + properties: + size: + type: integer + format: int32 + recent_size: + type: integer + format: int32 + stale_size: + type: integer + format: int32 + keep_size: + type: integer + format: int32 + packfile_count: + type: integer + format: int32 + reverse_index_count: + type: integer + format: int32 + cruft_count: + type: integer + format: int32 + keep_count: + type: integer + format: int32 + loose_objects_count: + type: integer + format: int32 + stale_loose_objects_count: + type: integer + format: int32 + loose_objects_garbage_count: + type: integer + format: int32 + API_Entities_RepositoryHealth_CommitGraph: + type: object + properties: + commit_graph_chain_length: + type: integer + format: int32 + has_bloom_filters: + type: boolean + has_generation_data: + type: boolean + has_generation_data_overflow: + type: boolean + API_Entities_RepositoryHealth_Bitmap: + type: object + properties: + has_hash_cache: + type: boolean + has_lookup_table: + type: boolean + version: + type: integer + format: int32 + API_Entities_RepositoryHealth_MultiPackIndex: + type: object + properties: + packfile_count: + type: integer + format: int32 + version: + type: integer + format: int32 + API_Entities_RepositoryHealth_LastFullRepack: + type: object + properties: + seconds: + type: integer + format: int32 + nanos: + type: integer + format: int32 + API_Entities_Contributor: + type: object + properties: + name: + type: string + example: John Doe + email: + type: string + example: johndoe@example.com + commits: + type: integer + format: int32 + example: 117 + additions: + type: integer + format: int32 + example: 3 + deletions: + type: integer + format: int32 + example: 5 + description: API_Entities_Contributor model + API_Entities_Changelog: + type: object + properties: + notes: + type: string + description: API_Entities_Changelog model + postApiV4ProjectsIdRepositoryChangelog: + type: object + properties: + version: + type: string + description: The version of the release, using the semantic versioning format + example: 1.0.0 + from: + type: string + description: The first commit in the range of commits to use for the changelog + example: ed899a2f4b50b4370feeea94676502b42383c746 + to: + type: string + description: The last commit in the range of commits to use for the changelog + example: 6104942438c14ec7bd21c6cd5bd995272b3faff6 + date: + type: string + format: date-time + description: The date and time of the release + example: '2021-09-20T11:50:22.001+00:00' + trailer: + type: string + description: The Git trailer to use for determining if commits are to be included + in the changelog + default: Changelog + example: Changelog + config_file: + type: string + description: The file path to the configuration file as stored in the project's + Git repository. Defaults to '.gitlab/changelog_config.yml' + example: ".gitlab/changelog_config.yml" + config_file_ref: + type: string + description: The git reference (for example, branch) where the changelog configuration + file is defined. Defaults to the default repository branch. + example: main + branch: + type: string + description: The branch to commit the changelog changes to + example: main + file: + type: string + description: The file to commit the changelog changes to + default: CHANGELOG.md + example: CHANGELOG.md + message: + type: string + description: The commit message to use when committing the changelog + example: Initial commit + required: + - version + description: Generates a changelog section for a release and commits it in a changelog + file + postApiV4ProjectsIdAccessTokensSelfRotate: + type: object + properties: + expires_at: + type: string + format: date + description: The expiration date of the token + example: '2021-01-31' + description: Rotate a resource access token + API_Entities_ResourceMilestoneEvent: + type: object + properties: + id: + type: integer + format: int32 + example: 142 + user: + "$ref": "#/definitions/API_Entities_UserBasic" + created_at: + type: string + format: date-time + example: '2018-08-20T13:38:20.077Z' + resource_type: + type: string + example: Issue + resource_id: + type: integer + format: int32 + example: 253 + milestone: + "$ref": "#/definitions/API_Entities_Milestone" + action: + type: string + example: add + state: + type: string + example: active + description: API_Entities_ResourceMilestoneEvent model + postApiV4ProjectsIdPackagesRubygemsApiV1Gems: + type: object + properties: + file: + type: file + description: The package file to be published (generated by Multipart middleware) + required: + - file + description: Upload a gem + putApiV4ProjectsIdRepositorySubmodulesSubmodule: + type: object + properties: + commit_sha: + type: string + description: Commit sha to update the submodule to. + example: ed899a2f4b50b4370feeea94676502b42383c746 + branch: + type: string + description: Name of the branch to commit into. + example: main + commit_message: + type: string + description: Commit message. If no message is provided a default one will + be set. + example: Commit message + required: + - commit_sha + - branch + description: Update existing submodule reference in repository + API_Entities_Tag: + type: object + properties: + name: + type: string + example: v1.0.0 + message: + type: string + example: Release v1.0.0 + target: + type: string + example: 2695effb5807a22ff3d138d593fd856244e155e7 + commit: + "$ref": "#/definitions/API_Entities_Commit" + release: + "$ref": "#/definitions/API_Entities_TagRelease" + protected: + type: boolean + example: true + created_at: + type: string + format: date-time + example: '2023-10-12T02:16:52.000Z' + description: API_Entities_Tag model + API_Entities_TagRelease: + type: object + properties: + tag_name: + type: string + example: 1.0.0 + description: + type: string + example: Amazing release. Wow + postApiV4ProjectsIdRepositoryTags: + type: object + properties: + tag_name: + type: string + description: The name of the tag + example: v.1.0.0 + ref: + type: string + description: The commit sha or branch name + example: 2695effb5807a22ff3d138d593fd856244e155e7 + message: + type: string + description: Specifying a message creates an annotated tag + example: Release 1.0.0 + required: + - tag_name + - ref + description: Create a new repository tag + API_Entities_TagSignature: + type: object + properties: + signature_type: + type: string + example: PGP + signature: + type: string + description: API_Entities_TagSignature model + putApiV4ProjectsIdPackagesTerraformModulesModuleNameModuleSystem*moduleVersionFileAuthorize: + type: object + properties: + module_version: + type: string + description: Module version + required: + - module_version + description: Workhorse authorize Terraform Module package file + postApiV4ProjectsIdTerraformStateNameLock: + type: object + properties: + ID: + type: string + description: Terraform state lock ID + Operation: + type: string + description: Terraform operation + Info: + type: string + description: Terraform info + Who: + type: string + description: Terraform state lock owner + Version: + type: string + description: Terraform version + Created: + type: string + description: Terraform state lock timestamp + Path: + type: string + description: Terraform path + required: + - ID + - Operation + - Info + - Who + - Version + - Created + - Path + description: Lock a Terraform state of a certain name + postApiV4ProjectsIdWikis: + type: object + properties: + title: + type: string + description: Title of a wiki page + front_matter: + type: object + properties: + title: + type: string + description: Front matter title of a wiki page + content: + type: string + description: Content of a wiki page + format: + type: string + description: Format of a wiki page. Available formats are markdown, rdoc, + asciidoc and org + enum: + - markdown + - rdoc + - asciidoc + - org + default: markdown + required: + - title + - content + description: Create a wiki page + putApiV4ProjectsIdWikisSlug: + type: object + properties: + title: + type: string + description: Title of a wiki page + front_matter: + type: object + properties: + title: + type: string + description: Front matter title of a wiki page + content: + type: string + description: Content of a wiki page + format: + type: string + description: Format of a wiki page. Available formats are markdown, rdoc, + asciidoc and org + enum: + - markdown + - rdoc + - asciidoc + - org + default: markdown + description: Update a wiki page + postApiV4ProjectsIdWikisAttachments: + type: object + properties: + file: + type: file + description: The attachment file to be uploaded + branch: + type: string + description: The name of the branch + required: + - file + description: Upload an attachment to the wiki repository + API_Entities_BatchedBackgroundMigration: + type: object + properties: + id: + type: string + example: '1234' + job_class_name: + type: string + example: CopyColumnUsingBackgroundMigrationJob + table_name: + type: string + example: events + column_name: + type: string + example: id + status: + type: string + example: active + progress: + type: number + format: float + example: 50 + created_at: + type: string + format: date-time + example: '2022-11-28T16:26:39+02:00' + description: API_Entities_BatchedBackgroundMigration model + putApiV4AdminBatchedBackgroundMigrationsIdResume: + type: object + properties: + database: + type: string + description: The name of the database + enum: + - main + - ci + - sec + - embedding + - geo + default: main + description: Resume a batched background migration + putApiV4AdminBatchedBackgroundMigrationsIdPause: + type: object + properties: + database: + type: string + description: The name of the database + enum: + - main + - ci + - sec + - embedding + - geo + default: main + description: Pause a batched background migration + postApiV4AdminCiVariables: + type: object + properties: + key: + type: string + description: The key of the variable. Max 255 characters + description: + type: string + description: The description of the variable + value: + type: string + description: The value of a variable + protected: + type: boolean + description: Whether the variable is protected + masked: + type: boolean + description: Whether the variable is masked + raw: + type: boolean + description: Whether the variable will be expanded + variable_type: + type: string + description: 'The type of a variable. Available types are: env_var (default) + and file' + enum: + - env_var + - file + required: + - key + - value + description: Create a new instance-level variable + putApiV4AdminCiVariablesKey: + type: object + properties: + description: + type: string + description: The description of the variable + value: + type: string + description: The value of a variable + protected: + type: boolean + description: Whether the variable is protected + masked: + type: boolean + description: Whether the variable is masked + raw: + type: boolean + description: Whether the variable will be expanded + variable_type: + type: string + description: 'The type of a variable. Available types are: env_var (default) + and file' + enum: + - env_var + - file + description: Update an instance-level variable + API_Entities_Dictionary_Table: + type: object + properties: + table_name: + type: string + example: users + feature_categories: + type: array + items: + type: string + example: database + description: API_Entities_Dictionary_Table model + postApiV4AdminClustersAdd: + type: object + properties: + name: + type: string + description: Cluster name + enabled: + type: boolean + description: Determines if cluster is active or not, defaults to true + default: true + environment_scope: + type: string + description: The associated environment to the cluster + default: "*" + namespace_per_environment: + type: boolean + description: Deploy each environment to a separate Kubernetes namespace + default: true + domain: + type: string + description: Cluster base domain + management_project_id: + type: integer + format: int32 + description: The ID of the management project + managed: + type: boolean + description: Determines if GitLab will manage namespaces and service accounts + for this cluster, defaults to true + default: true + platform_kubernetes_attributes: + type: object + description: Platform Kubernetes data + properties: + api_url: + type: string + description: URL to access the Kubernetes API + token: + type: string + description: Token to authenticate against Kubernetes + ca_cert: + type: string + description: TLS certificate (needed if API is using a self-signed TLS + certificate) + namespace: + type: string + description: Unique namespace related to Project + authorization_type: + type: string + description: Cluster authorization type, defaults to RBAC + enum: + - unknown_authorization + - rbac + - abac + default: rbac + required: + - api_url + - token + required: + - name + - platform_kubernetes_attributes + description: Add existing instance cluster + putApiV4AdminClustersClusterId: + type: object + properties: + name: + type: string + description: Cluster name + enabled: + type: boolean + description: Enable or disable Gitlab's connection to your Kubernetes cluster + environment_scope: + type: string + description: The associated environment to the cluster + namespace_per_environment: + type: boolean + description: Deploy each environment to a separate Kubernetes namespace + default: true + domain: + type: string + description: Cluster base domain + management_project_id: + type: integer + format: int32 + description: The ID of the management project + managed: + type: boolean + description: Determines if GitLab will manage namespaces and service accounts + for this cluster + platform_kubernetes_attributes: + type: object + description: Platform Kubernetes data + properties: + api_url: + type: string + description: URL to access the Kubernetes API + token: + type: string + description: Token to authenticate against Kubernetes + ca_cert: + type: string + description: TLS certificate (needed if API is using a self-signed TLS + certificate) + namespace: + type: string + description: Unique namespace related to Project + description: Edit instance cluster + postApiV4AdminMigrationsTimestampMark: + type: object + properties: + database: + type: string + description: The name of the database + enum: + - main + - ci + - sec + - embedding + - geo + default: main + description: Mark the migration as successfully executed + API_Entities_System_BroadcastMessage: + type: object + properties: + id: + type: string + message: + type: string + starts_at: + type: string + ends_at: + type: string + color: + type: string + font: + type: string + target_access_levels: + type: string + target_path: + type: string + broadcast_type: + type: string + dismissable: + type: string + theme: + type: string + active: + type: string + description: API_Entities_System_BroadcastMessage model + postApiV4BroadcastMessages: + type: object + properties: + message: + type: string + description: Message to display + starts_at: + type: string + format: date-time + description: Starting time + default: {} + ends_at: + type: string + format: date-time + description: Ending time + default: {} + color: + type: string + description: Background color (Deprecated. Use "theme" instead.) + font: + type: string + description: Foreground color (Deprecated. Use "theme" instead.) + target_access_levels: + type: array + description: Target user roles + items: + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + target_path: + type: string + description: Target path + broadcast_type: + type: string + description: Broadcast type. Defaults to banner + enum: + - banner + - notification + default: {} + dismissable: + type: boolean + description: Is dismissable + theme: + type: string + description: The theme for the message + enum: + - indigo + - light-indigo + - blue + - light-blue + - green + - light-green + - red + - light-red + - dark + - light + required: + - message + description: Create a broadcast message + putApiV4BroadcastMessagesId: + type: object + properties: + message: + type: string + description: Message to display + starts_at: + type: string + format: date-time + description: Starting time + ends_at: + type: string + format: date-time + description: Ending time + color: + type: string + description: Background color (Deprecated. Use "theme" instead.) + font: + type: string + description: Foreground color (Deprecated. Use "theme" instead.) + target_access_levels: + type: array + description: Target user roles + items: + type: integer + format: int32 + enum: + - 10 + - 15 + - 20 + - 30 + - 40 + - 50 + target_path: + type: string + description: Target path + broadcast_type: + type: string + description: Broadcast Type + enum: + - banner + - notification + dismissable: + type: boolean + description: Is dismissable + theme: + type: string + description: The theme for the message + enum: + - indigo + - light-indigo + - blue + - light-blue + - green + - light-green + - red + - light-red + - dark + - light + description: Update a broadcast message + postApiV4Applications: + type: object + properties: + name: + type: string + description: Name of the application. + example: MyApplication + redirect_uri: + type: string + description: Redirect URI of the application. + example: https://redirect.uri + scopes: + type: string + description: |- + Scopes of the application. You can specify multiple scopes by separating\ + each scope using a space + confidential: + type: boolean + description: |- + The application is used where the client secret can be kept confidential. Native mobile apps \ + and Single Page Apps are considered non-confidential. Defaults to true if not supplied + default: true + required: + - name + - redirect_uri + - scopes + description: Create a new application + API_Entities_ApplicationWithSecret: + type: object + properties: + id: + type: string + application_id: + type: string + example: 5832fc6e14300a0d962240a8144466eef4ee93ef0d218477e55f11cf12fc3737 + application_name: + type: string + example: MyApplication + callback_url: + type: string + example: https://redirect.uri + confidential: + type: boolean + example: true + secret: + type: string + example: ee1dd64b6adc89cf7e2c23099301ccc2c61b441064e9324d963c46902a85ec34 + description: API_Entities_ApplicationWithSecret model + API_Entities_Application: + type: object + properties: + id: + type: string + application_id: + type: string + example: 5832fc6e14300a0d962240a8144466eef4ee93ef0d218477e55f11cf12fc3737 + application_name: + type: string + example: MyApplication + callback_url: + type: string + example: https://redirect.uri + confidential: + type: boolean + example: true + description: API_Entities_Application model + API_Entities_Avatar: + type: object + properties: + avatar_url: + type: string + description: API_Entities_Avatar model + API_Entities_BulkImport: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + status: + type: string + enum: + - created + - started + - finished + - timeout + - failed + example: finished + source_type: + type: string + example: gitlab + source_url: + type: string + example: https://source.gitlab.com/ + created_at: + type: string + format: date-time + example: '2012-05-28T04:42:42-07:00' + updated_at: + type: string + format: date-time + example: '2012-05-28T04:42:42-07:00' + has_failures: + type: boolean + example: false + description: API_Entities_BulkImport model + API_Entities_BulkImports: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + bulk_import_id: + type: integer + format: int32 + example: 1 + status: + type: string + enum: + - created + - started + - finished + - timeout + - failed + example: created + entity_type: + type: string + enum: + - group + - project + source_full_path: + type: string + example: source_group + destination_full_path: + type: string + example: some_group/source_project + destination_name: + type: string + example: destination_slug + destination_slug: + type: string + example: destination_slug + destination_namespace: + type: string + example: destination_path + parent_id: + type: integer + format: int32 + example: 1 + namespace_id: + type: integer + format: int32 + example: 1 + project_id: + type: integer + format: int32 + example: 1 + created_at: + type: string + format: date-time + example: '2012-05-28T04:42:42-07:00' + updated_at: + type: string + format: date-time + example: '2012-05-28T04:42:42-07:00' + failures: + type: array + items: + "$ref": "#/definitions/API_Entities_BulkImports_EntityFailure" + migrate_projects: + type: boolean + example: true + migrate_memberships: + type: boolean + example: true + has_failures: + type: boolean + example: false + stats: + type: object + description: API_Entities_BulkImports model + API_Entities_BulkImports_EntityFailure: + type: object + properties: + relation: + type: string + example: label + exception_message: + type: string + example: error message + exception_class: + type: string + example: Exception + correlation_id_value: + type: string + example: dfcf583058ed4508e4c7c617bd7f0edd + source_url: + type: string + example: https://source.gitlab.com/group/-/epics/1 + source_title: + type: string + example: title + description: API_Entities_BulkImports_EntityFailure model + postApiV4Runners: + type: object + properties: + token: + type: string + description: Registration token + description: + type: string + description: Description of the runner + maintainer_note: + type: string + description: 'Deprecated: see `maintenance_note`' + maintenance_note: + type: string + description: Free-form maintenance notes for the runner (1024 characters) + info: + type: object + description: Runner's metadata + properties: + name: + type: string + description: Runner's name + version: + type: string + description: Runner's version + revision: + type: string + description: Runner's revision + platform: + type: string + description: Runner's platform + architecture: + type: string + description: Runner's architecture + active: + type: boolean + description: 'Deprecated: Use `paused` instead. Specifies if the runner is + allowed to receive new jobs' + paused: + type: boolean + description: Specifies if the runner should ignore new jobs + locked: + type: boolean + description: Specifies if the runner should be locked for the current project + access_level: + type: string + description: The access level of the runner + enum: + - not_protected + - ref_protected + run_untagged: + type: boolean + description: Specifies if the runner should handle untagged jobs + tag_list: + type: array + description: A list of runner tags + items: + type: string + maximum_timeout: + type: integer + format: int32 + description: Maximum timeout that limits the amount of time (in seconds) that + runners can run jobs + required: + - token + description: Register a new runner + API_Entities_Ci_RunnerRegistrationDetails: + type: object + properties: + id: + type: string + token: + type: string + token_expires_at: + type: string + description: API_Entities_Ci_RunnerRegistrationDetails model + postApiV4RunnersVerify: + type: object + properties: + token: + type: string + description: The runner's authentication token + system_id: + type: string + description: The runner's system identifier + required: + - token + description: Validate authentication credentials + postApiV4RunnersResetAuthenticationToken: + type: object + properties: + token: + type: string + description: The current authentication token of the runner + required: + - token + description: Reset runner authentication token with current token + API_Entities_Ci_RunnerDetails: + type: object + properties: + id: + type: integer + format: int32 + example: 8 + description: + type: string + example: test-1-20150125 + ip_address: + type: string + example: 127.0.0.1 + active: + type: boolean + example: true + paused: + type: boolean + example: false + is_shared: + type: boolean + example: true + runner_type: + type: string + enum: + - instance_type + - group_type + - project_type + example: instance_type + name: + type: string + example: test + online: + type: boolean + example: true + created_by: + "$ref": "#/definitions/API_Entities_UserBasic" + created_at: + type: string + format: date-time + example: '2025-05-03T00:00:00.000Z' + status: + type: string + example: online + job_execution_status: + type: string + enum: + - active + - idle + example: idle + tag_list: + type: string + run_untagged: + type: string + locked: + type: string + maximum_timeout: + type: string + access_level: + type: string + version: + type: string + revision: + type: string + platform: + type: string + architecture: + type: string + contacted_at: + type: string + maintenance_note: + type: string + projects: + "$ref": "#/definitions/API_Entities_BasicProjectDetails" + groups: + "$ref": "#/definitions/API_Entities_BasicGroupDetails" + description: API_Entities_Ci_RunnerDetails model + putApiV4RunnersId: + type: object + properties: + description: + type: string + description: The description of the runner + active: + type: boolean + description: 'Deprecated: Use `paused` instead. Flag indicating whether the + runner is allowed to receive jobs' + paused: + type: boolean + description: Specifies if the runner should ignore new jobs + tag_list: + type: array + description: The list of tags for a runner + example: "['macos', 'shell']" + items: + type: string + run_untagged: + type: boolean + description: Specifies if the runner can execute untagged jobs + locked: + type: boolean + description: Specifies if the runner is locked + access_level: + type: string + description: The access level of the runner + enum: + - not_protected + - ref_protected + maximum_timeout: + type: integer + format: int32 + description: Maximum timeout that limits the amount of time (in seconds) that + runners can run jobs + maintenance_note: + type: string + description: Free-form maintenance notes for the runner (1024 characters) + description: Update runner's details + API_Entities_Ci_JobBasicWithProject: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + status: + type: string + example: waiting_for_resource + stage: + type: string + example: deploy + name: + type: string + example: deploy_to_production + ref: + type: string + example: main + tag: + type: boolean + coverage: + type: number + format: float + example: 98.29 + allow_failure: + type: boolean + created_at: + type: string + format: date-time + example: '2015-12-24T15:51:21.880Z' + started_at: + type: string + format: date-time + example: '2015-12-24T17:54:30.733Z' + finished_at: + type: string + format: date-time + example: '2015-12-24T17:54:31.198Z' + erased_at: + type: string + format: date-time + example: '2015-12-24T18:00:29.728Z' + duration: + type: number + format: float + example: 0.465 + description: Time spent running + queued_duration: + type: number + format: float + example: 0.123 + description: Time spent enqueued + user: + "$ref": "#/definitions/API_Entities_User" + commit: + "$ref": "#/definitions/API_Entities_Commit" + pipeline: + "$ref": "#/definitions/API_Entities_Ci_PipelineBasic" + failure_reason: + type: string + example: script_failure + web_url: + type: string + example: https://example.com/foo/bar/-/jobs/1 + project: + "$ref": "#/definitions/API_Entities_ProjectIdentity" + description: API_Entities_Ci_JobBasicWithProject model + postApiV4JobsRequest: + type: object + properties: + token: + type: string + description: Runner's authentication token + system_id: + type: string + description: Runner's system identifier + last_update: + type: string + description: Runner's queue last_update token + info: + type: object + description: Runner's metadata + properties: + name: + type: string + description: Runner's name + version: + type: string + description: Runner's version + revision: + type: string + description: Runner's revision + platform: + type: string + description: Runner's platform + architecture: + type: string + description: Runner's architecture + executor: + type: string + description: Runner's executor + features: + type: object + description: Runner's features + config: + type: object + description: Runner's config + properties: + gpus: + type: string + description: GPUs enabled + session: + type: object + description: Runner's session data + properties: + url: + type: string + description: Session's url + certificate: + type: string + description: Session's certificate + authorization: + type: string + description: Session's authorization + required: + - token + description: Request a job + putApiV4JobsId: + type: object + properties: + token: + type: string + description: Job token + state: + type: string + description: 'Job''s status: success, failed' + checksum: + type: string + description: Job's trace CRC32 checksum + failure_reason: + type: string + description: Job's failure_reason + output: + type: object + description: Build log state + properties: + checksum: + type: string + description: Job's trace CRC32 checksum + bytesize: + type: integer + format: int32 + description: Job's trace size in bytes + exit_code: + type: integer + format: int32 + description: Job's exit code + required: + - token + description: Update a job + patchApiV4JobsIdTrace: + type: object + properties: + token: + type: string + description: Job's authentication token + debug_trace: + type: boolean + description: Enable or Disable the debug trace + description: Append a patch to the job trace + postApiV4JobsIdArtifactsAuthorize: + type: object + properties: + token: + type: string + description: Job's authentication token + filesize: + type: integer + format: int32 + description: Size of artifact file + artifact_type: + type: string + description: The type of artifact + enum: + - archive + - metadata + - trace + - junit + - sast + - dependency_scanning + - container_scanning + - dast + - codequality + - license_scanning + - performance + - metrics + - metrics_referee + - network_referee + - lsif + - dotenv + - cobertura + - terraform + - accessibility + - cluster_applications + - secret_detection + - requirements + - coverage_fuzzing + - browser_performance + - load_performance + - api_fuzzing + - cluster_image_scanning + - cyclonedx + - requirements_v2 + - annotations + - repository_xray + - jacoco + default: archive + description: Authorize uploading job artifact + postApiV4JobsIdArtifacts: + type: object + properties: + file: + type: file + description: The artifact file to store (generated by Multipart middleware) + token: + type: string + description: Job's authentication token + expire_in: + type: string + description: Specify when artifact should expire + artifact_type: + type: string + description: The type of artifact + enum: + - archive + - metadata + - trace + - junit + - sast + - dependency_scanning + - container_scanning + - dast + - codequality + - license_scanning + - performance + - metrics + - metrics_referee + - network_referee + - lsif + - dotenv + - cobertura + - terraform + - accessibility + - cluster_applications + - secret_detection + - requirements + - coverage_fuzzing + - browser_performance + - load_performance + - api_fuzzing + - cluster_image_scanning + - cyclonedx + - requirements_v2 + - annotations + - repository_xray + - jacoco + default: archive + artifact_format: + type: string + description: The format of artifact + enum: + - raw + - zip + - gzip + default: zip + metadata: + type: file + description: The artifact metadata to store (generated by Multipart middleware) + accessibility: + type: string + description: Specify accessibility level of artifact private/public + required: + - file + description: Upload a job artifact + putApiV4PackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionExportFileName: + type: object + properties: + file: + type: file + description: The package file to be published (generated by Multipart middleware) + required: + - file + description: Upload recipe package files + ? putApiV4PackagesConanV1FilesPackageNamePackageVersionPackageUsernamePackageChannelRecipeRevisionPackageConanPackageReferencePackageRevisionFileName + : type: object + properties: + file: + type: file + description: The package file to be published (generated by Multipart middleware) + required: + - file + description: Upload package files + putApiV4PackagesNpmPackage*packageNameDistTagsTag: + type: object + properties: + package_name: + type: string + description: Package name + required: + - package_name + description: Create or Update the given tag for the given NPM package and version + API_Entities_Terraform_ModuleVersions: + type: object + properties: + modules: + type: string + description: API_Entities_Terraform_ModuleVersions model + API_Entities_Terraform_ModuleVersion: + type: object + properties: + name: + type: string + provider: + type: string + providers: + type: string + root: + type: string + source: + type: string + submodules: + type: string + version: + type: string + versions: + type: string + description: API_Entities_Terraform_ModuleVersion model + API_Entities_Feature: + type: object + properties: + name: + type: string + example: experimental_feature + state: + type: string + example: 'off' + gates: + "$ref": "#/definitions/API_Entities_FeatureGate" + definition: + "$ref": "#/definitions/API_Entities_Feature_Definition" + description: API_Entities_Feature model + API_Entities_FeatureGate: + type: object + properties: + key: + type: string + example: percentage_of_actors + value: + type: integer + format: int32 + example: 34 + API_Entities_Feature_Definition: + type: object + properties: + name: + type: string + feature_issue_url: + type: string + introduced_by_url: + type: string + rollout_issue_url: + type: string + milestone: + type: string + log_state_changes: + type: string + type: + type: string + group: + type: string + default_enabled: + type: string + intended_to_rollout_by: + type: string + description: API_Entities_Feature_Definition model + postApiV4FeaturesName: + type: object + properties: + value: + type: string + description: "`true` or `false` to enable/disable, or an integer for percentage + of time" + key: + type: string + description: "`percentage_of_actors` or `percentage_of_time` (default)" + feature_group: + type: string + description: A Feature group name + user: + type: string + description: A GitLab username or comma-separated multiple usernames + group: + type: string + description: A GitLab group's path, for example `gitlab-org`, or comma-separated + multiple group paths + namespace: + type: string + description: A GitLab group or user namespace's path, for example `john-doe`, + or comma-separated multiple namespace paths. Introduced in GitLab 15.0. + project: + type: string + description: A projects path, for example `gitlab-org/gitlab-foss`, or comma-separated + multiple project paths + repository: + type: string + description: A repository path, for example `gitlab-org/gitlab-test.git`, + `gitlab-org/gitlab-test.wiki.git`, `snippets/21.git`, to name a few. Use + comma to separate multiple repository paths + force: + type: boolean + description: Skip feature flag validation checks, such as a YAML definition + required: + - value + description: Set or create a feature + EE_API_Entities_Geo_PipelineRefs: + type: object + properties: + pipeline_refs: + type: array + items: + type: string + example: + - refs/pipelines/1 + description: EE_API_Entities_Geo_PipelineRefs model + postApiV4GeoStatus: + type: object + properties: + data: + type: object + properties: + geo_node_id: + type: integer + format: int32 + description: Geo Node ID to look up its status + db_replication_lag_seconds: + type: integer + format: int32 + description: DB replication lag in seconds + last_event_id: + type: integer + format: int32 + description: Last event ID + last_event_date: + type: string + format: date-time + description: Last event date + cursor_last_event_id: + type: integer + format: int32 + description: Cursor last event ID + cursor_last_event_date: + type: string + format: date-time + description: Cursor last event date + last_successful_status_check_at: + type: string + format: date-time + description: Last successful status check date + status_message: + type: string + description: Status message + replication_slots_count: + type: integer + format: int32 + description: Replication slots count + replication_slots_used_count: + type: integer + format: int32 + description: Replication slots used count + replication_slots_max_retained_wal_bytes: + type: integer + format: int32 + description: Maximum number of bytes retained in the WAL on the primary + version: + type: string + description: Gitlab version + revision: + type: string + description: Gitlab revision + status: + type: object + properties: + projects_count: + type: integer + format: int32 + description: Projects count + container_repositories_replication_enabled: + type: boolean + description: Container repositories replication enabled + lfs_objects_count: + type: integer + format: int32 + description: LFS objects count + lfs_objects_checksum_total_count: + type: integer + format: int32 + description: LFS objects checksum total count + lfs_objects_checksummed_count: + type: integer + format: int32 + description: LFS objects checksummed count + lfs_objects_checksum_failed_count: + type: integer + format: int32 + description: LFS objects checksum failed count + lfs_objects_synced_count: + type: integer + format: int32 + description: LFS objects synced count + lfs_objects_failed_count: + type: integer + format: int32 + description: LFS objects failed count + lfs_objects_registry_count: + type: integer + format: int32 + description: LFS objects registry count + lfs_objects_verification_total_count: + type: integer + format: int32 + description: LFS objects verification total count + lfs_objects_verified_count: + type: integer + format: int32 + description: LFS objects verified count + lfs_objects_verification_failed_count: + type: integer + format: int32 + description: LFS objects verification failed count + merge_request_diffs_count: + type: integer + format: int32 + description: Merge request diffs count + merge_request_diffs_checksum_total_count: + type: integer + format: int32 + description: Merge request diffs checksum total count + merge_request_diffs_checksummed_count: + type: integer + format: int32 + description: Merge request diffs checksummed count + merge_request_diffs_checksum_failed_count: + type: integer + format: int32 + description: Merge request diffs checksum failed count + merge_request_diffs_synced_count: + type: integer + format: int32 + description: Merge request diffs synced count + merge_request_diffs_failed_count: + type: integer + format: int32 + description: Merge request diffs failed count + merge_request_diffs_registry_count: + type: integer + format: int32 + description: Merge request diffs registry count + merge_request_diffs_verification_total_count: + type: integer + format: int32 + description: Merge request diffs verification total count + merge_request_diffs_verified_count: + type: integer + format: int32 + description: Merge request diffs verified count + merge_request_diffs_verification_failed_count: + type: integer + format: int32 + description: Merge request diffs verified count + package_files_count: + type: integer + format: int32 + description: Packages files count + package_files_checksum_total_count: + type: integer + format: int32 + description: Packages files checksum total count + package_files_checksummed_count: + type: integer + format: int32 + description: Packages files checksummed count + package_files_checksum_failed_count: + type: integer + format: int32 + description: Packages files checksum failed count + package_files_synced_count: + type: integer + format: int32 + description: Packages files synced count + package_files_failed_count: + type: integer + format: int32 + description: Packages files failed count + package_files_registry_count: + type: integer + format: int32 + description: Packages files registry count + package_files_verification_total_count: + type: integer + format: int32 + description: Packages files verification total count + package_files_verified_count: + type: integer + format: int32 + description: Packages files verified count + package_files_verification_failed_count: + type: integer + format: int32 + description: Packages files verification failed count + terraform_state_versions_count: + type: integer + format: int32 + description: Terraform state versions count + terraform_state_versions_checksum_total_count: + type: integer + format: int32 + description: Terraform state versions checksum total count + terraform_state_versions_checksummed_count: + type: integer + format: int32 + description: Terraform state versions checksummed count + terraform_state_versions_checksum_failed_count: + type: integer + format: int32 + description: Terraform state versions checksum failed count + terraform_state_versions_synced_count: + type: integer + format: int32 + description: Terraform state versions synced count + terraform_state_versions_failed_count: + type: integer + format: int32 + description: Terraform state versions failed count + terraform_state_versions_registry_count: + type: integer + format: int32 + description: Terraform state versions registry count + terraform_state_versions_verification_total_count: + type: integer + format: int32 + description: Terraform state versions verification total count + terraform_state_versions_verified_count: + type: integer + format: int32 + description: Terraform state versions verified count + terraform_state_versions_verification_failed_count: + type: integer + format: int32 + description: Terraform state versions verification failed count + snippet_repositories_count: + type: integer + format: int32 + description: Snippet repositories count + snippet_repositories_checksum_total_count: + type: integer + format: int32 + description: Snippet repositories checksum total count + snippet_repositories_checksummed_count: + type: integer + format: int32 + description: Snippet repositories checksummed count + snippet_repositories_checksum_failed_count: + type: integer + format: int32 + description: Snippet repositories checksum failed count + snippet_repositories_synced_count: + type: integer + format: int32 + description: Snippet repositories synced count + snippet_repositories_failed_count: + type: integer + format: int32 + description: Snippet repositories failed count + snippet_repositories_registry_count: + type: integer + format: int32 + description: Snippet repositories registry count + snippet_repositories_verification_total_count: + type: integer + format: int32 + description: Snippet repositories verification total count + snippet_repositories_verified_count: + type: integer + format: int32 + description: Snippet repositories verified count + snippet_repositories_verification_failed_count: + type: integer + format: int32 + description: Snippet repositories verification failed count + group_wiki_repositories_count: + type: integer + format: int32 + description: Group wiki repositories count + group_wiki_repositories_checksum_total_count: + type: integer + format: int32 + description: Group wiki repositories checksum total count + group_wiki_repositories_checksummed_count: + type: integer + format: int32 + description: Group wiki repositories checksummed count + group_wiki_repositories_checksum_failed_count: + type: integer + format: int32 + description: Group wiki repositories checksum failed count + group_wiki_repositories_synced_count: + type: integer + format: int32 + description: Group wiki repositories synced count + group_wiki_repositories_failed_count: + type: integer + format: int32 + description: Group wiki repositories failed count + group_wiki_repositories_registry_count: + type: integer + format: int32 + description: Group wiki repositories registry count + group_wiki_repositories_verification_total_count: + type: integer + format: int32 + description: Group wiki repositories verification total count + group_wiki_repositories_verified_count: + type: integer + format: int32 + description: Group wiki repositories verified count + group_wiki_repositories_verification_failed_count: + type: integer + format: int32 + description: Group wiki repositories verification failed count + pipeline_artifacts_count: + type: integer + format: int32 + description: Pipeline artifacts count + pipeline_artifacts_checksum_total_count: + type: integer + format: int32 + description: Pipeline artifacts checksum total count + pipeline_artifacts_checksummed_count: + type: integer + format: int32 + description: Pipeline artifacts checksummed count + pipeline_artifacts_checksum_failed_count: + type: integer + format: int32 + description: Pipeline artifacts checksum failed count + pipeline_artifacts_synced_count: + type: integer + format: int32 + description: Pipeline artifacts synced count + pipeline_artifacts_failed_count: + type: integer + format: int32 + description: Pipeline artifacts failed count + pipeline_artifacts_registry_count: + type: integer + format: int32 + description: Pipeline artifacts registry count + pipeline_artifacts_verification_total_count: + type: integer + format: int32 + description: Pipeline artifacts verification total count + pipeline_artifacts_verified_count: + type: integer + format: int32 + description: Pipeline artifacts verified count + pipeline_artifacts_verification_failed_count: + type: integer + format: int32 + description: Pipeline artifacts verification failed count + pages_deployments_count: + type: integer + format: int32 + description: Pages deployments count + pages_deployments_checksum_total_count: + type: integer + format: int32 + description: Pages deployments checksum total count + pages_deployments_checksummed_count: + type: integer + format: int32 + description: Pages deployments checksummed count + pages_deployments_checksum_failed_count: + type: integer + format: int32 + description: Pages deployments checksum failed count + pages_deployments_synced_count: + type: integer + format: int32 + description: Pages deployments synced count + pages_deployments_failed_count: + type: integer + format: int32 + description: Pages deployments failed count + pages_deployments_registry_count: + type: integer + format: int32 + description: Pages deployments registry count + pages_deployments_verification_total_count: + type: integer + format: int32 + description: Pages deployments verification total count + pages_deployments_verified_count: + type: integer + format: int32 + description: Pages deployments verified count + pages_deployments_verification_failed_count: + type: integer + format: int32 + description: Pages deployments verification failed count + uploads_count: + type: integer + format: int32 + description: Uploads count + uploads_checksum_total_count: + type: integer + format: int32 + description: Uploads checksum total count + uploads_checksummed_count: + type: integer + format: int32 + description: Uploads checksummed count + uploads_checksum_failed_count: + type: integer + format: int32 + description: Uploads checksum failed count + uploads_synced_count: + type: integer + format: int32 + description: Uploads synced count + uploads_failed_count: + type: integer + format: int32 + description: Uploads failed count + uploads_registry_count: + type: integer + format: int32 + description: Uploads registry count + uploads_verification_total_count: + type: integer + format: int32 + description: Uploads verification total count + uploads_verified_count: + type: integer + format: int32 + description: Uploads verified count + uploads_verification_failed_count: + type: integer + format: int32 + description: Uploads verification failed count + job_artifacts_count: + type: integer + format: int32 + description: Job artifacts count + job_artifacts_checksum_total_count: + type: integer + format: int32 + description: Job artifacts checksum total count + job_artifacts_checksummed_count: + type: integer + format: int32 + description: Job artifacts checksummed count + job_artifacts_checksum_failed_count: + type: integer + format: int32 + description: Job artifacts checksum failed count + job_artifacts_synced_count: + type: integer + format: int32 + description: Job artifacts synced count + job_artifacts_failed_count: + type: integer + format: int32 + description: Job artifacts failed count + job_artifacts_registry_count: + type: integer + format: int32 + description: Job artifacts registry count + job_artifacts_verification_total_count: + type: integer + format: int32 + description: Job artifacts verification total count + job_artifacts_verified_count: + type: integer + format: int32 + description: Job artifacts verified count + job_artifacts_verification_failed_count: + type: integer + format: int32 + description: Job artifacts verification failed count + ci_secure_files_count: + type: integer + format: int32 + description: CI secure files count + ci_secure_files_checksum_total_count: + type: integer + format: int32 + description: CI secure files checksum total count + ci_secure_files_checksummed_count: + type: integer + format: int32 + description: CI secure files checksummed count + ci_secure_files_checksum_failed_count: + type: integer + format: int32 + description: CI secure files checksum failed count + ci_secure_files_synced_count: + type: integer + format: int32 + description: CI secure files synced count + ci_secure_files_failed_count: + type: integer + format: int32 + description: CI secure files failed count + ci_secure_files_registry_count: + type: integer + format: int32 + description: CI secure files registry count + ci_secure_files_verification_total_count: + type: integer + format: int32 + description: CI secure files verification total count + ci_secure_files_verified_count: + type: integer + format: int32 + description: CI secure files verified count + ci_secure_files_verification_failed_count: + type: integer + format: int32 + description: CI secure files verification failed count + container_repositories_count: + type: integer + format: int32 + description: Container repositories count + container_repositories_checksum_total_count: + type: integer + format: int32 + description: Container repositories checksum total count + container_repositories_checksummed_count: + type: integer + format: int32 + description: Container repositories checksummed count + container_repositories_checksum_failed_count: + type: integer + format: int32 + description: Container repositories checksum failed count + container_repositories_synced_count: + type: integer + format: int32 + description: Container repositories synced count + container_repositories_failed_count: + type: integer + format: int32 + description: Container repositories failed count + container_repositories_registry_count: + type: integer + format: int32 + description: Container repositories registry count + container_repositories_verification_total_count: + type: integer + format: int32 + description: Container repositories verification total count + container_repositories_verified_count: + type: integer + format: int32 + description: Container repositories verified count + container_repositories_verification_failed_count: + type: integer + format: int32 + description: Container repositories verification failed count + git_fetch_event_count_weekly: + type: integer + format: int32 + description: Git fetch event count weekly + git_push_event_count_weekly: + type: integer + format: int32 + description: Git push event count weekly + proxy_remote_requests_event_count_weekly: + type: integer + format: int32 + description: Proxy remote requests event count weekly + proxy_local_requests_event_count_weekly: + type: integer + format: int32 + description: Proxy local requests event count weekly + required: + - geo_node_id + description: Posts the current node status to the primary site + EE_API_Entities_GeoNodeStatus: + type: object + properties: + geo_node_id: + type: string + projects_count: + type: string + container_repositories_replication_enabled: + type: string + ci_secure_files_count: + type: string + ci_secure_files_checksum_total_count: + type: string + ci_secure_files_checksummed_count: + type: string + ci_secure_files_checksum_failed_count: + type: string + ci_secure_files_synced_count: + type: string + ci_secure_files_failed_count: + type: string + ci_secure_files_registry_count: + type: string + ci_secure_files_verification_total_count: + type: string + ci_secure_files_verified_count: + type: string + ci_secure_files_verification_failed_count: + type: string + container_repositories_count: + type: string + container_repositories_checksum_total_count: + type: string + container_repositories_checksummed_count: + type: string + container_repositories_checksum_failed_count: + type: string + container_repositories_synced_count: + type: string + container_repositories_failed_count: + type: string + container_repositories_registry_count: + type: string + container_repositories_verification_total_count: + type: string + container_repositories_verified_count: + type: string + container_repositories_verification_failed_count: + type: string + dependency_proxy_blobs_count: + type: string + dependency_proxy_blobs_checksum_total_count: + type: string + dependency_proxy_blobs_checksummed_count: + type: string + dependency_proxy_blobs_checksum_failed_count: + type: string + dependency_proxy_blobs_synced_count: + type: string + dependency_proxy_blobs_failed_count: + type: string + dependency_proxy_blobs_registry_count: + type: string + dependency_proxy_blobs_verification_total_count: + type: string + dependency_proxy_blobs_verified_count: + type: string + dependency_proxy_blobs_verification_failed_count: + type: string + dependency_proxy_manifests_count: + type: string + dependency_proxy_manifests_checksum_total_count: + type: string + dependency_proxy_manifests_checksummed_count: + type: string + dependency_proxy_manifests_checksum_failed_count: + type: string + dependency_proxy_manifests_synced_count: + type: string + dependency_proxy_manifests_failed_count: + type: string + dependency_proxy_manifests_registry_count: + type: string + dependency_proxy_manifests_verification_total_count: + type: string + dependency_proxy_manifests_verified_count: + type: string + dependency_proxy_manifests_verification_failed_count: + type: string + design_management_repositories_count: + type: string + design_management_repositories_checksum_total_count: + type: string + design_management_repositories_checksummed_count: + type: string + design_management_repositories_checksum_failed_count: + type: string + design_management_repositories_synced_count: + type: string + design_management_repositories_failed_count: + type: string + design_management_repositories_registry_count: + type: string + design_management_repositories_verification_total_count: + type: string + design_management_repositories_verified_count: + type: string + design_management_repositories_verification_failed_count: + type: string + group_wiki_repositories_count: + type: string + group_wiki_repositories_checksum_total_count: + type: string + group_wiki_repositories_checksummed_count: + type: string + group_wiki_repositories_checksum_failed_count: + type: string + group_wiki_repositories_synced_count: + type: string + group_wiki_repositories_failed_count: + type: string + group_wiki_repositories_registry_count: + type: string + group_wiki_repositories_verification_total_count: + type: string + group_wiki_repositories_verified_count: + type: string + group_wiki_repositories_verification_failed_count: + type: string + job_artifacts_count: + type: string + job_artifacts_checksum_total_count: + type: string + job_artifacts_checksummed_count: + type: string + job_artifacts_checksum_failed_count: + type: string + job_artifacts_synced_count: + type: string + job_artifacts_failed_count: + type: string + job_artifacts_registry_count: + type: string + job_artifacts_verification_total_count: + type: string + job_artifacts_verified_count: + type: string + job_artifacts_verification_failed_count: + type: string + lfs_objects_count: + type: string + lfs_objects_checksum_total_count: + type: string + lfs_objects_checksummed_count: + type: string + lfs_objects_checksum_failed_count: + type: string + lfs_objects_synced_count: + type: string + lfs_objects_failed_count: + type: string + lfs_objects_registry_count: + type: string + lfs_objects_verification_total_count: + type: string + lfs_objects_verified_count: + type: string + lfs_objects_verification_failed_count: + type: string + merge_request_diffs_count: + type: string + merge_request_diffs_checksum_total_count: + type: string + merge_request_diffs_checksummed_count: + type: string + merge_request_diffs_checksum_failed_count: + type: string + merge_request_diffs_synced_count: + type: string + merge_request_diffs_failed_count: + type: string + merge_request_diffs_registry_count: + type: string + merge_request_diffs_verification_total_count: + type: string + merge_request_diffs_verified_count: + type: string + merge_request_diffs_verification_failed_count: + type: string + package_files_count: + type: string + package_files_checksum_total_count: + type: string + package_files_checksummed_count: + type: string + package_files_checksum_failed_count: + type: string + package_files_synced_count: + type: string + package_files_failed_count: + type: string + package_files_registry_count: + type: string + package_files_verification_total_count: + type: string + package_files_verified_count: + type: string + package_files_verification_failed_count: + type: string + pages_deployments_count: + type: string + pages_deployments_checksum_total_count: + type: string + pages_deployments_checksummed_count: + type: string + pages_deployments_checksum_failed_count: + type: string + pages_deployments_synced_count: + type: string + pages_deployments_failed_count: + type: string + pages_deployments_registry_count: + type: string + pages_deployments_verification_total_count: + type: string + pages_deployments_verified_count: + type: string + pages_deployments_verification_failed_count: + type: string + pipeline_artifacts_count: + type: string + pipeline_artifacts_checksum_total_count: + type: string + pipeline_artifacts_checksummed_count: + type: string + pipeline_artifacts_checksum_failed_count: + type: string + pipeline_artifacts_synced_count: + type: string + pipeline_artifacts_failed_count: + type: string + pipeline_artifacts_registry_count: + type: string + pipeline_artifacts_verification_total_count: + type: string + pipeline_artifacts_verified_count: + type: string + pipeline_artifacts_verification_failed_count: + type: string + project_repositories_count: + type: string + project_repositories_checksum_total_count: + type: string + project_repositories_checksummed_count: + type: string + project_repositories_checksum_failed_count: + type: string + project_repositories_synced_count: + type: string + project_repositories_failed_count: + type: string + project_repositories_registry_count: + type: string + project_repositories_verification_total_count: + type: string + project_repositories_verified_count: + type: string + project_repositories_verification_failed_count: + type: string + project_wiki_repositories_count: + type: string + project_wiki_repositories_checksum_total_count: + type: string + project_wiki_repositories_checksummed_count: + type: string + project_wiki_repositories_checksum_failed_count: + type: string + project_wiki_repositories_synced_count: + type: string + project_wiki_repositories_failed_count: + type: string + project_wiki_repositories_registry_count: + type: string + project_wiki_repositories_verification_total_count: + type: string + project_wiki_repositories_verified_count: + type: string + project_wiki_repositories_verification_failed_count: + type: string + snippet_repositories_count: + type: string + snippet_repositories_checksum_total_count: + type: string + snippet_repositories_checksummed_count: + type: string + snippet_repositories_checksum_failed_count: + type: string + snippet_repositories_synced_count: + type: string + snippet_repositories_failed_count: + type: string + snippet_repositories_registry_count: + type: string + snippet_repositories_verification_total_count: + type: string + snippet_repositories_verified_count: + type: string + snippet_repositories_verification_failed_count: + type: string + terraform_state_versions_count: + type: string + terraform_state_versions_checksum_total_count: + type: string + terraform_state_versions_checksummed_count: + type: string + terraform_state_versions_checksum_failed_count: + type: string + terraform_state_versions_synced_count: + type: string + terraform_state_versions_failed_count: + type: string + terraform_state_versions_registry_count: + type: string + terraform_state_versions_verification_total_count: + type: string + terraform_state_versions_verified_count: + type: string + terraform_state_versions_verification_failed_count: + type: string + uploads_count: + type: string + uploads_checksum_total_count: + type: string + uploads_checksummed_count: + type: string + uploads_checksum_failed_count: + type: string + uploads_synced_count: + type: string + uploads_failed_count: + type: string + uploads_registry_count: + type: string + uploads_verification_total_count: + type: string + uploads_verified_count: + type: string + uploads_verification_failed_count: + type: string + git_fetch_event_count_weekly: + type: string + git_push_event_count_weekly: + type: string + proxy_remote_requests_event_count_weekly: + type: string + proxy_local_requests_event_count_weekly: + type: string + repositories_checked_in_percentage: + type: string + replication_slots_used_in_percentage: + type: string + ci_secure_files_synced_in_percentage: + type: string + ci_secure_files_verified_in_percentage: + type: string + container_repositories_synced_in_percentage: + type: string + container_repositories_verified_in_percentage: + type: string + dependency_proxy_blobs_synced_in_percentage: + type: string + dependency_proxy_blobs_verified_in_percentage: + type: string + dependency_proxy_manifests_synced_in_percentage: + type: string + dependency_proxy_manifests_verified_in_percentage: + type: string + design_management_repositories_synced_in_percentage: + type: string + design_management_repositories_verified_in_percentage: + type: string + group_wiki_repositories_synced_in_percentage: + type: string + group_wiki_repositories_verified_in_percentage: + type: string + job_artifacts_synced_in_percentage: + type: string + job_artifacts_verified_in_percentage: + type: string + lfs_objects_synced_in_percentage: + type: string + lfs_objects_verified_in_percentage: + type: string + merge_request_diffs_synced_in_percentage: + type: string + merge_request_diffs_verified_in_percentage: + type: string + package_files_synced_in_percentage: + type: string + package_files_verified_in_percentage: + type: string + pages_deployments_synced_in_percentage: + type: string + pages_deployments_verified_in_percentage: + type: string + pipeline_artifacts_synced_in_percentage: + type: string + pipeline_artifacts_verified_in_percentage: + type: string + project_repositories_synced_in_percentage: + type: string + project_repositories_verified_in_percentage: + type: string + project_wiki_repositories_synced_in_percentage: + type: string + project_wiki_repositories_verified_in_percentage: + type: string + snippet_repositories_synced_in_percentage: + type: string + snippet_repositories_verified_in_percentage: + type: string + terraform_state_versions_synced_in_percentage: + type: string + terraform_state_versions_verified_in_percentage: + type: string + uploads_synced_in_percentage: + type: string + uploads_verified_in_percentage: + type: string + repositories_count: + type: string + replication_slots_count: + type: string + replication_slots_used_count: + type: string + healthy: + type: string + health: + type: string + health_status: + type: string + missing_oauth_application: + type: string + db_replication_lag_seconds: + type: string + replication_slots_max_retained_wal_bytes: + type: string + repositories_checked_count: + type: string + repositories_checked_failed_count: + type: string + last_event_id: + type: string + last_event_timestamp: + type: string + cursor_last_event_id: + type: string + cursor_last_event_timestamp: + type: string + last_successful_status_check_timestamp: + type: string + version: + type: string + revision: + type: string + selective_sync_type: + type: string + namespaces: + "$ref": "#/definitions/API_Entities_NamespaceBasic" + updated_at: + type: string + storage_shards: + "$ref": "#/definitions/StorageShardEntity" + storage_shards_match: + type: string + _links: + type: object + properties: + self: + type: string + node: + type: string + description: EE_API_Entities_GeoNodeStatus model + StorageShardEntity: + type: object + properties: + name: + type: string + postApiV4GeoProxyGitSshInfoRefsUploadPack: + type: object + properties: + secret_token: + type: string + description: Secret token to authenticate by gitlab shell + data: + type: object + properties: + gl_id: + type: string + description: GitLab identifier of user that initiated the clone/pull + primary_repo: + type: string + description: Primary repository to clone/pull + required: + - gl_id + - primary_repo + required: + - secret_token + - data + description: |- + Responsible for making HTTP GET /repo.git/info/refs?service=git-upload-pack + request from secondary gitlab-shell to primary + postApiV4GeoProxyGitSshUploadPack: + type: object + properties: + secret_token: + type: string + data: + type: object + properties: + gl_id: + type: string + primary_repo: + type: string + required: + - gl_id + - primary_repo + output: + type: string + description: Output from git-upload-pack + required: + - secret_token + - data + - output + description: |- + Responsible for making HTTP POST /repo.git/git-upload-pack + request from secondary gitlab-shell to primary + postApiV4GeoProxyGitSshInfoRefsReceivePack: + type: object + properties: + secret_token: + type: string + data: + type: object + properties: + gl_id: + type: string + primary_repo: + type: string + required: + - gl_id + - primary_repo + required: + - secret_token + - data + description: |- + Responsible for making HTTP GET /repo.git/info/refs?service=git-receive-pack + request from secondary gitlab-shell to primary + postApiV4GeoProxyGitSshReceivePack: + type: object + properties: + secret_token: + type: string + data: + type: object + properties: + gl_id: + type: string + primary_repo: + type: string + required: + - gl_id + - primary_repo + output: + type: string + description: Output from git-receive-pack + required: + - secret_token + - data + - output + description: |- + Responsible for making HTTP POST /repo.git/info/refs?service=git-receive-pack + request from secondary gitlab-shell to primary + postApiV4IntegrationsSlackEvents: + type: object + properties: + token: + type: string + description: "(Deprecated by Slack) The request token, unused by GitLab" + team_id: + type: string + description: The Slack workspace ID of where the event occurred + api_app_id: + type: string + description: The Slack app ID + event: + type: object + description: The event object with variable properties + type: + type: string + description: The kind of event this is, usually `event_callback` + event_id: + type: string + description: A unique identifier for this specific event + event_time: + type: integer + format: int32 + description: The epoch timestamp in seconds when this event was dispatched + authed_users: + type: array + description: "(Deprecated by Slack) An array of Slack user IDs" + items: + type: string + description: Receive Slack events + postApiV4IntegrationsJiraConnectSubscriptions: + type: object + properties: + jwt: + type: string + description: JWT token for authorization with the Jira Connect installation + namespace_path: + type: string + description: Path for the namespace that should be subscribed + required: + - jwt + - namespace_path + description: Subscribe a namespace to a JiraConnectInstallation + API_Entities_BasicSuccess: + type: object + properties: + success: + type: object + properties: {} + description: API_Entities_BasicSuccess model + API_Entities_SSHKeyWithUser: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + title: + type: string + example: Sample key 25 + created_at: + type: string + format: date-time + example: '2015-09-03T07:24:44.627Z' + expires_at: + type: string + format: date-time + example: '2020-09-03T07:24:44.627Z' + last_used_at: + type: string + format: date-time + example: '2020-09-03T07:24:44.627Z' + key: + type: string + example: |- + ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt1256k6Yjz\ + GGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCdd\ + NaP0L+hM7zhFNzjFvpaMgJw0= + usage_type: + type: string + example: auth + user: + "$ref": "#/definitions/API_Entities_UserPublic" + description: API_Entities_SSHKeyWithUser model + API_Entities_UserWithAdmin: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + username: + type: string + example: admin + public_email: + type: string + example: john@example.com + name: + type: string + example: Administrator + state: + type: string + example: active + locked: + type: boolean + avatar_url: + type: string + example: https://gravatar.com/avatar/1 + avatar_path: + type: string + example: "/user/avatar/28/The-Big-Lebowski-400-400.png" + custom_attributes: + type: array + items: + "$ref": "#/definitions/API_Entities_CustomAttribute" + web_url: + type: string + example: https://gitlab.example.com/root + created_at: + type: string + bio: + type: string + location: + type: string + linkedin: + type: string + twitter: + type: string + discord: + type: string + website_url: + type: string + github: + type: string + organization: + type: string + job_title: + type: string + pronouns: + type: string + bot: + type: string + work_information: + type: string + followers: + type: string + following: + type: string + is_followed: + type: string + local_time: + type: string + last_sign_in_at: + type: string + format: date-time + example: '2015-09-03T07:24:01.670Z' + confirmed_at: + type: string + format: date-time + example: '2015-09-03T07:24:01.670Z' + last_activity_on: + type: string + format: date-time + example: '2015-09-03T07:24:01.670Z' + email: + type: string + example: john@example.com + theme_id: + type: integer + format: int32 + example: 2 + color_scheme_id: + type: integer + format: int32 + example: 1 + projects_limit: + type: integer + format: int32 + example: 10 + current_sign_in_at: + type: string + format: date-time + example: '2015-09-03T07:24:01.670Z' + identities: + "$ref": "#/definitions/API_Entities_Identity" + can_create_group: + type: boolean + example: true + can_create_project: + type: boolean + example: true + two_factor_enabled: + type: boolean + example: true + external: + type: string + private_profile: + type: boolean + example: 'null' + commit_email: + type: string + shared_runners_minutes_limit: + type: string + extra_shared_runners_minutes_limit: + type: string + scim_identities: + "$ref": "#/definitions/API_Entities_ScimIdentity" + is_admin: + type: string + note: + type: string + namespace_id: + type: string + created_by: + "$ref": "#/definitions/API_Entities_UserBasic" + email_reset_offered_at: + type: string + using_license_seat: + type: string + is_auditor: + type: string + provisioned_by_group_id: + type: string + enterprise_group_id: + type: string + enterprise_group_associated_at: + type: string + description: API_Entities_UserWithAdmin model + postApiV4Markdown: + type: object + properties: + text: + type: string + description: The Markdown text to render + gfm: + type: boolean + description: Render text using GitLab Flavored Markdown. Default is false + project: + type: string + description: Use project as a context when creating references using GitLab + Flavored Markdown + required: + - text + description: Render an arbitrary Markdown document + API_Entities_Markdown: + type: object + properties: + html: + type: string + example:

Hello world!

" + description: API_Entities_Markdown model + putApiV4NamespacesId: + type: object + properties: + shared_runners_minutes_limit: + type: integer + format: int32 + description: Compute minutes quota for this namespace + extra_shared_runners_minutes_limit: + type: integer + format: int32 + description: Extra compute minutes for this namespace + additional_purchased_storage_size: + type: integer + format: int32 + description: Additional storage size for this namespace + additional_purchased_storage_ends_on: + type: string + format: date + description: End of subscription of the additional purchased storage + gitlab_subscription_attributes: + type: object + properties: + start_date: + type: string + format: date + description: Start date of subscription + seats: + type: integer + format: int32 + description: Number of seats in subscription + max_seats_used: + type: integer + format: int32 + description: Highest number of active users in the last month + plan_code: + type: string + description: Subscription tier code + end_date: + type: string + format: date + description: End date of subscription + auto_renew: + type: boolean + description: Whether subscription will auto renew on end date + trial: + type: boolean + description: Whether the subscription is a trial + trial_ends_on: + type: string + format: date + description: End date of trial + trial_starts_on: + type: string + format: date + description: Start date of trial + trial_extension_type: + type: integer + format: int32 + description: Whether subscription is an extended or reactivated trial + description: "[DEPRECATED] Update a namespace" + API_Entities_Namespace: + type: object + properties: + id: + type: integer + format: int32 + example: 2 + name: + type: string + example: project + path: + type: string + example: my_project + kind: + type: string + example: project + full_path: + type: string + example: group/my_project + parent_id: + type: integer + format: int32 + example: 1 + avatar_url: + type: string + example: https://example.com/avatar/12345 + web_url: + type: string + example: https://example.com/group/my_project + members_count_with_descendants: + type: integer + format: int32 + example: 5 + root_repository_size: + type: integer + format: int32 + example: 123 + projects_count: + type: integer + format: int32 + example: 123 + shared_runners_minutes_limit: + type: integer + format: int32 + example: 133 + extra_shared_runners_minutes_limit: + type: integer + format: int32 + example: 133 + additional_purchased_storage_size: + type: integer + format: int32 + example: 1000 + additional_purchased_storage_ends_on: + type: string + format: date + example: '2022-06-18' + billable_members_count: + type: integer + format: int32 + example: 2 + seats_in_use: + type: integer + format: int32 + example: 5 + max_seats_used: + type: integer + format: int32 + example: 100 + max_seats_used_changed_at: + type: string + format: date + example: '2022-06-18' + end_date: + type: string + format: date + example: '2022-06-18' + plan: + type: string + example: default + trial_ends_on: + type: string + format: date + example: '2022-06-18' + trial: + type: boolean + description: API_Entities_Namespace model + API_Entities_GitlabSubscription: + type: object + properties: + plan: + type: object + properties: + code: + type: string + name: + type: string + trial: + type: string + auto_renew: + type: string + upgradable: + type: string + exclude_guests: + type: string + usage: + type: object + properties: + seats_in_subscription: + type: string + seats_in_use: + type: string + max_seats_used: + type: string + seats_owed: + type: string + billing: + type: object + properties: + subscription_start_date: + type: string + subscription_end_date: + type: string + trial_ends_on: + type: string + description: API_Entities_GitlabSubscription model + postApiV4NamespacesIdStorageLimitExclusion: + type: object + properties: + reason: + type: string + description: The reason the Namespace is being excluded + required: + - reason + description: Creates a storage limit exclusion for a Namespace + API_Entities_Namespaces_Storage_LimitExclusion: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + namespace_id: + type: integer + format: int32 + example: 123 + namespace_name: + type: string + example: GitLab + reason: + type: string + example: a reason + description: API_Entities_Namespaces_Storage_LimitExclusion model + API_Entities_NamespaceExistence: + type: object + properties: + exists: + type: boolean + suggests: + type: array + items: + type: string + example: my-group1 + description: API_Entities_NamespaceExistence model + postApiV4Organizations: + type: object + properties: + name: + type: string + description: The name of the organization + path: + type: string + description: The path of the organization + description: + type: string + description: The description of the organization + avatar: + type: file + description: The avatar image for the organization + required: + - name + - path + description: Create an organization + API_Entities_Organizations_Organization: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + name: + type: string + example: GitLab + path: + type: string + example: gitlab + description: + type: string + example: My description + created_at: + type: string + format: date-time + example: '2022-02-24T20:22:30.097Z' + updated_at: + type: string + format: date-time + example: '2022-02-24T20:22:30.097Z' + web_url: + type: string + example: https://example.com/-/organizations/gitlab + avatar_url: + type: string + example: https://example.com/uploads/-/system/organizations/organization_detail/avatar/1/avatar.png + description: API_Entities_Organizations_Organization model + API_Entities_PagesDomainBasic: + type: object + properties: + domain: + type: string + url: + type: string + project_id: + type: string + verified: + type: string + verification_code: + type: string + enabled_until: + type: string + auto_ssl_enabled: + type: string + certificate_expiration: + "$ref": "#/definitions/API_Entities_PagesDomainCertificateExpiration" + description: API_Entities_PagesDomainBasic model + API_Entities_PagesDomainCertificateExpiration: + type: object + properties: + expired: + type: string + expiration: + type: string + API_Entities_PersonalAccessTokenWithLastUsedIps: + type: object + properties: + id: + type: integer + format: int32 + example: 2 + name: + type: string + example: John Doe + revoked: + type: boolean + created_at: + type: string + format: date-time + description: + type: string + example: Token to manage api + scopes: + type: array + example: + - api + user_id: + type: integer + format: int32 + example: 3 + last_used_at: + type: string + format: date-time + example: '2020-08-31T15:53:00.073Z' + active: + type: boolean + expires_at: + type: string + format: date-time + example: '2020-08-31T15:53:00.073Z' + last_used_ips: + type: array + example: + - 127.0.0.1 + - 127.0.0.2 + - 127.0.0.3 + description: API_Entities_PersonalAccessTokenWithLastUsedIps model + API_Entities_PersonalAccessToken: + type: object + properties: + id: + type: integer + format: int32 + example: 2 + name: + type: string + example: John Doe + revoked: + type: boolean + created_at: + type: string + format: date-time + description: + type: string + example: Token to manage api + scopes: + type: array + example: + - api + user_id: + type: integer + format: int32 + example: 3 + last_used_at: + type: string + format: date-time + example: '2020-08-31T15:53:00.073Z' + active: + type: boolean + expires_at: + type: string + format: date-time + example: '2020-08-31T15:53:00.073Z' + description: API_Entities_PersonalAccessToken model + postApiV4PersonalAccessTokensSelfRotate: + type: object + properties: + expires_at: + type: string + format: date + description: The expiration date of the token + example: '2021-01-31' + description: Rotate a personal access token + API_Entities_PersonalAccessTokenWithToken: + type: object + properties: + id: + type: integer + format: int32 + example: 2 + name: + type: string + example: John Doe + revoked: + type: boolean + created_at: + type: string + format: date-time + description: + type: string + example: Token to manage api + scopes: + type: array + example: + - api + user_id: + type: integer + format: int32 + example: 3 + last_used_at: + type: string + format: date-time + example: '2020-08-31T15:53:00.073Z' + active: + type: boolean + expires_at: + type: string + format: date-time + example: '2020-08-31T15:53:00.073Z' + token: + type: string + description: API_Entities_PersonalAccessTokenWithToken model + postApiV4PersonalAccessTokensIdRotate: + type: object + properties: + expires_at: + type: string + format: date + description: The expiration date of the token + example: '2021-01-31' + description: Rotate personal access token + API_Entities_Snippet: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + title: + type: string + example: test + description: + type: string + example: Ruby test snippet + visibility: + type: string + example: public + author: + "$ref": "#/definitions/API_Entities_UserBasic" + created_at: + type: string + format: date-time + example: '2012-06-28T10:52:04Z' + updated_at: + type: string + format: date-time + example: '2012-06-28T10:52:04Z' + project_id: + type: integer + format: int32 + example: 1 + web_url: + type: string + example: http://example.com/example/example/snippets/1 + raw_url: + type: string + example: http://example.com/example/example/snippets/1/raw + ssh_url_to_repo: + type: string + example: ssh://user@gitlab.example.com/snippets/65.git + http_url_to_repo: + type: string + example: https://gitlab.example.com/snippets/65.git + file_name: + type: string + example: add.rb + files: + type: array + items: + type: string + example: e0d123e5f316bef78bfdf5a008837577 + imported: + type: boolean + example: false + imported_from: + type: string + example: none + repository_storage: + type: string + description: API_Entities_Snippet model + API_Entities_PersonalSnippet: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + title: + type: string + example: test + description: + type: string + example: Ruby test snippet + visibility: + type: string + example: public + author: + "$ref": "#/definitions/API_Entities_UserBasic" + created_at: + type: string + format: date-time + example: '2012-06-28T10:52:04Z' + updated_at: + type: string + format: date-time + example: '2012-06-28T10:52:04Z' + project_id: + type: integer + format: int32 + example: 1 + web_url: + type: string + example: http://example.com/example/example/snippets/1 + raw_url: + type: string + example: http://example.com/example/example/snippets/1/raw + ssh_url_to_repo: + type: string + example: ssh://user@gitlab.example.com/snippets/65.git + http_url_to_repo: + type: string + example: https://gitlab.example.com/snippets/65.git + file_name: + type: string + example: add.rb + files: + type: array + items: + type: string + example: e0d123e5f316bef78bfdf5a008837577 + imported: + type: boolean + example: false + imported_from: + type: string + example: none + repository_storage: + type: string + description: API_Entities_PersonalSnippet model + postApiV4Snippets: + type: object + properties: + title: + type: string + description: The title of a snippet + description: + type: string + description: The description of a snippet + visibility: + type: string + description: The visibility of the snippet + enum: + - private + - internal + - public + default: internal + files: + type: array + description: An array of files + items: + type: object + properties: + file_path: + type: string + description: The path of a snippet file + content: + type: string + description: The content of a snippet file + required: + - file_path + - content + content: + type: string + description: The content of a snippet + file_name: + type: string + description: The name of a snippet file + required: + - title + - file_name + description: Create new snippet + putApiV4SnippetsId: + type: object + properties: + content: + type: string + description: The content of a snippet + description: + type: string + description: The description of a snippet + file_name: + type: string + description: The name of a snippet file + title: + type: string + description: The title of a snippet + visibility: + type: string + description: The visibility of the snippet + enum: + - private + - internal + - public + files: + type: array + description: An array of files to update + items: + type: object + properties: + action: + type: string + description: 'The type of action to perform on the file, must be one + of: create, update, delete, move' + enum: + - create + - update + - delete + - move + content: + type: string + description: The content of a snippet + file_path: + type: string + description: The file path of a snippet file + previous_path: + type: string + description: The previous path of a snippet file + required: + - action + description: Update an existing snippet + putApiV4SuggestionsIdApply: + type: object + properties: + commit_message: + type: string + description: A custom commit message to use instead of the default generated + message or the project's default message + description: Apply suggestion patch in the Merge Request it was created + putApiV4SuggestionsBatchApply: + type: object + properties: + ids: + type: array + description: An array of the suggestion IDs + items: + type: integer + format: int32 + commit_message: + type: string + description: A custom commit message to use instead of the default generated + message or the project's default message + required: + - ids + description: Apply multiple suggestion patches in the Merge Request where they + were created + putApiV4HooksHookIdUrlVariablesKey: + type: object + properties: + value: + type: string + description: The value of the variable + required: + - value + description: Set a url variable + putApiV4HooksHookIdCustomHeadersKey: + type: object + properties: + value: + type: string + description: The value of the custom header + required: + - value + description: Set a custom header + API_Entities_Hook: + type: object + properties: + id: + type: string + example: 1 + url: + type: string + example: https://webhook.site + name: + type: string + example: Hook name + description: + type: string + example: Hook description + created_at: + type: string + format: date-time + example: '2012-05-28T04:42:42-07:00' + push_events: + type: boolean + tag_push_events: + type: boolean + merge_requests_events: + type: boolean + repository_update_events: + type: boolean + enable_ssl_verification: + type: boolean + alert_status: + type: symbol + example: executable + disabled_until: + type: string + format: date-time + example: '2012-05-28T04:42:42-07:00' + url_variables: + type: array + items: + type: object + example: + token: secr3t + push_events_branch_filter: + type: string + example: my-branch-* + branch_filter_strategy: + type: string + example: wildcard + custom_webhook_template: + type: string + example: '{"event":"{{object_kind}}"}' + custom_headers: + type: array + items: + type: object + example: + X-Custom-Header: value + description: API_Entities_Hook model + postApiV4Hooks: + type: object + properties: + url: + type: string + description: The URL to send the request to + example: http://example.com/hook + name: + type: string + description: Name of the hook + description: + type: string + description: Description of the hook + token: + type: string + description: Secret token to validate received payloads; this isn't returned + in the response + push_events: + type: boolean + description: When true, the hook fires on push events + tag_push_events: + type: boolean + description: When true, the hook fires on new tags being pushed + merge_requests_events: + type: boolean + description: Trigger hook on merge requests events + repository_update_events: + type: boolean + description: Trigger hook on repository update events + enable_ssl_verification: + type: boolean + description: Do SSL verification when triggering the hook + push_events_branch_filter: + type: string + description: Trigger hook on specified branch only + branch_filter_strategy: + type: string + description: Filter push events by branch. Possible values are `wildcard` + (default), `regex`, and `all_branches` + enum: + - wildcard + - regex + - all_branches + url_variables: + type: array + description: URL variables for interpolation + items: + type: object + properties: + key: + type: string + description: Name of the variable + example: token + value: + type: string + description: Value of the variable + example: '123' + required: + - key + - value + custom_headers: + type: array + description: Custom headers + items: + type: object + properties: + key: + type: string + description: Name of the header + example: X-Custom-Header + value: + type: string + description: Value of the header + example: value + required: + - key + - value + required: + - url + description: Add new system hook + putApiV4HooksHookId: + type: object + properties: + url: + type: string + description: The URL to send the request to + name: + type: string + description: Name of the hook + description: + type: string + description: Description of the hook + token: + type: string + description: Secret token to validate received payloads; this isn't returned + in the response + push_events: + type: boolean + description: When true, the hook fires on push events + tag_push_events: + type: boolean + description: When true, the hook fires on new tags being pushed + merge_requests_events: + type: boolean + description: Trigger hook on merge requests events + repository_update_events: + type: boolean + description: Trigger hook on repository update events + enable_ssl_verification: + type: boolean + description: Do SSL verification when triggering the hook + push_events_branch_filter: + type: string + description: Trigger hook on specified branch only + branch_filter_strategy: + type: string + description: Filter push events by branch. Possible values are `wildcard` + (default), `regex`, and `all_branches` + enum: + - wildcard + - regex + - all_branches + url_variables: + type: array + description: URL variables for interpolation + items: + type: object + properties: + key: + type: string + description: Name of the variable + example: token + value: + type: string + description: Value of the variable + example: '123' + required: + - key + - value + custom_headers: + type: array + description: Custom headers + items: + type: object + properties: + key: + type: string + description: Name of the header + example: X-Custom-Header + value: + type: string + description: Value of the header + example: value + required: + - key + - value + description: Edit system hook + postApiV4FeatureFlagsUnleashProjectIdClientRegister: + type: object + properties: + instance_id: + type: string + description: The instance ID of Unleash Client + app_name: + type: string + description: The application name of Unleash Client + postApiV4FeatureFlagsUnleashProjectIdClientMetrics: + type: object + properties: + instance_id: + type: string + description: The instance ID of Unleash Client + app_name: + type: string + description: The application name of Unleash Client + postApiV4UsageDataIncrementCounter: + type: object + properties: + event: + type: string + description: The event name that should be tracked + example: i_quickactions_page + required: + - event + description: Track usage data event + postApiV4UsageDataIncrementUniqueUsers: + type: object + properties: + event: + type: string + description: The event name that should be tracked + example: i_quickactions_page + required: + - event + description: Track usage data event for the current user + postApiV4UsageDataTrackEvents: + type: object + properties: + events: + type: array + description: An array of internal events. Maximum 50 events allowed. + items: + type: object + properties: + event: + type: string + description: The event name that should be tracked + example: i_quickactions_page + namespace_id: + type: integer + format: int32 + description: Namespace ID + example: 1234 + project_id: + type: integer + format: int32 + description: Project ID + example: 1234 + additional_properties: + type: object + description: Additional properties to be tracked + example: + label: login_button + value: 1 + send_to_snowplow: + type: boolean + description: Send the tracked event to Snowplow + default: false + example: true + required: + - event + required: + - events + description: Track multiple gitlab internal events + postApiV4UsageDataTrackEvent: + type: object + properties: + event: + type: string + description: The event name that should be tracked + example: i_quickactions_page + namespace_id: + type: integer + format: int32 + description: Namespace ID + example: 1234 + project_id: + type: integer + format: int32 + description: Project ID + example: 1234 + additional_properties: + type: object + description: Additional properties to be tracked + example: + label: login_button + value: 1 + send_to_snowplow: + type: boolean + description: Send the tracked event to Snowplow + default: false + example: true + required: + - event + description: Track gitlab internal events + API_Entities_UserCounts: + type: object + properties: + merge_requests: + type: integer + format: int32 + example: 10 + assigned_issues: + type: integer + format: int32 + example: 10 + assigned_merge_requests: + type: integer + format: int32 + example: 10 + review_requested_merge_requests: + type: integer + format: int32 + example: 10 + todos: + type: integer + format: int32 + example: 10 + description: API_Entities_UserCounts model + postApiV4UserRunners: + type: object + properties: + runner_type: + type: string + description: Specifies the scope of the runner + enum: + - instance_type + - group_type + - project_type + group_id: + type: integer + format: int32 + description: The ID of the group that the runner is created in + example: 1 + project_id: + type: integer + format: int32 + description: The ID of the project that the runner is created in + example: 1 + description: + type: string + description: Description of the runner + maintenance_note: + type: string + description: Free-form maintenance notes for the runner (1024 characters) + paused: + type: boolean + description: Specifies if the runner should ignore new jobs (defaults to false) + locked: + type: boolean + description: Specifies if the runner should be locked for the current project + (defaults to false) + access_level: + type: string + description: The access level of the runner + enum: + - not_protected + - ref_protected + run_untagged: + type: boolean + description: Specifies if the runner should handle untagged jobs (defaults + to true) + tag_list: + type: array + description: A list of runner tags + items: + type: string + maximum_timeout: + type: integer + format: int32 + description: Maximum timeout that limits the amount of time (in seconds) that + runners can run jobs + required: + - runner_type + - group_id + - project_id + description: Create a runner owned by currently authenticated user + API_Entities_PlanLimit: + type: object + properties: + ci_instance_level_variables: + type: integer + format: int32 + example: 25 + ci_pipeline_size: + type: integer + format: int32 + example: 0 + ci_active_jobs: + type: integer + format: int32 + example: 0 + ci_project_subscriptions: + type: integer + format: int32 + example: 2 + ci_pipeline_schedules: + type: integer + format: int32 + example: 10 + ci_needs_size_limit: + type: integer + format: int32 + example: 50 + ci_registered_group_runners: + type: integer + format: int32 + example: 1000 + ci_registered_project_runners: + type: integer + format: int32 + example: 1000 + conan_max_file_size: + type: integer + format: int32 + example: 3221225472 + dotenv_variables: + type: integer + format: int32 + example: 20 + dotenv_size: + type: integer + format: int32 + example: 5120 + enforcement_limit: + type: integer + format: int32 + example: 15000 + generic_packages_max_file_size: + type: integer + format: int32 + example: 5368709120 + helm_max_file_size: + type: integer + format: int32 + example: 5242880 + limits_history: + type: object + example: |- + {"enforcement_limit"=>[{"timestamp"=>1686909124, "user_id"=>1, "username"=>"x", "value"=>5}], + "notification_limit"=>[{"timestamp"=>1686909124, "user_id"=>2, "username"=>"y", "value"=>7}]} + maven_max_file_size: + type: integer + format: int32 + example: 3221225472 + notification_limit: + type: integer + format: int32 + example: 15000 + npm_max_file_size: + type: integer + format: int32 + example: 524288000 + nuget_max_file_size: + type: integer + format: int32 + example: 524288000 + pipeline_hierarchy_size: + type: integer + format: int32 + example: 1000 + pypi_max_file_size: + type: integer + format: int32 + example: 3221225472 + terraform_module_max_file_size: + type: integer + format: int32 + example: 1073741824 + storage_size_limit: + type: integer + format: int32 + example: 15000 + description: API_Entities_PlanLimit model + putApiV4ApplicationPlanLimits: + type: object + properties: + plan_name: + type: string + description: Name of the plan to update + enum: + - default + - free + - bronze + - silver + - premium + - gold + - ultimate + - ultimate_trial + - ultimate_trial_paid_customer + - premium_trial + - opensource + ci_instance_level_variables: + type: integer + format: int32 + description: Maximum number of Instance-level CI/CD variables that can be + defined + ci_pipeline_size: + type: integer + format: int32 + description: Maximum number of jobs in a single pipeline + ci_active_jobs: + type: integer + format: int32 + description: Total number of jobs in currently active pipelines + ci_project_subscriptions: + type: integer + format: int32 + description: Maximum number of pipeline subscriptions to and from a project + ci_pipeline_schedules: + type: integer + format: int32 + description: Maximum number of pipeline schedules + ci_needs_size_limit: + type: integer + format: int32 + description: Maximum number of needs dependencies that a job can have + ci_registered_group_runners: + type: integer + format: int32 + description: Maximum number of runners created or active in a group during + the past seven days + ci_registered_project_runners: + type: integer + format: int32 + description: Maximum number of runners created or active in a project during + the past seven days + conan_max_file_size: + type: integer + format: int32 + description: Maximum Conan package file size in bytes + dotenv_size: + type: integer + format: int32 + description: Maximum size of a dotenv artifact in bytes + dotenv_variables: + type: integer + format: int32 + description: Maximum number of variables in a dotenv artifact + enforcement_limit: + type: integer + format: int32 + description: Maximum storage size for the root namespace enforcement in MiB + generic_packages_max_file_size: + type: integer + format: int32 + description: Maximum generic package file size in bytes + helm_max_file_size: + type: integer + format: int32 + description: Maximum Helm chart file size in bytes + maven_max_file_size: + type: integer + format: int32 + description: Maximum Maven package file size in bytes + notification_limit: + type: integer + format: int32 + description: Maximum storage size for the root namespace notifications in + MiB + npm_max_file_size: + type: integer + format: int32 + description: Maximum NPM package file size in bytes + nuget_max_file_size: + type: integer + format: int32 + description: Maximum NuGet package file size in bytes + pypi_max_file_size: + type: integer + format: int32 + description: Maximum PyPI package file size in bytes + terraform_module_max_file_size: + type: integer + format: int32 + description: Maximum Terraform Module package file size in bytes + storage_size_limit: + type: integer + format: int32 + description: Maximum storage size for the root namespace in MiB + pipeline_hierarchy_size: + type: integer + format: int32 + description: Maximum number of downstream pipelines in a pipeline's hierarchy + tree + required: + - plan_name + description: Change plan limits + API_Entities_Appearance: + type: object + properties: + title: + type: string + description: + type: string + pwa_name: + type: string + pwa_short_name: + type: string + pwa_description: + type: string + logo: + type: string + pwa_icon: + type: string + header_logo: + type: string + favicon: + type: string + new_project_guidelines: + type: string + member_guidelines: + type: string + profile_image_guidelines: + type: string + header_message: + type: string + footer_message: + type: string + message_background_color: + type: string + message_font_color: + type: string + email_header_and_footer_enabled: + type: string + description: API_Entities_Appearance model + API_Entities_ApplicationStatistics: + type: object + properties: + forks: + type: integer + format: int32 + example: 6 + description: Approximate number of repo forks + issues: + type: integer + format: int32 + example: 121 + description: Approximate number of issues + merge_requests: + type: integer + format: int32 + example: 49 + description: Approximate number of merge requests + notes: + type: integer + format: int32 + example: 6 + description: Approximate number of notes + snippets: + type: integer + format: int32 + example: 4 + description: Approximate number of snippets + ssh_keys: + type: integer + format: int32 + example: 11 + description: Approximate number of SSH keys + milestones: + type: integer + format: int32 + example: 3 + description: Approximate number of milestones + users: + type: integer + format: int32 + example: 22 + description: Approximate number of users + projects: + type: integer + format: int32 + example: 4 + description: Approximate number of projects + groups: + type: integer + format: int32 + example: 1 + description: Approximate number of projects + active_users: + type: integer + format: int32 + example: 21 + description: Number of active users + description: API_Entities_ApplicationStatistics model + API_Entities_DiscoveredClusters: + type: object + properties: + groups: + type: string + projects: + type: string + description: API_Entities_DiscoveredClusters model + postApiV4DeployKeys: + type: object + properties: + key: + type: string + description: New deploy key + title: + type: string + description: New deploy key's title + expires_at: + type: string + format: date-time + description: The expiration date of the SSH key in ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ) + required: + - key + - title + description: Create a deploy key + postApiV4ImportBitbucket: + type: object + properties: + bitbucket_username: + type: string + description: BitBucket username + bitbucket_app_password: + type: string + description: BitBucket app password + repo_path: + type: string + description: Repository path + target_namespace: + type: string + description: Target namespace + new_name: + type: string + description: New repository name + required: + - bitbucket_username + - bitbucket_app_password + - repo_path + - target_namespace + description: Import a BitBucket Cloud repository + ProjectImportEntity: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + name: + type: string + example: GitLab + full_path: + type: string + example: gitlab-org/gitlab + full_name: + type: string + example: GitLab Org / GitLab + refs_url: + type: string + forked: + type: boolean + example: true + import_source: + type: string + example: source/source-repo + import_status: + type: string + enum: + - scheduled + - started + - finished + - failed + - canceled + example: scheduled + human_import_status_name: + type: string + example: canceled + provider_link: + type: string + example: "/source/source-repo" + import_error: + type: string + import_warning: + type: string + relation_type: + type: string + description: ProjectImportEntity model + postApiV4ImportBitbucketServer: + type: object + properties: + bitbucket_server_url: + type: string + description: Bitbucket Server URL + bitbucket_server_username: + type: string + description: BitBucket Server Username + personal_access_token: + type: string + description: BitBucket Server personal access token/password + bitbucket_server_project: + type: string + description: BitBucket Server Project Key + bitbucket_server_repo: + type: string + description: BitBucket Server Repository Name + new_name: + type: string + description: New repo name + new_namespace: + type: string + description: Namespace to import repo into + timeout_strategy: + type: string + description: Strategy for behavior on timeouts + enum: + - optimistic + - pessimistic + required: + - bitbucket_server_url + - bitbucket_server_username + - personal_access_token + - bitbucket_server_project + - bitbucket_server_repo + description: Import a BitBucket Server repository + ProjectEntity: + type: object + properties: + id: + type: integer + format: int32 + example: 1 + name: + type: string + example: GitLab + full_path: + type: string + example: gitlab-org/gitlab + full_name: + type: string + example: GitLab Org / GitLab + refs_url: + type: string + forked: + type: boolean + example: true + description: ProjectEntity model + postApiV4ImportGithub: + type: object + properties: + personal_access_token: + type: string + description: GitHub personal access token + repo_id: + type: integer + format: int32 + description: GitHub repository ID + new_name: + type: string + description: New repo name + target_namespace: + type: string + description: Namespace or group to import repository into + github_hostname: + type: string + description: 'Custom GitHub enterprise hostname. For example: https://github.example.com. + From GitLab 16.5 to GitLab 17.1, you must include the path `/api/v3`.' + optional_stages: + type: object + description: Optional stages of import to be performed + timeout_strategy: + type: string + description: Strategy for behavior on timeouts + enum: + - optimistic + - pessimistic + pagination_limit: + type: integer + format: int32 + description: Pagination limit + required: + - personal_access_token + - repo_id + - target_namespace + description: Import a GitHub project + postApiV4ImportGithubCancel: + type: object + properties: + project_id: + type: integer + format: int32 + description: ID of importing project to be canceled + required: + - project_id + description: Cancel GitHub project import + postApiV4ImportGithubGists: + type: object + properties: + personal_access_token: + type: string + description: GitHub personal access token + required: + - personal_access_token + description: Import User Gists + postApiV4SlackTrigger: + type: object + properties: + text: + type: string + description: Text of the slack command + required: + - text + description: Trigger a global slack command + API_Entities_Metadata: + type: object + properties: + version: + type: string + example: 15.2-pre + revision: + type: string + example: c401a659d0c + kas: + type: object + properties: + enabled: + type: boolean + externalUrl: + type: string + example: grpc://gitlab.example.com:8150 + externalK8sProxyUrl: + type: string + example: https://gitlab.example.com:8150/k8s-proxy + version: + type: string + example: 15.0.0 + enterprise: + type: boolean + description: API_Entities_Metadata model + API_Entities_Projects_Topic: + type: object + properties: + id: + type: string + name: + type: string + title: + type: string + description: + type: string + total_projects_count: + type: string + organization_id: + type: string + avatar_url: + type: string + description: API_Entities_Projects_Topic model + postApiV4Topics: + type: object + properties: + name: + type: string + description: Slug (name) + title: + type: string + description: Title + description: + type: string + description: Description + avatar: + type: file + description: Avatar image for topic + organization_id: + type: integer + format: int32 + description: The organization id for the topic + default: {} + required: + - name + - title + description: Create a topic + putApiV4TopicsId: + type: object + properties: + name: + type: string + description: Slug (name) + title: + type: string + description: Title + description: + type: string + description: Description + avatar: + type: file + description: Avatar image for topic + description: Update a topic + postApiV4TopicsMerge: + type: object + properties: + source_topic_id: + type: integer + format: int32 + description: ID of source project topic + target_topic_id: + type: integer + format: int32 + description: ID of target project topic + required: + - source_topic_id + - target_topic_id + description: Merge topics diff --git a/doc/api/settings.md b/doc/api/settings.md index 188e5a22459..c9f6f51a4a1 100644 --- a/doc/api/settings.md +++ b/doc/api/settings.md @@ -222,10 +222,20 @@ these parameters: - `delayed_project_deletion` and `delayed_group_deletion` attributes removed in GitLab 16.0. - `user_email_lookup_limit` attribute [removed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/136886) in GitLab 16.7. - `default_branch_protection` [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/408314) in GitLab 17.0. Use `default_branch_protection_defaults` instead. +- `throttle_unauthenticated_git_http_enabled`, `throttle_unauthenticated_git_http_period_in_seconds`, and `throttle_unauthenticated_git_http_requests_per_period` attributes [added](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/147112) in GitLab 17.0. - `allow_all_integrations` and `allowed_integrations` attributes [added](https://gitlab.com/gitlab-org/gitlab/-/issues/500610) in GitLab 17.6. +- `throttle_authenticated_git_http_enabled`, `throttle_authenticated_git_http_period_in_seconds`, and `throttle_authenticated_git_http_requests_per_period` attributes [added](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/191552) in GitLab 18.1 [with a flag](../administration/feature_flags/_index.md) named `git_authenticated_http_limit`. Disabled by default. {{< /history >}} +{{< alert type="flag" >}} + +The availability of authenticated Git HTTP rate limits is controlled by a feature flag. +For more information, see the history. +This feature is available for testing, but not ready for production use. + +{{< /alert >}} + Updates the current [application settings](#available-settings) for this GitLab instance. ```plaintext @@ -754,6 +764,9 @@ to configure other related settings. These requirements are | `throttle_authenticated_api_enabled` | boolean | no | (**If enabled, requires**: `throttle_authenticated_api_period_in_seconds` and `throttle_authenticated_api_requests_per_period`) Enable authenticated API request rate limit. Helps reduce request volume (for example, from crawlers or abusive bots). | | `throttle_authenticated_api_period_in_seconds` | integer | required by:
`throttle_authenticated_api_enabled` | Rate limit period (in seconds). | | `throttle_authenticated_api_requests_per_period` | integer | required by:
`throttle_authenticated_api_enabled` | Maximum requests per period per user. | +| `throttle_authenticated_git_http_enabled` | boolean | conditionally | If `true`, enforces the authenticated Git HTTP request rate limit. Default value: `false`. | +| `throttle_authenticated_git_http_period_in_seconds` | integer | no | Rate limit period in seconds. `throttle_authenticated_git_http_enabled` must be `true`. Default value: `3600`. | +| `throttle_authenticated_git_http_requests_per_period` | integer | no | Maximum requests per period per user. `throttle_authenticated_git_http_enabled` must be `true`. Default value: `3600`. | | `throttle_authenticated_packages_api_enabled` | boolean | no | (**If enabled, requires**: `throttle_authenticated_packages_api_period_in_seconds` and `throttle_authenticated_packages_api_requests_per_period`) Enable authenticated API request rate limit. Helps reduce request volume (for example, from crawlers or abusive bots). View [package registry rate limits](../administration/settings/package_registry_rate_limits.md) for more details. | | `throttle_authenticated_packages_api_period_in_seconds` | integer | required by:
`throttle_authenticated_packages_api_enabled` | Rate limit period (in seconds). View [package registry rate limits](../administration/settings/package_registry_rate_limits.md) for more details. | | `throttle_authenticated_packages_api_requests_per_period` | integer | required by:
`throttle_authenticated_packages_api_enabled` | Maximum requests per period per user. View [package registry rate limits](../administration/settings/package_registry_rate_limits.md) for more details. | @@ -766,6 +779,9 @@ to configure other related settings. These requirements are | `throttle_unauthenticated_api_enabled` | boolean | no | (**If enabled, requires**: `throttle_unauthenticated_api_period_in_seconds` and `throttle_unauthenticated_api_requests_per_period`) Enable unauthenticated API request rate limit. Helps reduce request volume (for example, from crawlers or abusive bots). | | `throttle_unauthenticated_api_period_in_seconds` | integer | required by:
`throttle_unauthenticated_api_enabled` | Rate limit period in seconds. | | `throttle_unauthenticated_api_requests_per_period` | integer | required by:
`throttle_unauthenticated_api_enabled` | Max requests per period per IP. | +| `throttle_unauthenticated_git_http_enabled` | boolean | conditionally | If `true`, enforces the unauthenticated Git HTTP request rate limit. Default value: `false`. | +| `throttle_unauthenticated_git_http_period_in_seconds` | integer | no | Rate limit period in seconds. `throttle_unauthenticated_git_http_enabled` must be `true`. Default value: `3600`. | +| `throttle_unauthenticated_git_http_requests_per_period` | integer | no | Maximum requests per period per user. `throttle_unauthenticated_git_http_enabled` must be `true`. Default value: `3600`. | | `throttle_unauthenticated_packages_api_enabled` | boolean | no | (**If enabled, requires**: `throttle_unauthenticated_packages_api_period_in_seconds` and `throttle_unauthenticated_packages_api_requests_per_period`) Enable authenticated API request rate limit. Helps reduce request volume (for example, from crawlers or abusive bots). View [package registry rate limits](../administration/settings/package_registry_rate_limits.md) for more details. | | `throttle_unauthenticated_packages_api_period_in_seconds` | integer | required by:
`throttle_unauthenticated_packages_api_enabled` | Rate limit period (in seconds). View [package registry rate limits](../administration/settings/package_registry_rate_limits.md) for more details. | | `throttle_unauthenticated_packages_api_requests_per_period` | integer | required by:
`throttle_unauthenticated_packages_api_enabled` | Maximum requests per period per user. View [package registry rate limits](../administration/settings/package_registry_rate_limits.md) for more details. | diff --git a/doc/api/user_service_accounts.md b/doc/api/user_service_accounts.md index cc38effd474..fa2b67ed9f5 100644 --- a/doc/api/user_service_accounts.md +++ b/doc/api/user_service_accounts.md @@ -95,7 +95,7 @@ Supported attributes: | ---------- | ------ | -------- | ----------- | | `name` | string | no | Name of the user. If not set, uses `Service account user`. | | `username` | string | no | Username of the user account. If undefined, generates a name prepended with `service_account_`. | -| `email` | string | no | Email of the user account. If undefined, generates a no-reply email address. | +| `email` | string | no | Email of the user account. If undefined, generates a no-reply email address. Custom email addresses require confirmation, unless the email confirmation settings are [turned off](../administration/settings/sign_up_restrictions.md#confirm-user-email). | Example request: @@ -116,3 +116,48 @@ Example response: If the email address defined by the `email` attribute is already in use by another user, returns a `400 Bad request` error. + +## Update an instance service account + +{{< history >}} + +- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/196309/) in GitLab 18.2. + +{{< /history >}} + +Updates a specified instance service account. + +Prerequisites: + +- You must have administrator access to the instance. + +```plaintext +PATCH /service_accounts/:id +``` + +Parameters: + +| Attribute | Type | Required | Description | +|:-----------|:---------------|:---------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `id` | integer | yes | ID of the service account. | +| `name` | string | no | Name of the user. | +| `username` | string | no | Username of the user account. | +| `email` | string | no | Email of the user account. Custom email addresses require confirmation, unless the email confirmation settings are [turned off](../administration/settings/sign_up_restrictions.md#confirm-user-email). | + +Example request: + +```shell +curl --request PATCH --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/service_accounts/57" --data "name=Updated Service Account email=updated_email@example.com" +``` + +Example response: + +```json +{ + "id": 57, + "username": "service_account_6018816a18e515214e0c34c2b33523fc", + "name": "Updated Service Account", + "email": "service_account_@noreply.gitlab.example.com", + "unconfirmed_email": "custom_email@example.com" +} +``` diff --git a/doc/ci/pipelines/pipeline_efficiency.md b/doc/ci/pipelines/pipeline_efficiency.md index 371911b4606..7d8a5844245 100644 --- a/doc/ci/pipelines/pipeline_efficiency.md +++ b/doc/ci/pipelines/pipeline_efficiency.md @@ -113,7 +113,7 @@ be embedded into incidents making problem resolving easier. Additionally, it can If you use the GitLab CI Pipelines Exporter, you should start with the [example configuration](https://github.com/mvisonneau/gitlab-ci-pipelines-exporter/blob/main/docs/configuration_syntax.md). -![Grafana Dashboard for GitLab CI Pipelines Prometheus Exporter](img/ci_efficiency_pipeline_health_grafana_dashboard_v13_7.png) +![Grafana Dashboard showing CI run statuses and historical statistics including frequency and fail rate.](img/ci_efficiency_pipeline_health_grafana_dashboard_v13_7.png) Alternatively, you can use a monitoring tool that can execute scripts, like [`check_gitlab`](https://gitlab.com/6uellerBpanda/check_gitlab) for example. diff --git a/doc/ci/triggers/_index.md b/doc/ci/triggers/_index.md index ecccb951925..ad61ed84ea5 100644 --- a/doc/ci/triggers/_index.md +++ b/doc/ci/triggers/_index.md @@ -165,7 +165,7 @@ curl --request POST \ CI/CD variables in triggered pipelines display on each job's page, but only users with the Owner and Maintainer role can view the values. -![Job variables in UI](img/trigger_variables_v11_6.png) +![A configuration panel for a CI trigger for token 4e19 showing UPLOAD_TO_CI set to true](img/trigger_variables_v11_6.png) Using inputs to control pipeline behavior offers improved security and flexibility over CI/CD variables. diff --git a/doc/ci/yaml/script.md b/doc/ci/yaml/script.md index 94de2c503b3..728cc9a2768 100644 --- a/doc/ci/yaml/script.md +++ b/doc/ci/yaml/script.md @@ -60,6 +60,7 @@ Store the exit code in a variable to avoid this behavior: ```yaml job: script: + - exit_code=0 - false || exit_code=$? - if [ $exit_code -ne 0 ]; then echo "Previous command failed"; fi; ``` diff --git a/doc/user/application_security/analyze/_index.md b/doc/user/application_security/analyze/_index.md index a25b1040b2c..ab4d6da28b5 100644 --- a/doc/user/application_security/analyze/_index.md +++ b/doc/user/application_security/analyze/_index.md @@ -91,7 +91,7 @@ this information to help analyze a vulnerability. The following tips may also help you analyze a vulnerability: -- Use [GitLab Duo Vulnerability Explanation](../vulnerabilities/_index.md#explaining-a-vulnerability) +- Use [GitLab Duo Vulnerability Explanation](../vulnerabilities/_index.md#vulnerability-explanation) to help explain the vulnerability and suggest a remediation. Available only for vulnerabilities detected by SAST. - Use [security training](../vulnerabilities/_index.md#view-security-training-for-a-vulnerability) diff --git a/doc/user/application_security/remediate/_index.md b/doc/user/application_security/remediate/_index.md index c1518f91b71..8a62e639ba9 100644 --- a/doc/user/application_security/remediate/_index.md +++ b/doc/user/application_security/remediate/_index.md @@ -47,7 +47,7 @@ effective. For some vulnerabilities detected by SAST, GitLab can: -- [Explain the vulnerability](../vulnerabilities/_index.md#explaining-a-vulnerability), using GitLab +- [Explain the vulnerability](../vulnerabilities/_index.md#vulnerability-explanation), using GitLab Duo Chat. - [Resolve the vulnerability](../vulnerabilities/_index.md#vulnerability-resolution), using GitLab Duo Chat. diff --git a/doc/user/application_security/sast/evaluation_guide.md b/doc/user/application_security/sast/evaluation_guide.md index 8d678ac35e6..5c8aad6752b 100644 --- a/doc/user/application_security/sast/evaluation_guide.md +++ b/doc/user/application_security/sast/evaluation_guide.md @@ -42,7 +42,7 @@ If you're comparing GitLab SAST to another product, you may find that some of it - [Secret detection](../secret_detection/_index.md) finds leaked secrets in your code. - [Security policies](../policies/_index.md) allow you to force scans to run or require that vulnerabilities are fixed. - [Vulnerability management and reporting](../vulnerability_report/_index.md) manages the vulnerabilities that exist in the codebase and integrates with issue trackers. -- GitLab Duo [vulnerability explanation](../vulnerabilities/_index.md#explaining-a-vulnerability) and [vulnerability resolution](../vulnerabilities/_index.md#resolve-a-vulnerability) help you remediate vulnerabilities quickly by using AI. +- GitLab Duo [vulnerability explanation](../vulnerabilities/_index.md#vulnerability-explanation) and [vulnerability resolution](../vulnerabilities/_index.md#vulnerability-resolution) help you remediate vulnerabilities quickly by using AI. ## Choose a test codebase @@ -98,5 +98,5 @@ After you choose a codebase to test with, you're ready to conduct the test. You - If you're using GitLab Advanced SAST, you can use the [Scanner filter](../vulnerability_report/_index.md#scanner-filter) to show results only from that scanner. 1. Review vulnerability results. - Check the [code flow view](../vulnerabilities/_index.md#vulnerability-code-flow) for GitLab Advanced SAST vulnerabilities that involve tainted user input, like SQL injection or path traversal. - - If you have GitLab Duo Enterprise, [explain](../vulnerabilities/_index.md#explaining-a-vulnerability) or [resolve](../vulnerabilities/_index.md#resolve-a-vulnerability) a vulnerability. + - If you have GitLab Duo Enterprise, [explain](../vulnerabilities/_index.md#vulnerability-explanation) or [resolve](../vulnerabilities/_index.md#vulnerability-resolution) a vulnerability. 1. To see how scanning works as new code is developed, create a new merge request that changes application code and adds a new vulnerability or weakness. diff --git a/doc/user/application_security/vulnerabilities/_index.md b/doc/user/application_security/vulnerabilities/_index.md index 16d89190648..3316506c83c 100644 --- a/doc/user/application_security/vulnerabilities/_index.md +++ b/doc/user/application_security/vulnerabilities/_index.md @@ -38,7 +38,7 @@ For further details on this additional data, see [vulnerability risk assessment If the scanner determined the vulnerability to be a false positive, an alert message is included at the top of the vulnerability's page. -## Explaining a vulnerability +## Vulnerability Explanation {{< details >}} @@ -59,7 +59,7 @@ the top of the vulnerability's page. {{< /history >}} -GitLab can help you with a vulnerability by using a large language model to: +GitLab Duo Vulnerability Explanation can help you with a vulnerability by using a large language model to: - Summarize the vulnerability. - Help developers and security analysts to understand the vulnerability, how it could be exploited, and how to fix it. @@ -67,11 +67,6 @@ GitLab can help you with a vulnerability by using a large language model to: [Watch an overview](https://www.youtube.com/watch?v=MMVFvGrmMzw&list=PLFGfElNsQthZGazU1ZdfDpegu0HflunXW) -### Vulnerability Explanation - -Explain a vulnerability with GitLab Duo Vulnerability Explanation. Use the explanation to better -understand a vulnerability and its possible mitigation. - Prerequisites: - You must have the GitLab Ultimate subscription tier. diff --git a/doc/user/gitlab_duo/choose_path.md b/doc/user/gitlab_duo/choose_path.md index 1901281458d..96785fffdf8 100644 --- a/doc/user/gitlab_duo/choose_path.md +++ b/doc/user/gitlab_duo/choose_path.md @@ -64,7 +64,7 @@ Follow this path to learn how to: - Automatically generate fix suggestions - Create merge requests to address security issues -[Start here: Vulnerability explanation and resolution →](../application_security/vulnerabilities/_index.md#explaining-a-vulnerability) +[Start here: Vulnerability explanation and resolution →](../application_security/vulnerabilities/_index.md#vulnerability-explanation) {{< /tab >}} diff --git a/doc/user/gitlab_duo/feature_summary.md b/doc/user/gitlab_duo/feature_summary.md index 3388e94b8a6..29a29995462 100644 --- a/doc/user/gitlab_duo/feature_summary.md +++ b/doc/user/gitlab_duo/feature_summary.md @@ -25,7 +25,7 @@ are available on GitLab.com and GitLab Self-Managed only. | [Code Review](../project/merge_requests/duo_in_merge_requests.md#have-gitlab-duo-review-your-code) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | | [Discussion Summary](../discussions/_index.md#summarize-issue-discussions-with-duo-chat) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | | [Root Cause Analysis](../gitlab_duo_chat/examples.md#troubleshoot-failed-cicd-jobs-with-root-cause-analysis) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | -| [Vulnerability Explanation](../application_security/vulnerabilities/_index.md#explaining-a-vulnerability) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | +| [Vulnerability Explanation](../application_security/vulnerabilities/_index.md#vulnerability-explanation) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | | [Vulnerability Resolution](../application_security/vulnerabilities/_index.md#vulnerability-resolution) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | | [GitLab Duo for the CLI](../../editor_extensions/gitlab_cli/_index.md#gitlab-duo-for-the-cli) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="dash-circle" >}} No | | [Merge Commit Message Generation](../project/merge_requests/duo_in_merge_requests.md#generate-a-merge-commit-message) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="dash-circle" >}} No | @@ -45,6 +45,12 @@ and the status of those features, see the ## Beta and experimental features +{{< history >}} + +- GitLab Duo Agentic Chat added in GitLab 18.2. + +{{< /history >}} + The following features are not generally available. They require a Premium or Ultimate subscription and one of the available add-ons. @@ -52,7 +58,8 @@ They require a Premium or Ultimate subscription and one of the available add-ons | Feature | GitLab Duo Core | GitLab Duo Pro | GitLab Duo Enterprise | GitLab Duo with Amazon Q | GitLab.com | GitLab Self-Managed | GitLab Dedicated | GitLab Duo Self-Hosted | |---------|----------|---------|----------------|--------------------------|-----------|-------------|-----------|------------------------| | [Code Review Summary](../project/merge_requests/duo_in_merge_requests.md#summarize-a-code-review) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="dash-circle" >}} No | Experiment | Experiment | {{< icon name="dash-circle" >}} No | Experiment | -| [Issue Description Generation](../project/issues/managing_issues.md#populate-an-issue-with-issue-description-generation) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="dash-circle" >}} No | Experiment | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | N/A | +| [Issue Description Generation](../project/issues/managing_issues.md#populate-an-issue-with-issue-description-generation) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="dash-circle" >}} No | Experiment | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | Not applicable | | [Merge Request Summary](../project/merge_requests/duo_in_merge_requests.md#generate-a-description-by-summarizing-code-changes) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="dash-circle" >}} No | Beta | Beta | {{< icon name="dash-circle" >}} No | Beta | +| [GitLab Duo Agentic Chat](../gitlab_duo_chat/agentic_chat.md) | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="dash-circle" >}} No | Experiment | Experiment | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | [GitLab Duo Agent Platform](../duo_agent_platform/_index.md) is in private beta, does not require an add-on, and is not supported for GitLab Duo Self-Hosted. diff --git a/doc/user/gitlab_duo/use_cases.md b/doc/user/gitlab_duo/use_cases.md index 700ca4a1cd9..286c3a52df8 100644 --- a/doc/user/gitlab_duo/use_cases.md +++ b/doc/user/gitlab_duo/use_cases.md @@ -555,7 +555,7 @@ introduces a security vulnerability with a [buffer overflow](https://en.wikipedi printf("Contents of region: %s\n", region); ``` -[SAST security scanners](../application_security/sast/analyzers.md) can detect and report the problem. Use [Vulnerability Explanation](../application_security/vulnerabilities/_index.md#explaining-a-vulnerability) to understand the problem. +[SAST security scanners](../application_security/sast/analyzers.md) can detect and report the problem. Use [Vulnerability Explanation](../application_security/vulnerabilities/_index.md#vulnerability-explanation) to understand the problem. Vulnerability Resolution helps to generate an MR. If the suggested changes do not fit requirements, or might lead to problems, you can use Code Suggestions and Chat to refine. For example: diff --git a/doc/user/gitlab_duo_chat/agentic_chat.md b/doc/user/gitlab_duo_chat/agentic_chat.md index 711704c994f..55150ac3552 100644 --- a/doc/user/gitlab_duo_chat/agentic_chat.md +++ b/doc/user/gitlab_duo_chat/agentic_chat.md @@ -10,7 +10,7 @@ title: GitLab Duo Agentic Chat - Tier: Premium, Ultimate - Add-on: GitLab Duo Core, Pro, or Enterprise - Offering: GitLab.com, GitLab Self-Managed -- Status: Beta +- Status: Experiment - LLMs: Anthropic [Claude Sonnet 4](https://console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-sonnet-4) {{< /details >}} @@ -21,7 +21,6 @@ title: GitLab Duo Agentic Chat - GitLab Duo Agentic Chat on VS Code [enabled on GitLab Self-Managed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/196688) in GitLab 18.2. - GitLab Duo Agentic Chat in the GitLab UI [introduced on GitLab.com and GitLab Self-Managed](https://gitlab.com/gitlab-org/gitlab/-/issues/546140) in GitLab 18.2 [with flags](../../administration/feature_flags/_index.md) named `duo_workflow_workhorse` and `duo_workflow_web_chat_mutation_tools`. Both flags are enabled by default. - Feature flag `duo_agentic_chat` enabled by default in GitLab 18.2. -- GitLab Agentic Chat changed to beta in GitLab 18.2. {{< /history >}} diff --git a/doc/user/gitlab_duo_chat/examples.md b/doc/user/gitlab_duo_chat/examples.md index b49ebc24557..b2dae547bc6 100644 --- a/doc/user/gitlab_duo_chat/examples.md +++ b/doc/user/gitlab_duo_chat/examples.md @@ -691,7 +691,7 @@ To troubleshoot a failed CI/CD job from the job log: You can ask GitLab Duo Chat to explain a vulnerability when you are viewing a SAST vulnerability report. -For more information, see [Explaining a vulnerability](../application_security/vulnerabilities/_index.md#explaining-a-vulnerability). +For more information, see [Explaining a vulnerability](../application_security/vulnerabilities/_index.md#vulnerability-explanation). ## Create a new conversation @@ -794,7 +794,7 @@ These commands are dynamic and are available only in the GitLab UI when using Du | ---------------------- | ------------------------------------------------------------------------------------------------------------------ | ---- | | /summarize_comments | Generate a summary of all comments on the current issue | Issues | | /troubleshoot | [Troubleshoot failed CI/CD jobs with Root Cause Analysis](#troubleshoot-failed-cicd-jobs-with-root-cause-analysis) | Jobs | -| /vulnerability_explain | [Explain current vulnerability](../application_security/vulnerabilities/_index.md#explaining-a-vulnerability) | Vulnerabilities | +| /vulnerability_explain | [Explain current vulnerability](../application_security/vulnerabilities/_index.md#vulnerability-explanation) | Vulnerabilities | | /new | [Create a new Chat conversation](_index.md#have-multiple-conversations-with-chat). GitLab 17.10 and later. | All | ### IDE diff --git a/doc/user/packages/container_registry/immutable_container_tags.md b/doc/user/packages/container_registry/immutable_container_tags.md index cf639dff986..701e272bf57 100644 --- a/doc/user/packages/container_registry/immutable_container_tags.md +++ b/doc/user/packages/container_registry/immutable_container_tags.md @@ -16,7 +16,8 @@ title: Immutable container tags {{< history >}} - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/523276) as an [experiment](../../../policy/development_stages_support.md) in GitLab 18.1 [with a flag](../../../administration/feature_flags/_index.md) named `container_registry_immutable_tags`. Disabled by default. -- [Enabled on GitLab.com](https://gitlab.com/gitlab-org/gitlab/-/issues/523276) in GitLab 18.1. +- [Enabled on GitLab.com](https://gitlab.com/gitlab-org/gitlab/-/issues/523276) in GitLab 18.2. +- [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/523276) in GitLab 18.2. Feature flag `container_registry_immutable_tags` removed. {{< /history >}} diff --git a/doc/user/project/merge_requests/reviews/_index.md b/doc/user/project/merge_requests/reviews/_index.md index da48009f960..319e543ed5e 100644 --- a/doc/user/project/merge_requests/reviews/_index.md +++ b/doc/user/project/merge_requests/reviews/_index.md @@ -246,7 +246,7 @@ You can also use the `/submit_review` [quick action](../../quick_actions.md) in A reviewer [requesting changes](#submit-a-review) blocks a merge request from merging. When this happens, the merge request reports area shows the message -**The change requests must be completed or resolved**. To unblock the merge request, +**Change requests must be approved by the requesting user**. To unblock the merge request, the reviewer who requested changes should [re-review and approve](#re-request-a-review) the merge request. ### Remove a change request @@ -269,7 +269,7 @@ To remove your change request without submitting a new review: 1. Select **Code > Merge requests** and find your merge request. 1. Select the title of the merge request to view it. 1. On the merge request **Overview**, scroll to the merge request reports area. -1. Next to **The change requests must be completed or resolved**, select **Remove**: +1. Next to **Change requests must be approved by the requesting user**, select **Remove**: ![A merge request that is blocked because a user requested changes](img/remove_v17_8.png) @@ -282,14 +282,14 @@ another user with permission to merge the merge request can override this check: 1. Select **Code > Merge requests** and find your merge request. 1. Select the title of the merge request to view it. 1. On the merge request **Overview**, scroll to the merge request reports area. -1. Next to **The change requests must be completed or resolved**, select **Bypass**: +1. Next to **Change requests must be approved by the requesting user**, select **Bypass**: ![A merge request that is blocked because a user requested changes](img/bypass_v17_2.png) 1. The merge reports area shows `Merge with caution: Override added`. To see which check a user bypassed, select **Expand merge checks** ({{< icon name="chevron-lg-down" >}}) and find the check that contains a warning ({{< icon name="status_warning" >}}) icon. In this example, the - author bypassed **The change requests must be completed or resolved**: + author bypassed **Change requests must be approved by the requesting user**: ![This merge request contains a bypassed check, and should be merged with caution.](img/status_warning_v17_4.png) diff --git a/doc/user/project/pages/pages_access_control.md b/doc/user/project/pages/pages_access_control.md index e1efcfbb60a..32f9630cd27 100644 --- a/doc/user/project/pages/pages_access_control.md +++ b/doc/user/project/pages/pages_access_control.md @@ -12,6 +12,12 @@ title: GitLab Pages access control {{< /details >}} +{{< history >}} + +- Group SAML SSO support for Pages [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/326288) in GitLab 18.2 [with a flag](../../../administration/feature_flags/_index.md) named `ff_oauth_redirect_to_sso_login`. Disabled by default. + +{{< /history >}} + You can enable Pages access control on your project if your administrator has [enabled the access control feature](../../../administration/pages/_index.md#access-control) on your GitLab instance. When enabled, only authenticated @@ -49,6 +55,9 @@ The next time someone tries to access your website and the access control is enabled, they're presented with a page to sign in to GitLab and verify they can access the website. +When [SAML SSO](../../group/saml_sso/_index.md) is configured for the associated group +and the access control is enabled, users must authenticate using SSO before accessing the website. + ## Restrict Pages access to project members for the group and its subgroups {{< history >}} diff --git a/lib/gitlab/ci/config/entry/files.rb b/lib/gitlab/ci/config/entry/files.rb index d0d6a36d754..8e4c363c73b 100644 --- a/lib/gitlab/ci/config/entry/files.rb +++ b/lib/gitlab/ci/config/entry/files.rb @@ -19,6 +19,16 @@ module Gitlab too_long: 'has too many items (maximum is %{count})' } end + + def value + config.map do |file_path| + if file_path.start_with?('/') + file_path.sub(%r{^/+}, '') + else + file_path + end + end + end end end end diff --git a/lib/gitlab/issuable/clone/copy_resource_events_service.rb b/lib/gitlab/issuable/clone/copy_resource_events_service.rb index e44e938b3c0..29d937e9970 100644 --- a/lib/gitlab/issuable/clone/copy_resource_events_service.rb +++ b/lib/gitlab/issuable/clone/copy_resource_events_service.rb @@ -20,6 +20,15 @@ module Gitlab private + def namespace_id_for_new_entity(new_entity) + case new_entity + when Issue + new_entity.namespace_id + else + raise StandardError, "Copying resource events for #{new_entity.class.name} is not supported yet" + end + end + def copy_resource_label_events copy_events(ResourceLabelEvent.table_name, original_entity.resource_label_events) do |event| event.attributes @@ -39,11 +48,16 @@ module Gitlab def copy_resource_state_events return unless state_events_supported? + new_namespace_id = namespace_id_for_new_entity(new_entity) + copy_events(ResourceStateEvent.table_name, original_entity.resource_state_events) do |event| event.attributes .except(*blocked_resource_event_attributes) - .merge(entity_key => new_entity.id, - 'state' => ResourceStateEvent.states[event.state]) + .merge( + entity_key => new_entity.id, + 'state' => ResourceStateEvent.states[event.state], + 'namespace_id' => new_namespace_id + ) end end diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 8573eac0211..802e04dfdd3 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -12581,6 +12581,9 @@ msgstr "" msgid "Change path" msgstr "" +msgid "Change requests must be approved by the requesting user." +msgstr "" + msgid "Change reviewers" msgstr "" @@ -41492,6 +41495,9 @@ msgstr "" msgid "No more than %{max_frameworks} compliance frameworks can be updated at the same time." msgstr "" +msgid "No more than %{max_work_items} work items can be loaded at the same time" +msgstr "" + msgid "No more than %{max_work_items} work items can be modified at the same time." msgstr "" @@ -58508,6 +58514,12 @@ msgstr "" msgid "ServiceAccounts|The service account was updated." msgstr "" +msgid "ServiceAccount|Group ID provided does not match the service account's group ID." +msgstr "" + +msgid "ServiceAccount|Group with the provided ID not found." +msgstr "" + msgid "ServiceAccount|No more seats are available to create Service Account User" msgstr "" @@ -58520,6 +58532,12 @@ msgstr "" msgid "ServiceAccount|User does not have permission to delete a service account." msgstr "" +msgid "ServiceAccount|User does not have permission to update a service account." +msgstr "" + +msgid "ServiceAccount|User is not a service account" +msgstr "" + msgid "ServiceAccount|You are not authorized to update service accounts in this namespace." msgstr "" @@ -61886,6 +61904,9 @@ msgstr "" msgid "Target branches" msgstr "" +msgid "Target group prevents forks that point outside this group" +msgstr "" + msgid "Target project cannot be equal to source project" msgstr "" @@ -62547,9 +62568,6 @@ msgstr "" msgid "The branch to merge into." msgstr "" -msgid "The change requests must be completed or resolved." -msgstr "" - msgid "The comment you are editing has been changed by another user. Would you like to keep your changes and overwrite the new description or discard your changes?" msgstr "" @@ -67317,9 +67335,6 @@ msgstr "" msgid "User is blocked" msgstr "" -msgid "User is not a service account" -msgstr "" - msgid "User is not allowed to resolve thread" msgstr "" diff --git a/package.json b/package.json index 6fee3fd2b78..4d3d58a36b5 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "@gitlab/fonts": "^1.3.0", "@gitlab/query-language-rust": "0.12.0", "@gitlab/svgs": "3.138.0", - "@gitlab/ui": "114.8.1", + "@gitlab/ui": "115.0.1", "@gitlab/vue-router-vue3": "npm:vue-router@4.5.1", "@gitlab/vuex-vue3": "npm:vuex@4.1.0", "@gitlab/web-ide": "^0.0.1-dev-20250704091020", diff --git a/spec/controllers/concerns/record_user_last_activity_spec.rb b/spec/controllers/concerns/record_user_last_activity_spec.rb index dc7da8d2070..d925640c26d 100644 --- a/spec/controllers/concerns/record_user_last_activity_spec.rb +++ b/spec/controllers/concerns/record_user_last_activity_spec.rb @@ -107,13 +107,5 @@ RSpec.describe RecordUserLastActivity, feature_category: :seat_cost_management d it_behaves_like 'does not update publish an activity event' end end - - context 'when the request is not a GET request' do - before do - allow(controller.request).to receive(:get?).and_return(false) - end - - it_behaves_like 'does not update publish an activity event' - end end end diff --git a/spec/controllers/repositories/git_http_controller_spec.rb b/spec/controllers/repositories/git_http_controller_spec.rb index d10855c97bf..648efaef68f 100644 --- a/spec/controllers/repositories/git_http_controller_spec.rb +++ b/spec/controllers/repositories/git_http_controller_spec.rb @@ -41,16 +41,16 @@ RSpec.describe Repositories::GitHttpController, feature_category: :source_code_m end it 'publishes activity events accordingly' do - if container.is_a?(Project) + if container.is_a?(PersonalSnippet) + expect { get :info_refs, params: params } + .not_to publish_event(Users::ActivityEvent) + else expect { get :info_refs, params: params } .to publish_event(Users::ActivityEvent) .with({ user_id: user.id, namespace_id: project.root_ancestor.id }) - else - expect { get :info_refs, params: params } - .not_to publish_event(Users::ActivityEvent) end end end diff --git a/spec/frontend/custom_emoji/components/__snapshots__/list_spec.js.snap b/spec/frontend/custom_emoji/components/__snapshots__/list_spec.js.snap index 20d54b42a32..bb8d23656af 100644 --- a/spec/frontend/custom_emoji/components/__snapshots__/list_spec.js.snap +++ b/spec/frontend/custom_emoji/components/__snapshots__/list_spec.js.snap @@ -5,44 +5,47 @@ exports[`Custom emoji settings list component renders table of custom emoji 1`]
-
{ }, ); + describe('code navigation', () => { + const setup = async (viewer, viewerType) => { + jest.spyOn(eventHub, '$emit').mockImplementation(); + mockAxios + .onGet(`/some_file.js?format=json&viewer=${viewerType}`) + .replyOnce(HTTP_STATUS_OK, 'test'); + await createComponent({ blob: viewer }); + }; + + it('emits showBlobInteractionZones for text files', async () => { + await setup(simpleViewerMock, 'simple'); + + expect(eventHub.$emit).toHaveBeenCalledWith('showBlobInteractionZones', 'some_file.js'); + }); + + it('does not emit showBlobInteractionZones non-text files', async () => { + await setup(richViewerMock, 'rich'); + + expect(eventHub.$emit).not.toHaveBeenCalled(); + }); + }); + it('loads the LineHighlighter', async () => { mockAxios.onGet(legacyViewerUrl).replyOnce(HTTP_STATUS_OK, 'test'); await createComponent({ blob: { ...simpleViewerMock, fileType } }); diff --git a/spec/frontend/repository/file_tree_browser/file_tree_browser_spec.js b/spec/frontend/repository/file_tree_browser/file_tree_browser_spec.js index 62c1f08b1a2..1361eb03574 100644 --- a/spec/frontend/repository/file_tree_browser/file_tree_browser_spec.js +++ b/spec/frontend/repository/file_tree_browser/file_tree_browser_spec.js @@ -1,13 +1,25 @@ import { shallowMount } from '@vue/test-utils'; -import FileTreeBrowser, { TREE_WIDTH } from '~/repository/file_tree_browser/file_tree_browser.vue'; +import FileTreeBrowser, { + TREE_WIDTH, + FILE_TREE_BROWSER_STORAGE_KEY, +} from '~/repository/file_tree_browser/file_tree_browser.vue'; import FileBrowserHeight from '~/diffs/components/file_browser_height.vue'; import TreeList from '~/repository/file_tree_browser/components/tree_list.vue'; +import PanelResizer from '~/vue_shared/components/panel_resizer.vue'; +import { useLocalStorageSpy } from 'helpers/local_storage_helper'; describe('FileTreeBrowser', () => { let wrapper; + useLocalStorageSpy(); + const findFileBrowserHeight = () => wrapper.findComponent(FileBrowserHeight); const findTreeList = () => wrapper.findComponent(TreeList); + const findPanelResizer = () => wrapper.findComponent(PanelResizer); + + afterEach(() => { + localStorage.clear(); + }); const createComponent = (routeName = 'blobPathDecoded') => { wrapper = shallowMount(FileTreeBrowser, { @@ -29,12 +41,53 @@ describe('FileTreeBrowser', () => { it('renders the file browser height component', () => { expect(findFileBrowserHeight().exists()).toBe(true); - expect(findFileBrowserHeight().attributes('style')).toBe(`width: ${TREE_WIDTH}px;`); + expect(findFileBrowserHeight().attributes('style')).toBe(`--tree-width: ${TREE_WIDTH}px;`); }); it('renders the tree list component', () => { expect(findTreeList().exists()).toBe(true); }); + + describe('PanelResizer component', () => { + it('renders the panel resizer component', () => { + expect(findPanelResizer().exists()).toBe(true); + }); + + it('updates tree width when panel resizer emits update:size', async () => { + const newWidth = 400; + + await findPanelResizer().vm.$emit('update:size', newWidth); + + expect(findFileBrowserHeight().attributes('style')).toBe(`--tree-width: ${newWidth}px;`); + }); + + it('saves tree width preference when panel resizer emits resize-end', async () => { + const newWidth = 400; + + await findPanelResizer().vm.$emit('resize-end', newWidth); + + expect(localStorage.setItem).toHaveBeenCalledWith(FILE_TREE_BROWSER_STORAGE_KEY, newWidth); + expect(findFileBrowserHeight().attributes('style')).toBe(`--tree-width: ${newWidth}px;`); + }); + }); + + describe('localStorage handling', () => { + it('restores tree width from localStorage on component creation', () => { + const storedWidth = 350; + localStorage.setItem(FILE_TREE_BROWSER_STORAGE_KEY, storedWidth.toString()); + + createComponent(); + + expect(localStorage.getItem).toHaveBeenCalledWith(FILE_TREE_BROWSER_STORAGE_KEY); + expect(findFileBrowserHeight().attributes('style')).toBe(`--tree-width: ${storedWidth}px;`); + }); + + it('uses default width when localStorage is empty', () => { + createComponent(); + + expect(findFileBrowserHeight().attributes('style')).toBe(`--tree-width: ${TREE_WIDTH}px;`); + }); + }); }); describe('when on project overview page', () => { @@ -47,5 +100,9 @@ describe('FileTreeBrowser', () => { it('does not render the tree list component', () => { expect(findTreeList().exists()).toBe(false); }); + + it('does not render the panel resizer component', () => { + expect(findPanelResizer().exists()).toBe(false); + }); }); }); diff --git a/spec/frontend/vue_merge_request_widget/components/checks/message_spec.js b/spec/frontend/vue_merge_request_widget/components/checks/message_spec.js index f35c5fed5fb..35ca66f31cd 100644 --- a/spec/frontend/vue_merge_request_widget/components/checks/message_spec.js +++ b/spec/frontend/vue_merge_request_widget/components/checks/message_spec.js @@ -24,7 +24,7 @@ describe('Merge request merge checks message component', () => { ${'merge_request_blocked'} | ${'Merge request dependencies must be merged.'} ${'status_checks_must_pass'} | ${'Status checks must pass.'} ${'jira_association_missing'} | ${'Either the title or description must reference a Jira issue.'} - ${'requested_changes'} | ${'The change requests must be completed or resolved.'} + ${'requested_changes'} | ${'Change requests must be approved by the requesting user.'} ${'approvals_syncing'} | ${'The merge request approvals are currently syncing.'} ${'locked_paths'} | ${'All paths must be unlocked'} ${'locked_lfs_files'} | ${'All LFS files must be unlocked.'} diff --git a/spec/graphql/resolvers/work_items/widgets_resolver_spec.rb b/spec/graphql/resolvers/work_items/widgets_resolver_spec.rb new file mode 100644 index 00000000000..3fe11ed460b --- /dev/null +++ b/spec/graphql/resolvers/work_items/widgets_resolver_spec.rb @@ -0,0 +1,154 @@ +# frozen_string_literal: true + +require "spec_helper" + +RSpec.describe Resolvers::WorkItems::WidgetsResolver, feature_category: :team_planning do + include GraphqlHelpers + using RSpec::Parameterized::TableSyntax + + let_it_be(:current_user) { create(:user) } + let_it_be(:group) { create(:group) } + let_it_be(:epic_type) { create(:work_item_type, :epic, namespace: group) } + let_it_be(:issue_type) { create(:work_item_type, :issue, namespace: group) } + let_it_be(:task_type) { create(:work_item_type, :task, namespace: group) } + + def resolve_items(args = {}, context = { current_user: current_user }) + resolve(described_class, args: args, ctx: context, arg_style: :internal, obj: group) + end + + it 'when passing more work items than limit' do + expect_graphql_error_to_be_created( + Gitlab::Graphql::Errors::ArgumentError, + 'No more than 100 work items can be loaded at the same time' + ) do + resolve_items(ids: (0..105).to_a.map { |id| "gid://gitlab/WorkItem/#{id}" }) + end + end + + it 'when ids do not exist' do + expect(resolve_items(ids: [GlobalID.parse("gid://gitlab/WorkItem/-1")])) + .to be_empty + end + + where(:work_item_types, :widgets) do + [ + [ + lazy { [epic_type] }, + %w[ + ASSIGNEES + AWARD_EMOJI + CURRENT_USER_TODOS + DESCRIPTION + HIERARCHY + LABELS + LINKED_ITEMS + MILESTONE + NOTES + NOTIFICATIONS + PARTICIPANTS + START_AND_DUE_DATE + TIME_TRACKING + ] + ], + [ + lazy { [issue_type] }, + %w[ + ASSIGNEES + AWARD_EMOJI + CRM_CONTACTS + CURRENT_USER_TODOS + DESCRIPTION + DESIGNS + DEVELOPMENT + EMAIL_PARTICIPANTS + ERROR_TRACKING + HIERARCHY + LABELS + LINKED_ITEMS + LINKED_RESOURCES + MILESTONE + NOTES + NOTIFICATIONS + PARTICIPANTS + START_AND_DUE_DATE + TIME_TRACKING + ] + ], + [ + lazy { [task_type] }, + %w[ + ASSIGNEES + AWARD_EMOJI + CRM_CONTACTS + CURRENT_USER_TODOS + DESCRIPTION + DEVELOPMENT + HIERARCHY + LABELS + LINKED_ITEMS + LINKED_RESOURCES + MILESTONE + NOTES + NOTIFICATIONS + PARTICIPANTS + START_AND_DUE_DATE + TIME_TRACKING + ] + ], + [ + lazy { [epic_type, issue_type] }, + %w[ + ASSIGNEES + AWARD_EMOJI + CRM_CONTACTS + CURRENT_USER_TODOS + DESCRIPTION + DESIGNS + DEVELOPMENT + EMAIL_PARTICIPANTS + ERROR_TRACKING + HIERARCHY + LABELS + LINKED_ITEMS + LINKED_RESOURCES + MILESTONE + NOTES + NOTIFICATIONS + PARTICIPANTS + START_AND_DUE_DATE + TIME_TRACKING + ] + ], + [ + lazy { [epic_type, issue_type, task_type] }, + %w[ + ASSIGNEES + AWARD_EMOJI + CRM_CONTACTS + CURRENT_USER_TODOS + DESCRIPTION + DESIGNS + DEVELOPMENT + EMAIL_PARTICIPANTS + ERROR_TRACKING + HIERARCHY + LABELS + LINKED_ITEMS + LINKED_RESOURCES + MILESTONE + NOTES + NOTIFICATIONS + PARTICIPANTS + START_AND_DUE_DATE + TIME_TRACKING + ] + ] + ] + end + + with_them do + it "list unique widgets for the given work items" do + expect(resolve_items(ids: work_item_types.map(&:to_gid))).to match_array(widgets) + end + end +end diff --git a/spec/graphql/types/namespace_type_spec.rb b/spec/graphql/types/namespace_type_spec.rb index ba536a1ccf4..e1f7937b5ae 100644 --- a/spec/graphql/types/namespace_type_spec.rb +++ b/spec/graphql/types/namespace_type_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe GitlabSchema.types['Namespace'] do +RSpec.describe GitlabSchema.types['Namespace'], feature_category: :shared do specify { expect(described_class.graphql_name).to eq('Namespace') } specify { expect(described_class.interfaces).to include(Types::TodoableInterface) } @@ -12,7 +12,8 @@ RSpec.describe GitlabSchema.types['Namespace'] do id name path full_name full_path achievements_path description description_html visibility lfs_enabled request_access_enabled projects root_storage_statistics shared_runners_setting timelog_categories achievements work_item pages_deployments import_source_users work_item_types - sidebar work_item_description_templates ci_cd_settings avatar_url link_paths licensed_features + work_items_widgets sidebar work_item_description_templates ci_cd_settings avatar_url link_paths + licensed_features ] expect(described_class).to include_graphql_fields(*expected_fields) diff --git a/spec/lib/gitlab/ci/config/entry/files_spec.rb b/spec/lib/gitlab/ci/config/entry/files_spec.rb index 6a101d80c7d..031ec8c3e48 100644 --- a/spec/lib/gitlab/ci/config/entry/files_spec.rb +++ b/spec/lib/gitlab/ci/config/entry/files_spec.rb @@ -22,6 +22,64 @@ RSpec.describe Gitlab::Ci::Config::Entry::Files do end end + context 'when entry config contains absolute paths' do + let(:config) { ['/absolute/path', 'relative/path'] } + + describe '#value' do + it 'strips leading slashes from absolute paths' do + expect(entry.value).to match_array ['absolute/path', 'relative/path'] + end + end + + describe '#valid?' do + it 'is valid' do + expect(entry).to be_valid + end + end + end + + context 'when entry config contains only absolute paths' do + let(:config) { ['/tmp/test.txt', '/var/log/app.log'] } + + describe '#value' do + it 'strips leading slashes from all paths' do + expect(entry.value).to match_array ['tmp/test.txt', 'var/log/app.log'] + end + end + end + + context 'when entry config contains paths with multiple leading slashes' do + let(:config) { ['//double/slash', '///triple/slash'] } + + describe '#value' do + it 'strips all leading slashes' do + expect(entry.value).to match_array ['double/slash', 'triple/slash'] + end + end + + describe '#valid?' do + it 'is valid' do + expect(entry).to be_valid + end + end + end + + context 'when entry config contains empty strings' do + let(:config) { ['', 'valid/path'] } + + describe '#value' do + it 'preserves empty strings' do + expect(entry.value).to match_array ['', 'valid/path'] + end + end + + describe '#valid?' do + it 'is valid' do + expect(entry).to be_valid + end + end + end + describe '#errors' do context 'when entry value is not an array' do let(:config) { 'string' } diff --git a/spec/lib/gitlab/issuable/clone/copy_resource_events_service_spec.rb b/spec/lib/gitlab/issuable/clone/copy_resource_events_service_spec.rb index baeb46b1d70..c4c6bbee693 100644 --- a/spec/lib/gitlab/issuable/clone/copy_resource_events_service_spec.rb +++ b/spec/lib/gitlab/issuable/clone/copy_resource_events_service_spec.rb @@ -9,8 +9,9 @@ RSpec.describe Gitlab::Issuable::Clone::CopyResourceEventsService, feature_categ let_it_be(:project2) { create(:project, :public, group: group) } let_it_be(:new_issue) { create(:issue, project: project2) } let_it_be_with_reload(:original_issue) { create(:issue, project: project1) } + let(:used_new_issue) { new_issue } - subject { described_class.new(user, original_issue, new_issue) } + subject { described_class.new(user, original_issue, used_new_issue) } it 'copies the resource label events' do resource_label_events = create_list(:resource_label_event, 2, issue: original_issue) @@ -102,14 +103,51 @@ RSpec.describe Gitlab::Issuable::Clone::CopyResourceEventsService, feature_categ state_events = new_issue.reload.resource_state_events expect(state_events.size).to eq(3) - expect_state_event(state_events.first, issue: new_issue, state: 'opened') - expect_state_event(state_events.second, issue: new_issue, state: 'closed') - expect_state_event(state_events.third, issue: new_issue, state: 'reopened') + expect_state_event(state_events.first, issue: new_issue, state: 'opened', namespace_id: new_issue.namespace_id) + expect_state_event(state_events.second, issue: new_issue, state: 'closed', namespace_id: new_issue.namespace_id) + expect_state_event(state_events.third, issue: new_issue, state: 'reopened', namespace_id: new_issue.namespace_id) + end + + context 'when new entity is a work item', :aggregate_failures do + let(:used_new_issue) { new_issue.becomes(::WorkItem) } # rubocop:disable Cop/AvoidBecomes -- Less expensive than creating a new entity + + it 'copies existing state events as expected' do + subject.execute + + state_events = used_new_issue.reload.resource_state_events + expect(state_events.size).to eq(3) + expect(state_events.pluck(:namespace_id)).to all(eq(project2.project_namespace_id)) + end + + context 'when it is a group level work item' do + let(:used_new_issue) { create(:work_item, :group_level, namespace: group) } + + it 'copies existing state events as expected' do + subject.execute + + state_events = used_new_issue.reload.resource_state_events + expect(state_events.size).to eq(3) + expect(state_events.pluck(:namespace_id)).to all(eq(group.id)) + end + end + end + + context 'when the new entity is not of a supported type' do + let(:used_new_issue) { create(:merge_request, source_project: project2) } + + # No reason not to support merge requests other than it's not implemente yet. Should be fine to implement + # if necessary, in the future + it 'raises an unsupported type error' do + expect do + subject.execute + end.to raise_error(StandardError, 'Copying resource events for MergeRequest is not supported yet') + end end def expect_state_event(event, expected_attrs) expect(event.issue_id).to eq(expected_attrs[:issue]&.id) expect(event.state).to eq(expected_attrs[:state]) + expect(event.namespace_id).to eq(expected_attrs[:namespace_id]) end end end diff --git a/spec/services/discussions/resolve_service_spec.rb b/spec/services/discussions/resolve_service_spec.rb index 15fcaedd2bc..5a04ba4e3ac 100644 --- a/spec/services/discussions/resolve_service_spec.rb +++ b/spec/services/discussions/resolve_service_spec.rb @@ -49,11 +49,19 @@ RSpec.describe Discussions::ResolveService, feature_category: :code_review_workf end context 'when not all discussions are resolved' do - let(:other_discussion) { create(:diff_note_on_merge_request, noteable: merge_request, project: project).to_discussion } + before do + create(:diff_note_on_merge_request, noteable: merge_request, project: project).to_discussion + end + + it 'does not publish the discussions resolved event when the project requires all discussions to be resolved' do + project.update!(only_allow_merge_if_all_discussions_are_resolved: true) - it 'does not publish the discussions resolved event' do expect { service.execute }.not_to publish_event(MergeRequests::DiscussionsResolvedEvent) end + + it 'publishes the discussions resolved event when the project does not require all discussions to be resolved' do + expect { service.execute }.to publish_event(MergeRequests::DiscussionsResolvedEvent) + end end it 'sends GraphQL triggers' do diff --git a/spec/services/web_hooks/log_execution_service_spec.rb b/spec/services/web_hooks/log_execution_service_spec.rb index 21ecac2f96a..ea4fa9de6e5 100644 --- a/spec/services/web_hooks/log_execution_service_spec.rb +++ b/spec/services/web_hooks/log_execution_service_spec.rb @@ -79,32 +79,15 @@ RSpec.describe WebHooks::LogExecutionService, feature_category: :webhooks do end context 'when a lease cannot be obtained' do - where(:response_category, :executable, :needs_updating) do - :ok | true | false - :ok | false | true - :failed | true | true - :failed | false | false - :error | true | true - :error | false | false + before do + stub_exclusive_lease_taken(lease_key) end - with_them do - subject(:service) { described_class.new(hook: project_hook, log_data: data, response_category: response_category) } + it 'creates the WebHookLog and skips hook state update' do + expect(project_hook).not_to receive(:backoff!) + expect(project_hook).not_to receive(:parent) - before do - # stub LOCK_RETRY to be 0 in order for tests to run quicker - stub_const("#{described_class.name}::LOCK_RETRY", 0) - stub_exclusive_lease_taken(lease_key, timeout: described_class::LOCK_TTL) - allow(project_hook).to receive(:executable?).and_return(executable) - end - - it 'raises an error if the hook needs to be updated' do - if needs_updating - expect { service.execute }.to raise_error(Gitlab::ExclusiveLeaseHelpers::FailedToObtainLockError) - else - expect { service.execute }.not_to raise_error - end - end + expect { service.execute }.to change { ::WebHookLog.count }.by(1) end end end @@ -143,6 +126,20 @@ RSpec.describe WebHooks::LogExecutionService, feature_category: :webhooks do end end + context 'when an unexpected error occurs while updating hook status' do + let(:standard_error) { StandardError.new('Unexpected error') } + + before do + allow(project_hook).to receive(:enable!).and_raise(standard_error) + end + + it 'creates the WebHookLog and tracks the exception without raising an error' do + expect(Gitlab::ErrorTracking).to receive(:track_exception).with(standard_error, hook_id: project_hook.id) + + expect { service.execute }.to change { ::WebHookLog.count }.by(1) + end + end + context 'with url_variables' do before do project_hook.update!( diff --git a/spec/support/matchers/event_store.rb b/spec/support/matchers/event_store.rb index a53c8685edf..0edd8d01bce 100644 --- a/spec/support/matchers/event_store.rb +++ b/spec/support/matchers/event_store.rb @@ -72,6 +72,7 @@ module RSpec private def match_data?(actual, expected) + return true if expected.nil? return true if actual.blank? && expected.blank? return false if actual.blank? || expected.blank? diff --git a/spec/support_specs/matchers/event_store_spec.rb b/spec/support_specs/matchers/event_store_spec.rb index 47d7ccfb309..a1015e3e58e 100644 --- a/spec/support_specs/matchers/event_store_spec.rb +++ b/spec/support_specs/matchers/event_store_spec.rb @@ -74,16 +74,6 @@ RSpec.describe 'event store matchers', feature_category: :shared do end it 'validates the event data' do - missing_data = -> do - expect { publishing_event(FakeEventType1, { 'id' => 1 }) } - .to publish_event(FakeEventType1) - end - - expect(&missing_data).to raise_error <<~MESSAGE - expected FakeEventType1 with no data to be published, but only the following events were published: - - FakeEventType1 with {"id"=>1} - MESSAGE - different_data = -> do expect { publishing_event(FakeEventType1, { 'id' => 1 }) } .to publish_event(FakeEventType1).with({ 'id' => 2 }) @@ -94,6 +84,32 @@ RSpec.describe 'event store matchers', feature_category: :shared do - FakeEventType1 with {"id"=>1} MESSAGE end + + it 'allows any data if .with() is not used to specify data' do + unspecified_data = -> do + expect { publishing_event(FakeEventType1, { 'id' => 1 }) } + .to publish_event(FakeEventType1) + end + + expect(&unspecified_data).not_to raise_error + end + + it 'supports not_to when the event is published' do + matcher = -> do + expect { publishing_event(FakeEventType1, { 'id' => 1 }) } + .not_to publish_event(FakeEventType1) + end + + expect(&matcher).to raise_error('expected FakeEventType1 not to be published') + end + + it 'supports not_to when the event is not published' do + matcher = -> do + expect { 'do nothing' }.not_to publish_event(FakeEventType1) + end + + expect(&matcher).not_to raise_error + end end describe 'not_publish_event' do diff --git a/workhorse/_support/lint_last_known_acceptable.txt b/workhorse/_support/lint_last_known_acceptable.txt index c164c854cb9..d563a519bea 100644 --- a/workhorse/_support/lint_last_known_acceptable.txt +++ b/workhorse/_support/lint_last_known_acceptable.txt @@ -70,9 +70,9 @@ internal/upload/destination/objectstore/upload_strategy.go:29: internal/upload/d internal/upload/destination/objectstore/uploader.go:5:2: G501: Blocklisted import crypto/md5: weak cryptographic primitive (gosec) internal/upload/destination/objectstore/uploader.go:95:12: G401: Use of weak cryptographic primitive (gosec) internal/upload/exif/exif.go:103:10: G204: Subprocess launched with variable (gosec) -internal/upstream/routes.go:185:74: `(*upstream).wsRoute` - `matchers` always receives `nil` (unparam) -internal/upstream/routes.go:245: Function 'configureRoutes' is too long (349 > 60) (funlen) -internal/upstream/routes.go:510: internal/upstream/routes.go:510: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO: We should probably not return a HT..." (godox) +internal/upstream/routes.go:205:74: `(*upstream).wsRoute` - `matchers` always receives `nil` (unparam) +internal/upstream/routes.go:265: Function 'configureRoutes' is too long (349 > 60) (funlen) +internal/upstream/routes.go:530: internal/upstream/routes.go:530: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO: We should probably not return a HT..." (godox) internal/upstream/upstream.go:116: internal/upstream/upstream.go:116: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO: move to LabKit https://gitlab.com/..." (godox) internal/zipartifacts/metadata.go:118:54: G115: integer overflow conversion int -> uint32 (gosec) internal/zipartifacts/open_archive.go:74:28: response body must be closed (bodyclose) diff --git a/workhorse/internal/bodylimit/bodylimit.go b/workhorse/internal/bodylimit/bodylimit.go new file mode 100644 index 00000000000..70bfee8fc91 --- /dev/null +++ b/workhorse/internal/bodylimit/bodylimit.go @@ -0,0 +1,124 @@ +// Package bodylimit provides HTTP request body size limiting functionality +// for RoundTrippers, supporting different enforcement modes including +// logging and strict enforcement with configurable size limits. +package bodylimit + +import ( + "errors" + "fmt" + "io" + "net/http" + "strings" + "sync/atomic" +) + +// Mode defines the behavior of the request body middleware +type Mode int + +// contextKey to hold a body limit per request +type contextKey string + +// BodyLimitKey is the context key used to store the request body size limit +const BodyLimitKey contextKey = "bodyLimit" + +const ( + // ModeDisabled - no body size checking + ModeDisabled Mode = iota + // ModeLogging - log when body size exceeds limit but allow request to continue + ModeLogging + // ModeEnforced - reject requests that exceed body size limit + ModeEnforced +) + +// RequestBodyTooLargeError is returned when a request body exceeds the configured size limit. +type RequestBodyTooLargeError struct { + Limit int64 + Read int64 +} + +func (e *RequestBodyTooLargeError) Error() string { + return fmt.Sprintf("request body too large: read %d bytes, limit %d bytes", e.Read, e.Limit) +} + +// countingReadCloser wraps an io.ReadCloser to count bytes read +type countingReadCloser struct { + reader io.ReadCloser + count int64 + limit int64 + mode Mode +} + +func (crc *countingReadCloser) Read(p []byte) (n int, err error) { + n, err = crc.reader.Read(p) + newCount := atomic.AddInt64(&crc.count, int64(n)) + + if crc.mode == ModeEnforced && newCount > crc.limit { + return n, &RequestBodyTooLargeError{Limit: crc.limit, Read: newCount} + } + + return n, err +} + +func (crc *countingReadCloser) Close() error { + return crc.reader.Close() +} + +func (crc *countingReadCloser) Count() int64 { + return atomic.LoadInt64(&crc.count) +} + +type roundTripper struct { + next http.RoundTripper + mode Mode +} + +// NewRoundTripper creates a RoundTripper that logs or blocks requests +// with request body size over the specified limit. +func NewRoundTripper(next http.RoundTripper, mode Mode) http.RoundTripper { + return &roundTripper{next: next, mode: mode} +} + +func (t *roundTripper) RoundTrip(r *http.Request) (*http.Response, error) { + // If disabled, just pass through + if t.mode == ModeDisabled { + return t.next.RoundTrip(r) + } + + // Extract limit from the provided context + bodyLimit, ok := r.Context().Value(BodyLimitKey).(int64) + if !ok || bodyLimit < 1 { + return t.next.RoundTrip(r) + } + + // Handle empty request body case + if r.Body == nil { + return t.next.RoundTrip(r) + } + + // Use a custom reader to count + bytesCounter := &countingReadCloser{reader: r.Body, count: 0, limit: bodyLimit, mode: t.mode} + r.Body = bytesCounter + + res, err := t.next.RoundTrip(r) + + // Enforced mode processing + if t.mode == ModeEnforced && err != nil { + var bodyTooLargeErr *RequestBodyTooLargeError + // Return 413 error code when request body is too large + if errors.As(err, &bodyTooLargeErr) { + return &http.Response{ + Status: http.StatusText(http.StatusRequestEntityTooLarge), + StatusCode: http.StatusRequestEntityTooLarge, + Proto: r.Proto, + ProtoMajor: r.ProtoMajor, + ProtoMinor: r.ProtoMinor, + Body: io.NopCloser(strings.NewReader("Request Entity Too Large")), + Request: r, + Header: make(http.Header), + Trailer: make(http.Header), + }, nil + } + } + + return res, err +} diff --git a/workhorse/internal/bodylimit/bodylimit_test.go b/workhorse/internal/bodylimit/bodylimit_test.go new file mode 100644 index 00000000000..357d3c658f8 --- /dev/null +++ b/workhorse/internal/bodylimit/bodylimit_test.go @@ -0,0 +1,544 @@ +package bodylimit + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/stretchr/testify/require" +) + +// mockRoundTripper implements http.RoundTripper for testing +type mockRoundTripper struct { + response *http.Response + err error + customHandler func(*http.Request) (*http.Response, error) +} + +func (m *mockRoundTripper) RoundTrip(r *http.Request) (*http.Response, error) { + // Use custom handler if provided + if m.customHandler != nil { + return m.customHandler(r) + } + + return m.response, m.err +} + +func TestCountingReadCloser(t *testing.T) { + tests := []struct { + name string + data string + readSizes []int + expectedCount int64 + mode Mode + limit int64 + expectError bool + }{ + { + name: "single read within limit", + data: "hello world", + readSizes: []int{11}, + expectedCount: 11, + mode: ModeEnforced, + limit: 20, + expectError: false, + }, + { + name: "multiple reads within limit", + data: "hello world", + readSizes: []int{5, 6}, + expectedCount: 11, + mode: ModeEnforced, + limit: 20, + expectError: false, + }, + { + name: "exceeds limit in enforced mode", + data: "hello world this is too long", + readSizes: []int{28}, + expectedCount: 28, + mode: ModeEnforced, + limit: 10, + expectError: true, + }, + { + name: "exceeds limit in logging mode", + data: "hello world this is too long", + readSizes: []int{28}, + expectedCount: 28, + mode: ModeLogging, + limit: 10, + expectError: false, + }, + { + name: "empty data", + data: "", + readSizes: []int{10}, + expectedCount: 0, + mode: ModeEnforced, + limit: 5, + expectError: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + reader := io.NopCloser(strings.NewReader(tt.data)) + counter := &countingReadCloser{ + reader: reader, + count: 0, + limit: tt.limit, + mode: tt.mode, + } + + var lastErr error + for _, size := range tt.readSizes { + buf := make([]byte, size) + _, err := counter.Read(buf) + if err != nil && err != io.EOF { + lastErr = err + break // Stop reading after first error in enforced mode + } + } + + if tt.expectError { + require.Error(t, lastErr, "expected error but got none") + var bodyTooLargeErr *RequestBodyTooLargeError + require.ErrorAs(t, lastErr, &bodyTooLargeErr, "error should be RequestBodyTooLargeError") + require.Equal(t, tt.limit, bodyTooLargeErr.Limit, "error limit mismatch") + } else { + require.NoError(t, lastErr) + } + + require.Equal(t, tt.expectedCount, counter.Count(), "byte count mismatch") + require.NoError(t, counter.Close()) + }) + } +} + +func TestRoundTripper_NoBodyLimit(t *testing.T) { + mockNext := &mockRoundTripper{ + response: &http.Response{StatusCode: http.StatusOK}, + } + + rt := NewRoundTripper(mockNext, ModeEnforced) + + // Request without body limit in context + req, err := http.NewRequest(http.MethodPost, "http://example.com", strings.NewReader("test data")) + require.NoError(t, err) + + res, err := rt.RoundTrip(req) + require.NoError(t, err) + defer closeResponseBody(res) + + require.Equal(t, http.StatusOK, res.StatusCode) +} + +func TestRoundTripper_NilBody(t *testing.T) { + mockNext := &mockRoundTripper{ + response: &http.Response{StatusCode: http.StatusOK}, + customHandler: func(r *http.Request) (*http.Response, error) { + // Try to read from the body - this would panic if nil body wasn't handled + if r.Body != nil { + buf := make([]byte, 10) + _, err := r.Body.Read(buf) + if err != nil && err != io.EOF { + return nil, err + } + r.Body.Close() + } + return &http.Response{StatusCode: http.StatusOK}, nil + }, + } + + rt := NewRoundTripper(mockNext, ModeEnforced) + + // Request with nil body (like GET requests) + ctx := context.WithValue(context.Background(), BodyLimitKey, int64(100)) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "http://example.com", nil) + require.NoError(t, err, "failed to create request") + + res, err := rt.RoundTrip(req) + require.NoError(t, err) + defer closeResponseBody(res) + + require.Equal(t, http.StatusOK, res.StatusCode, "status code mismatch") +} + +func TestRoundTripper_WithinLimit(t *testing.T) { + mockNext := &mockRoundTripper{ + response: &http.Response{StatusCode: http.StatusOK}, + customHandler: func(r *http.Request) (*http.Response, error) { + // Consume some of the body but stay within limit + if r.Body != nil { + buf := make([]byte, 5) // Read only 5 bytes + r.Body.Read(buf) + r.Body.Close() + } + return &http.Response{StatusCode: http.StatusOK}, nil + }, + } + + rt := NewRoundTripper(mockNext, ModeEnforced) + + // Request with body limit in context + ctx := context.WithValue(context.Background(), BodyLimitKey, int64(100)) + req, err := http.NewRequestWithContext(ctx, http.MethodPost, "http://example.com", strings.NewReader("small data")) + require.NoError(t, err) + + res, err := rt.RoundTrip(req) + require.NoError(t, err) + defer closeResponseBody(res) + + require.Equal(t, http.StatusOK, res.StatusCode) +} + +func TestRoundTripper_ExceedsLimit_Logging(t *testing.T) { + largeData := strings.Repeat("a", 150) // Exceed 100 byte limit + + mockNext := &mockRoundTripper{ + response: &http.Response{StatusCode: http.StatusOK}, + customHandler: func(r *http.Request) (*http.Response, error) { + // Consume the entire body to trigger counting + if r.Body != nil { + io.ReadAll(r.Body) + r.Body.Close() + } + return &http.Response{StatusCode: http.StatusOK}, nil + }, + } + + rt := NewRoundTripper(mockNext, ModeLogging) + + ctx := context.WithValue(context.Background(), BodyLimitKey, int64(100)) + req, err := http.NewRequestWithContext(ctx, http.MethodPost, "http://example.com", strings.NewReader(largeData)) + require.NoError(t, err) + + res, err := rt.RoundTrip(req) + require.NoError(t, err) + defer closeResponseBody(res) + + // In logging mode, request should still succeed + require.Equal(t, http.StatusOK, res.StatusCode) +} + +func TestRoundTripper_ExceedsLimit_Enforced(t *testing.T) { + largeData := strings.Repeat("a", 150) // Exceed 100 byte limit + + mockNext := &mockRoundTripper{ + response: &http.Response{StatusCode: http.StatusOK}, + customHandler: func(r *http.Request) (*http.Response, error) { + // Try to consume the entire body - this will trigger the limit error + if r.Body != nil { + _, err := io.ReadAll(r.Body) + if err != nil { + return nil, err // Return the error from counting reader + } + r.Body.Close() + } + return &http.Response{StatusCode: http.StatusOK}, nil + }, + } + + rt := NewRoundTripper(mockNext, ModeEnforced) + + ctx := context.WithValue(context.Background(), BodyLimitKey, int64(100)) + req, err := http.NewRequestWithContext(ctx, http.MethodPost, "http://example.com", strings.NewReader(largeData)) + require.NoError(t, err) + + res, err := rt.RoundTrip(req) + require.NoError(t, err) + defer closeResponseBody(res) + + // In enforced mode, should return 413 error + require.Equal(t, http.StatusRequestEntityTooLarge, res.StatusCode) + + expectedStatus := http.StatusText(http.StatusRequestEntityTooLarge) + require.Equal(t, expectedStatus, res.Status, "status text mismatch") + + // Verify response body + require.NotNil(t, res.Body, "response body is nil") + + body, err := io.ReadAll(res.Body) + require.NoError(t, err) + + expectedBody := "Request Entity Too Large" + require.Equal(t, expectedBody, string(body), "response body mismatch") + + // Verify request details are preserved + require.Equal(t, req, res.Request, "request not preserved in response") +} + +func TestRoundTripper_BodyLimitEdgeCases(t *testing.T) { + tests := []struct { + name string + bodyLimit interface{} + expectPass bool + consumeBody bool + }{ + { + name: "zero limit", + bodyLimit: int64(0), + expectPass: true, // Zero limit should pass through (< 1 check) + consumeBody: false, + }, + { + name: "negative limit", + bodyLimit: int64(-1), + expectPass: true, // Negative limit should pass through + consumeBody: false, + }, + { + name: "wrong type", + bodyLimit: "100", + expectPass: true, // Wrong type should pass through + consumeBody: false, + }, + { + name: "valid limit exceeded", + bodyLimit: int64(100), + expectPass: false, // Valid limit with large data should not pass + consumeBody: true, // Need to consume body for test to work + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockNext := &mockRoundTripper{ + response: &http.Response{StatusCode: http.StatusOK}, + } + + if tt.consumeBody { + // Set custom handler to consume the body + mockNext.customHandler = func(r *http.Request) (*http.Response, error) { + if r.Body != nil { + _, err := io.ReadAll(r.Body) + if err != nil { + return nil, err // Propagate the error + } + r.Body.Close() + } + return &http.Response{StatusCode: http.StatusOK}, nil + } + } + + rt := NewRoundTripper(mockNext, ModeEnforced) + + largeData := strings.Repeat("a", 150) + ctx := context.WithValue(context.Background(), BodyLimitKey, tt.bodyLimit) + req, err := http.NewRequestWithContext(ctx, http.MethodPost, "http://example.com", strings.NewReader(largeData)) + require.NoError(t, err) + + res, err := rt.RoundTrip(req) + require.NoError(t, err) + defer closeResponseBody(res) + + if tt.expectPass { + require.Equal(t, http.StatusOK, res.StatusCode, "expected request to pass with status 200") + } else { + require.Equal(t, http.StatusRequestEntityTooLarge, res.StatusCode, "expected request to fail with status 413") + } + }) + } +} + +func TestRoundTripper_NextRoundTripperError(t *testing.T) { + expectedErr := io.EOF + mockNext := &mockRoundTripper{ + response: nil, + err: expectedErr, + } + + rt := NewRoundTripper(mockNext, ModeEnforced) + + ctx := context.WithValue(context.Background(), BodyLimitKey, int64(100)) + req, err := http.NewRequestWithContext(ctx, http.MethodPost, "http://example.com", strings.NewReader("test")) + require.NoError(t, err) + + res, err := rt.RoundTrip(req) + defer closeResponseBody(res) + + require.ErrorIs(t, err, expectedErr, "expected EOF error") + require.Nil(t, res, "expected nil response") +} + +func TestRequestBodyTooLargeError(t *testing.T) { + err := &RequestBodyTooLargeError{ + Limit: 100, + Read: 150, + } + + expected := "request body too large: read 150 bytes, limit 100 bytes" + require.Equal(t, expected, err.Error(), "error message mismatch") +} + +func TestRoundTripper_DifferentModes(t *testing.T) { + largeData := strings.Repeat("a", 150) // Exceed 100 byte limit + + tests := []struct { + name string + mode Mode + expectStatus int + expectError bool + }{ + { + name: "disabled mode bypasses limits", + mode: ModeDisabled, + expectStatus: http.StatusOK, + expectError: false, + }, + { + name: "logging mode allows request", + mode: ModeLogging, + expectStatus: http.StatusOK, + expectError: false, + }, + { + name: "enforced mode blocks request", + mode: ModeEnforced, + expectStatus: http.StatusRequestEntityTooLarge, + expectError: false, // No error returned, just 413 response + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockNext := &mockRoundTripper{ + response: &http.Response{StatusCode: http.StatusOK}, + customHandler: func(r *http.Request) (*http.Response, error) { + if r.Body != nil { + _, err := io.ReadAll(r.Body) + if err != nil { + return nil, err + } + r.Body.Close() + } + return &http.Response{StatusCode: http.StatusOK}, nil + }, + } + + rt := NewRoundTripper(mockNext, tt.mode) + + ctx := context.WithValue(context.Background(), BodyLimitKey, int64(100)) + req, err := http.NewRequestWithContext(ctx, http.MethodPost, "http://example.com", strings.NewReader(largeData)) + require.NoError(t, err) + + res, err := rt.RoundTrip(req) + defer closeResponseBody(res) + + if tt.expectError { + require.Error(t, err, "expected error but got none") + } else { + require.NoError(t, err) + } + + require.Equal(t, tt.expectStatus, res.StatusCode) + }) + } +} + +// TestIntegration tests the roundtripper with a real HTTP server +func TestIntegration(t *testing.T) { + handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, err := io.ReadAll(r.Body) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + w.Write([]byte("success")) + }) + + // Create test server + server := httptest.NewServer(handler) + defer server.Close() + + tests := []struct { + name string + mode Mode + bodySize int + expectedCode int + }{ + { + name: "under limit with enforced mode", + mode: ModeEnforced, + bodySize: 90, + expectedCode: http.StatusOK, + }, + { + name: "over limit with enforced mode", + mode: ModeEnforced, + bodySize: 150, + expectedCode: http.StatusRequestEntityTooLarge, + }, + { + name: "over limit with logging mode", + mode: ModeLogging, + bodySize: 150, + expectedCode: http.StatusOK, + }, + { + name: "over limit with disabled mode", + mode: ModeDisabled, + bodySize: 150, + expectedCode: http.StatusOK, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + // Create HTTP client with our custom roundtripper + transport := &contextSettingTransport{ + next: http.DefaultTransport, + bodyLimit: 100, + mode: tt.mode, + } + client := &http.Client{Transport: transport} + + // Make request + body := strings.NewReader(strings.Repeat("a", tt.bodySize)) + resp, err := client.Post(server.URL, "text/plain", body) + + require.NoError(t, err) + require.Equal(t, tt.expectedCode, resp.StatusCode) + + defer closeResponseBody(resp) + + // Verify response body for successful requests + if tt.expectedCode == http.StatusOK { + respBody, err := io.ReadAll(resp.Body) + require.NoError(t, err) + require.Equal(t, "success", string(respBody), "response body mismatch") + } else if tt.expectedCode == http.StatusRequestEntityTooLarge { + respBody, err := io.ReadAll(resp.Body) + require.NoError(t, err) + require.Equal(t, "Request Entity Too Large", string(respBody), "error response body mismatch") + } + }) + } +} + +// contextSettingTransport wraps the request body roundtripper and sets context +type contextSettingTransport struct { + next http.RoundTripper + bodyLimit int64 + mode Mode +} + +func (t *contextSettingTransport) RoundTrip(r *http.Request) (*http.Response, error) { + // Set body limit in context + ctx := context.WithValue(r.Context(), BodyLimitKey, t.bodyLimit) + r = r.WithContext(ctx) + + // Use our roundtripper + rt := NewRoundTripper(t.next, t.mode) + return rt.RoundTrip(r) +} + +func closeResponseBody(res *http.Response) { + if res != nil && res.Body != nil { + res.Body.Close() + } +} diff --git a/workhorse/internal/upstream/roundtripper/roundtripper.go b/workhorse/internal/upstream/roundtripper/roundtripper.go index 3b533041fd3..2309edea55e 100644 --- a/workhorse/internal/upstream/roundtripper/roundtripper.go +++ b/workhorse/internal/upstream/roundtripper/roundtripper.go @@ -13,12 +13,15 @@ import ( "net" "net/http" "net/url" + "os" + "strings" "time" "gitlab.com/gitlab-org/labkit/correlation" "gitlab.com/gitlab-org/labkit/tracing" "gitlab.com/gitlab-org/gitlab/workhorse/internal/badgateway" + "gitlab.com/gitlab-org/gitlab/workhorse/internal/bodylimit" ) func mustParseAddress(address, scheme string) string { @@ -73,7 +76,7 @@ func newBackendRoundTripper(backend *url.URL, socket string, proxyHeadersTimeout return tracing.NewRoundTripper( correlation.NewInstrumentedRoundTripper( - badgateway.NewRoundTripper(developmentMode, transport), + badgateway.NewRoundTripper(developmentMode, bodylimit.NewRoundTripper(transport, bodyLimitMode)), ), ) } @@ -82,3 +85,20 @@ func newBackendRoundTripper(backend *url.URL, socket string, proxyHeadersTimeout func NewTestBackendRoundTripper(backend *url.URL) http.RoundTripper { return NewBackendRoundTripper(backend, "", 0, true) } + +var bodyLimitMode = getBodyLimitMode() + +func getBodyLimitMode() bodylimit.Mode { + modeStr := strings.ToUpper(os.Getenv("WORKHORSE_REQUEST_LIMIT")) + + switch modeStr { + case "DISABLED": + return bodylimit.ModeDisabled + case "LOGGING": + return bodylimit.ModeLogging + case "ENFORCED": + return bodylimit.ModeEnforced + default: + return bodylimit.ModeDisabled + } +} diff --git a/workhorse/internal/upstream/routes.go b/workhorse/internal/upstream/routes.go index 455c9bda7bd..44514b48607 100644 --- a/workhorse/internal/upstream/routes.go +++ b/workhorse/internal/upstream/routes.go @@ -1,6 +1,7 @@ package upstream import ( + "context" "net/http" "net/url" "regexp" @@ -14,6 +15,7 @@ import ( "gitlab.com/gitlab-org/gitlab/workhorse/internal/ai_assist/duoworkflow" apipkg "gitlab.com/gitlab-org/gitlab/workhorse/internal/api" "gitlab.com/gitlab-org/gitlab/workhorse/internal/artifacts" + "gitlab.com/gitlab-org/gitlab/workhorse/internal/bodylimit" "gitlab.com/gitlab-org/gitlab/workhorse/internal/builds" "gitlab.com/gitlab-org/gitlab/workhorse/internal/channel" "gitlab.com/gitlab-org/gitlab/workhorse/internal/circuitbreaker" @@ -56,6 +58,7 @@ type routeOptions struct { isGeoProxyRoute bool matchers []matcherFunc allowOrigins *regexp.Regexp + bodyLimit int64 } const ( @@ -121,17 +124,29 @@ func withAllowOrigins(pattern string) func(*routeOptions) { } } +func withBodyLimit(bodyLimit int64) func(*routeOptions) { + return func(options *routeOptions) { + options.bodyLimit = bodyLimit + } +} + func (u *upstream) observabilityMiddlewares(handler http.Handler, method string, metadata routeMetadata, opts *routeOptions) http.Handler { handler = log.AccessLogger( handler, log.WithAccessLogger(u.accessLogger), log.WithTrustedProxies(u.TrustedCIDRsForXForwardedFor), log.WithExtraFields(func(_ *http.Request) log.Fields { - return log.Fields{ + fields := log.Fields{ "route": metadata.regexpStr, // This field matches the `route` label in Prometheus metrics "route_id": metadata.routeID, "backend_id": metadata.backendID, } + + if opts != nil { + fields["body_limit"] = opts.bodyLimit + } + + return fields }), ) @@ -157,7 +172,8 @@ func (u *upstream) observabilityMiddlewares(handler http.Handler, method string, func (u *upstream) route(method string, metadata routeMetadata, handler http.Handler, opts ...func(*routeOptions)) routeEntry { // Instantiate a route with the defaults options := routeOptions{ - tracing: true, + tracing: true, + bodyLimit: 100 * 1024 * 1024, // 100MB } for _, f := range opts { @@ -174,6 +190,10 @@ func (u *upstream) route(method string, metadata routeMetadata, handler http.Han handler = corsMiddleware(handler, options.allowOrigins) } + if options.bodyLimit > 0 { + handler = withBodyLimitContext(options.bodyLimit, handler) + } + return routeEntry{ method: method, regex: compileRegexp(metadata.regexpStr), @@ -399,7 +419,7 @@ func configureRoutes(u *upstream) { u.route("POST", newRoute(apiGroupPattern+`/wikis/attachments\z`, "api_groups_wikis_attachments", railsBackend), tempfileMultipartProxy), u.route("POST", - newRoute(apiPattern+`graphql\z`, "api_graphql", railsBackend), tempfileMultipartProxy), + newRoute(apiPattern+`graphql\z`, "api_graphql", railsBackend), tempfileMultipartProxy, withBodyLimit(20*1024*1024)), // 20 Mb u.route("POST", newRoute(apiTopicPattern, "api_topics", railsBackend), tempfileMultipartProxy), u.route("PUT", @@ -631,3 +651,12 @@ func allowedProxy(proxy http.Handler, dependencyProxyInjector *dependencyproxy.I return proxy } + +// Define a context key with a body limit value for route +func withBodyLimitContext(bodyLimit int64, next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ctx := context.WithValue(r.Context(), bodylimit.BodyLimitKey, bodyLimit) + r = r.WithContext(ctx) + next.ServeHTTP(w, r) + }) +} diff --git a/yarn.lock b/yarn.lock index 92ed42f11e9..bbf02db8f6b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1464,14 +1464,14 @@ resolved "https://registry.yarnpkg.com/@gitlab/svgs/-/svgs-3.138.0.tgz#5db6d76ceedcf3716e9ce624b272a58052d8d121" integrity sha512-Jzd7GhmKxsQdCTttOe6C4AjqGvq8L91N6uUYnAmwnLGeY3aRD12BKBSgId5FrTH6rvk2w36o1+AwIqP+YuHV4g== -"@gitlab/ui@114.8.1": - version "114.8.1" - resolved "https://registry.yarnpkg.com/@gitlab/ui/-/ui-114.8.1.tgz#61edd78c7d4f7a0935efcbb5e916adbc44523412" - integrity sha512-sKFl0Ud15vQEMv8ZBsUnyzsk4Lg17qjxYSCPvSUNjBsLfesAxK4JdJNy8X3gulKxXY3n793gtaqbbeIY6Ixmmw== +"@gitlab/ui@115.0.1": + version "115.0.1" + resolved "https://registry.yarnpkg.com/@gitlab/ui/-/ui-115.0.1.tgz#a449a00b1b9352952d542a456cca3a210a02c706" + integrity sha512-gZU8w2W1N36tqDjzzTsH1Mg3xjyVU+ki+2J3bHvw65ovQVF/+A7qRrn2CT07IV0L70zCNOP8RO9VKJKINxpp6A== dependencies: "@floating-ui/dom" "1.7.1" echarts "^5.6.0" - iframe-resizer "^4.3.2" + iframe-resizer "^4.4.5" lodash "^4.17.21" popper.js "^1.16.1" portal-vue "^2.1.7" @@ -8899,10 +8899,10 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -iframe-resizer@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/iframe-resizer/-/iframe-resizer-4.3.2.tgz#42dd88345d18b9e377b6044dddb98c664ab0ce6b" - integrity sha512-gOWo2hmdPjMQsQ+zTKbses08mDfDEMh4NneGQNP4qwePYujY1lguqP6gnbeJkf154gojWlBhIltlgnMfYjGHWA== +iframe-resizer@^4.3.2, iframe-resizer@^4.4.5: + version "4.4.5" + resolved "https://registry.yarnpkg.com/iframe-resizer/-/iframe-resizer-4.4.5.tgz#f5048636e7f2fb5d9a09cc2ae78eb2da55ad555c" + integrity sha512-U8bCywf/Gh07O69RXo6dXAzTtODQrxaHGHRI7Nt4ipXsuq6EMxVsOP/jjaP43YtXz/ibESS0uSVDN3sOGCzSmw== ignore-by-default@^1.0.1: version "1.0.1"