diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-10-21 10:08:36 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-10-21 10:08:36 +0300 |
commit | 48aff82709769b098321c738f3444b9bdaa694c6 (patch) | |
tree | e00c7c43e2d9b603a5a6af576b1685e400410dee /doc/api | |
parent | 879f5329ee916a948223f8f43d77fba4da6cd028 (diff) |
Add latest changes from gitlab-org/gitlab@13-5-stable-eev13.5.0-rc42
Diffstat (limited to 'doc/api')
57 files changed, 10451 insertions, 774 deletions
diff --git a/doc/api/README.md b/doc/api/README.md index 53df4114a71..3f7dae055e2 100644 --- a/doc/api/README.md +++ b/doc/api/README.md @@ -83,7 +83,11 @@ There are several ways to authenticate with the GitLab API: 1. [OAuth2 tokens](#oauth2-tokens) 1. [Personal access tokens](../user/profile/personal_access_tokens.md) -1. [Project access tokens](../user/project/settings/project_access_tokens.md) **(CORE ONLY)** +1. [Project access tokens](../user/project/settings/project_access_tokens.md) + +NOTE: **Note:** +Project access tokens are supported for self-managed instances on Core and above. They are also supported on GitLab.com Bronze and above. + 1. [Session cookie](#session-cookie) 1. [GitLab CI/CD job token](#gitlab-ci-job-token) **(Specific endpoints only)** @@ -158,9 +162,22 @@ for example, without needing to explicitly pass an access token. With a few API endpoints you can use a [GitLab CI/CD job token](../user/project/new_ci_build_permissions_model.md#job-token) to authenticate with the API: +- Packages: + - [Composer Repository](../user/packages/composer_repository/index.md) + - [Conan Repository](../user/packages/conan_repository/index.md) + - [Container Registry](../user/packages/container_registry/index.md) (`$CI_REGISTRY_PASSWORD` is actually `$CI_JOB_TOKEN`, but this may change in the future) + - [Go Proxy](../user/packages/go_proxy/index.md) + - [Maven Repository](../user/packages/maven_repository/index.md#authenticate-with-a-ci-job-token) + - [NPM Repository](../user/packages/npm_registry/index.md#authenticating-with-a-ci-job-token) + - [Nuget Repository](../user/packages/nuget_repository/index.md) + - [PyPI Repository](../user/packages/pypi_repository/index.md#using-gitlab-ci-with-pypi-packages) + - [Generic packages](../user/packages/generic_packages/index.md#publish-a-generic-package-by-using-cicd) - [Get job artifacts](job_artifacts.md#get-job-artifacts) -- [Pipeline triggers](pipeline_triggers.md) +- [Pipeline triggers](pipeline_triggers.md) (via `token=` parameter) - [Release creation](releases/index.md#create-a-release) +- [Terraform plan](../user/infrastructure/index.md) + +The token is valid as long as the job is running. ### Impersonation tokens @@ -297,21 +314,22 @@ The following table gives an overview of how the API functions generally behave. The following table shows the possible return codes for API requests. -| Return values | Description | -| ------------- | ----------- | -| `200 OK` | The `GET`, `PUT` or `DELETE` request was successful, the resource(s) itself is returned as JSON. | -| `204 No Content` | The server has successfully fulfilled the request and that there is no additional content to send in the response payload body. | -| `201 Created` | The `POST` request was successful and the resource is returned as JSON. | -| `304 Not Modified` | Indicates that the resource has not been modified since the last request. | -| `400 Bad Request` | A required attribute of the API request is missing, e.g., the title of an issue is not given. | -| `401 Unauthorized` | The user is not authenticated, a valid [user token](#authentication) is necessary. | -| `403 Forbidden` | The request is not allowed, e.g., the user is not allowed to delete a project. | -| `404 Not Found` | A resource could not be accessed, e.g., an ID for a resource could not be found. | +| Return values | Description | +| ------------------------ | ----------- | +| `200 OK` | The `GET`, `PUT` or `DELETE` request was successful, the resource(s) itself is returned as JSON. | +| `204 No Content` | The server has successfully fulfilled the request and that there is no additional content to send in the response payload body. | +| `201 Created` | The `POST` request was successful and the resource is returned as JSON. | +| `304 Not Modified` | Indicates that the resource has not been modified since the last request. | +| `400 Bad Request` | A required attribute of the API request is missing, e.g., the title of an issue is not given. | +| `401 Unauthorized` | The user is not authenticated, a valid [user token](#authentication) is necessary. | +| `403 Forbidden` | The request is not allowed, e.g., the user is not allowed to delete a project. | +| `404 Not Found` | A resource could not be accessed, e.g., an ID for a resource could not be found. | | `405 Method Not Allowed` | The request is not supported. | -| `409 Conflict` | A conflicting resource already exists, e.g., creating a project with a name that already exists. | -| `412` | Indicates the request was denied. May happen if the `If-Unmodified-Since` header is provided when trying to delete a resource, which was modified in between. | -| `422 Unprocessable` | The entity could not be processed. | -| `500 Server Error` | While handling the request something went wrong server-side. | +| `409 Conflict` | A conflicting resource already exists, e.g., creating a project with a name that already exists. | +| `412` | Indicates the request was denied. May happen if the `If-Unmodified-Since` header is provided when trying to delete a resource, which was modified in between. | +| `422 Unprocessable` | The entity could not be processed. | +| `429 Too Many Requests` | The user exceeded the [application rate limits](../administration/instance_limits.md#rate-limits). | +| `500 Server Error` | While handling the request, something went wrong server-side. | ## Pagination @@ -360,22 +378,22 @@ curl --head --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.exampl The response will then be: ```http -HTTP/1.1 200 OK -Cache-Control: no-cache -Content-Length: 1103 -Content-Type: application/json -Date: Mon, 18 Jan 2016 09:43:18 GMT -Link: <https://gitlab.example.com/api/v4/projects/8/issues/8/notes?page=1&per_page=3>; rel="prev", <https://gitlab.example.com/api/v4/projects/8/issues/8/notes?page=3&per_page=3>; rel="next", <https://gitlab.example.com/api/v4/projects/8/issues/8/notes?page=1&per_page=3>; rel="first", <https://gitlab.example.com/api/v4/projects/8/issues/8/notes?page=3&per_page=3>; rel="last" -Status: 200 OK -Vary: Origin -X-Next-Page: 3 -X-Page: 2 -X-Per-Page: 3 -X-Prev-Page: 1 -X-Request-Id: 732ad4ee-9870-4866-a199-a9db0cde3c86 -X-Runtime: 0.108688 -X-Total: 8 -X-Total-Pages: 3 +HTTP/2 200 OK +cache-control: no-cache +content-length: 1103 +content-type: application/json +date: Mon, 18 Jan 2016 09:43:18 GMT +link: <https://gitlab.example.com/api/v4/projects/8/issues/8/notes?page=1&per_page=3>; rel="prev", <https://gitlab.example.com/api/v4/projects/8/issues/8/notes?page=3&per_page=3>; rel="next", <https://gitlab.example.com/api/v4/projects/8/issues/8/notes?page=1&per_page=3>; rel="first", <https://gitlab.example.com/api/v4/projects/8/issues/8/notes?page=3&per_page=3>; rel="last" +status: 200 OK +vary: Origin +x-next-page: 3 +x-page: 2 +x-per-page: 3 +x-prev-page: 1 +x-request-id: 732ad4ee-9870-4866-a199-a9db0cde3c86 +x-runtime: 0.108688 +x-total: 8 +x-total-pages: 3 ``` #### Other pagination headers @@ -384,12 +402,12 @@ GitLab also returns the following additional pagination headers: | Header | Description | | --------------- | --------------------------------------------- | -| `X-Total` | The total number of items | -| `X-Total-Pages` | The total number of pages | -| `X-Per-Page` | The number of items per page | -| `X-Page` | The index of the current page (starting at 1) | -| `X-Next-Page` | The index of the next page | -| `X-Prev-Page` | The index of the previous page | +| `x-total` | The total number of items | +| `x-total-pages` | The total number of pages | +| `x-per-page` | The number of items per page | +| `x-page` | The index of the current page (starting at 1) | +| `x-next-page` | The index of the next page | +| `X-prev-page` | The index of the previous page | NOTE: **Note:** For GitLab.com users, [some pagination headers may not be returned](../user/gitlab_com/index.md#pagination-response-headers). @@ -588,7 +606,7 @@ Such errors appear in two cases: - A required attribute of the API request is missing, e.g., the title of an issue is not given -- An attribute did not pass the validation, e.g., user bio is too long +- An attribute did not pass the validation, e.g., the user bio is too long When an attribute is missing, you will get something like: diff --git a/doc/api/admin_sidekiq_queues.md b/doc/api/admin_sidekiq_queues.md index 4a2456d6f4a..22488d053b4 100644 --- a/doc/api/admin_sidekiq_queues.md +++ b/doc/api/admin_sidekiq_queues.md @@ -29,6 +29,7 @@ DELETE /admin/sidekiq/queues/:queue_name | `root_namespace` | string | no | The root namespace of the project | | `subscription_plan` | string | no | The subscription plan of the root namespace (GitLab.com only) | | `caller_id` | string | no | The endpoint or background job that schedule the job (for example: `ProjectsController#create`, `/api/:version/projects/:id`, `PostReceive`) | +| `feature_category` | string | no | The feature category of the background job (for example: `issue_tracking` or `code_review`) | At least one attribute, other than `queue_name`, is required. diff --git a/doc/api/api_resources.md b/doc/api/api_resources.md index 898aa713331..199b244b2c3 100644 --- a/doc/api/api_resources.md +++ b/doc/api/api_resources.md @@ -9,7 +9,7 @@ Available resources for the [GitLab API](README.md) can be grouped in the follow See also: - [V3 to V4](v3_to_v4.md). -- Adding [deploy keys for multiple projects](deploy_key_multiple_projects.md). +- Adding [deploy keys for multiple projects](deploy_keys.md#adding-deploy-keys-to-multiple-projects). - [API Resources for various templates](#templates-api-resources). ## Project resources @@ -38,6 +38,7 @@ The following API resources are available in the project context: | [Issues Statistics](issues_statistics.md) | `/projects/:id/issues_statistics` (also available for groups and standalone) | | [Issue boards](boards.md) | `/projects/:id/boards` | | [Issue links](issue_links.md) **(STARTER)** | `/projects/:id/issues/.../links` | +| [Iterations](iterations.md) **(STARTER)** | `/projects/:id/iterations` (also available for groups) | | [Jobs](jobs.md) | `/projects/:id/jobs`, `/projects/:id/pipelines/.../jobs` | | [Labels](labels.md) | `/projects/:id/labels` | | [Managed licenses](managed_licenses.md) **(ULTIMATE)** | `/projects/:id/managed_licenses` | @@ -80,7 +81,7 @@ The following API resources are available in the project context: | [Vulnerability exports](vulnerability_exports.md) **(ULTIMATE)** | `/projects/:id/vulnerability_exports` | | [Project vulnerabilities](project_vulnerabilities.md) **(ULTIMATE)** | `/projects/:id/vulnerabilities` | | [Vulnerability findings](vulnerability_findings.md) **(ULTIMATE)** | `/projects/:id/vulnerability_findings` | -| [Wikis](wikis.md) | `/projects/:id/wikis` | +| [Project wikis](wikis.md) | `/projects/:id/wikis` | ## Group resources @@ -97,6 +98,7 @@ The following API resources are available in the group context: | [Groups](groups.md) | `/groups`, `/groups/.../subgroups` | | [Group badges](group_badges.md) | `/groups/:id/badges` | | [Group issue boards](group_boards.md) | `/groups/:id/boards` | +| [Group iterations](group_iterations.md) **(STARTER)** | `/groups/:id/iterations` (also available for projects) | | [Group labels](group_labels.md) | `/groups/:id/labels` | | [Group-level variables](group_level_variables.md) | `/groups/:id/variables` | | [Group milestones](group_milestones.md) | `/groups/:id/milestones` | @@ -108,6 +110,7 @@ The following API resources are available in the group context: | [Notification settings](notification_settings.md) | `/groups/:id/notification_settings` (also available for projects and standalone) | | [Resource label events](resource_label_events.md) | `/groups/:id/epics/.../resource_label_events` (also available for projects) | | [Search](search.md) | `/groups/:id/search` (also available for projects and standalone) | +| [Group wikis](group_wikis.md) **(PREMIUM)** | `/groups/:id/wikis` | ## Standalone resources diff --git a/doc/api/commits.md b/doc/api/commits.md index da95e9a943f..66b34d4bc75 100644 --- a/doc/api/commits.md +++ b/doc/api/commits.md @@ -614,7 +614,7 @@ Example response: ## Commit status -Since GitLab 8.1, this is the new commit status API. +In GitLab 8.1 and later, this is the new commit status API. ### List the statuses of a commit diff --git a/doc/api/container_registry.md b/doc/api/container_registry.md index e4687994017..3a7ebf9a2aa 100644 --- a/doc/api/container_registry.md +++ b/doc/api/container_registry.md @@ -23,9 +23,8 @@ GET /projects/:id/registry/repositories | Attribute | Type | Required | Description | | --------- | ---- | -------- | ----------- | | `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) accessible by the authenticated user. | -| `tags` | boolean | no | If the parameter is included as true, each repository will include an array of `"tags"` in the response. | -| `name` | string | no | Returns a list of repositories with a name that matches the value. ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/29763) in GitLab 13.0). | -| `tags_count` | boolean | no | If the parameter is included as true, each repository will include `"tags_count"` in the response ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/32141) in GitLab 13.1). | +| `tags` | boolean | no | If the parameter is included as true, each repository includes an array of `"tags"` in the response. | +| `tags_count` | boolean | no | If the parameter is included as true, each repository includes `"tags_count"` in the response ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/32141) in GitLab 13.1). | ```shell curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/registry/repositories" @@ -41,7 +40,8 @@ Example response: "path": "group/project", "project_id": 9, "location": "gitlab.example.com:5000/group/project", - "created_at": "2019-01-10T13:38:57.391Z" + "created_at": "2019-01-10T13:38:57.391Z", + "cleanup_policy_started_at": "2020-01-10T15:40:57.391Z" }, { "id": 2, @@ -49,7 +49,8 @@ Example response: "path": "group/project/releases", "project_id": 9, "location": "gitlab.example.com:5000/group/project/releases", - "created_at": "2019-01-10T13:39:08.229Z" + "created_at": "2019-01-10T13:39:08.229Z", + "cleanup_policy_started_at": "2020-08-17T03:12:35.489Z" } ] ``` @@ -65,9 +66,8 @@ GET /groups/:id/registry/repositories | Attribute | Type | Required | Description | | --------- | ---- | -------- | ----------- | | `id` | integer/string | yes | The ID or [URL-encoded path of the group](README.md#namespaced-path-encoding) accessible by the authenticated user. | -| `tags` | boolean | no | If the parameter is included as true, each repository will include an array of `"tags"` in the response. | -| `name` | string | no | Returns a list of repositories with a name that matches the value. ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/29763) in GitLab 13.0). | -| `tags_count` | boolean | no | If the parameter is included as true, each repository will include `"tags_count"` in the response ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/32141) in GitLab 13.1). | +| `tags` | boolean | no | If the parameter is included as true, each repository includes an array of `"tags"` in the response. | +| `tags_count` | boolean | no | If the parameter is included as true, each repository includes `"tags_count"` in the response ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/32141) in GitLab 13.1). | ```shell curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/2/registry/repositories?tags=1&tags_count=true" @@ -84,6 +84,7 @@ Example response: "project_id": 9, "location": "gitlab.example.com:5000/group/project", "created_at": "2019-01-10T13:38:57.391Z", + "cleanup_policy_started_at": "2020-08-17T03:12:35.489Z", "tags_count": 1, "tags": [ { @@ -100,6 +101,7 @@ Example response: "project_id": 11, "location": "gitlab.example.com:5000/group/other_project", "created_at": "2019-01-10T13:39:08.229Z", + "cleanup_policy_started_at": "2020-01-10T15:40:57.391Z", "tags_count": 3, "tags": [ { @@ -228,7 +230,7 @@ DELETE /projects/:id/registry/repositories/:repository_id/tags/:tag_name curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/registry/repositories/2/tags/v10.0.0" ``` -This action does not delete blobs. In order to delete them and recycle disk space, +This action doesn't delete blobs. To delete them and recycle disk space, [run the garbage collection](https://docs.gitlab.com/omnibus/maintenance/README.html#removing-unused-layers-not-referenced-by-manifests). ## Delete registry repository tags in bulk @@ -248,28 +250,29 @@ DELETE /projects/:id/registry/repositories/:repository_id/tags | `repository_id` | integer | yes | The ID of registry repository. | | `name_regex` | string | no | The [re2](https://github.com/google/re2/wiki/Syntax) regex of the name to delete. To delete all tags specify `.*`. **Note:** `name_regex` is deprecated in favor of `name_regex_delete`. This field is validated. | | `name_regex_delete` | string | yes | The [re2](https://github.com/google/re2/wiki/Syntax) regex of the name to delete. To delete all tags specify `.*`. This field is validated. | -| `name_regex_keep` | string | no | The [re2](https://github.com/google/re2/wiki/Syntax) regex of the name to keep. This value will override any matches from `name_regex_delete`. This field is validated. Note: setting to `.*` will result in a no-op. | +| `name_regex_keep` | string | no | The [re2](https://github.com/google/re2/wiki/Syntax) regex of the name to keep. This value overrides any matches from `name_regex_delete`. This field is validated. Note: setting to `.*` results in a no-op. | | `keep_n` | integer | no | The amount of latest tags of given name to keep. | | `older_than` | string | no | Tags to delete that are older than the given time, written in human readable form `1h`, `1d`, `1month`. | This API call performs the following operations: -1. It orders all tags by creation date. The creation date is the time of the - manifest creation, not the time of tag push. -1. It removes only the tags matching the given `name_regex_delete` (or deprecated `name_regex`), keeping any that match `name_regex_keep`. -1. It never removes the tag named `latest`. -1. It keeps N latest matching tags (if `keep_n` is specified). -1. It only removes tags that are older than X amount of time (if `older_than` is specified). -1. It schedules the asynchronous job to be executed in the background. - -These operations are executed asynchronously and it might -take time to get executed. You can run this at most -once an hour for a given container repository. -This action does not delete blobs. In order to delete them and recycle disk space, +- It orders all tags by creation date. The creation date is the time of the + manifest creation, not the time of tag push. +- It removes only the tags matching the given `name_regex_delete` (or deprecated + `name_regex`), keeping any that match `name_regex_keep`. +- It never removes the tag named `latest`. +- It keeps N latest matching tags (if `keep_n` is specified). +- It only removes tags that are older than X amount of time (if `older_than` is + specified). +- It schedules the asynchronous job to be executed in the background. + +These operations are executed asynchronously and can take time to get executed. +You can run this at most once an hour for a given container repository. This +action doesn't delete blobs. To delete them and recycle disk space, [run the garbage collection](https://docs.gitlab.com/omnibus/maintenance/README.html#removing-unused-layers-not-referenced-by-manifests). NOTE: **Note:** -Since GitLab 12.4, individual tags are deleted. +In GitLab 12.4 and later, individual tags are deleted. For more details, see the [discussion](https://gitlab.com/gitlab-org/gitlab/-/issues/15737). Examples: diff --git a/doc/api/epics.md b/doc/api/epics.md index 91ea92c8589..5c7366c8457 100644 --- a/doc/api/epics.md +++ b/doc/api/epics.md @@ -267,6 +267,7 @@ POST /groups/:id/epics | `labels` | string | no | The comma separated list of labels | | `description` | string | no | The description of the epic. Limited to 1,048,576 characters. | | `confidential` | boolean | no | Whether the epic should be confidential | +| `created_at` | string | no | When the epic was created. Date time string, ISO 8601 formatted, for example `2016-03-11T03:45:40Z` . Requires administrator or project/group owner privileges ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/255309) in GitLab 13.5) | | `start_date_is_fixed` | boolean | no | Whether start date should be sourced from `start_date_fixed` or from milestones (since 11.3) | | `start_date_fixed` | string | no | The fixed start date of an epic (since 11.3) | | `due_date_is_fixed` | boolean | no | Whether due date should be sourced from `due_date_fixed` or from milestones (since 11.3) | @@ -349,6 +350,7 @@ PUT /groups/:id/epics/:epic_iid | `description` | string | no | The description of an epic. Limited to 1,048,576 characters. | | `confidential` | boolean | no | Whether the epic should be confidential | | `labels` | string | no | The comma separated list of labels | +| `updated_at` | string | no | When the epic was updated. Date time string, ISO 8601 formatted, for example `2016-03-11T03:45:40Z` . Requires administrator or project/group owner privileges ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/255309) in GitLab 13.5) | | `start_date_is_fixed` | boolean | no | Whether start date should be sourced from `start_date_fixed` or from milestones (since 11.3) | | `start_date_fixed` | string | no | The fixed start date of an epic (since 11.3) | | `due_date_is_fixed` | boolean | no | Whether due date should be sourced from `due_date_fixed` or from milestones (since 11.3) | @@ -422,10 +424,10 @@ DELETE /groups/:id/epics/:epic_iid curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/epics/5" ``` -## Create a to-do +## Create a to do -Manually creates a to-do for the current user on an epic. If -there already exists a to-do for the user on that epic, status code `304` is +Manually creates a to do for the current user on an epic. If +there already exists a to do for the user on that epic, status code `304` is returned. ```plaintext diff --git a/doc/api/experiments.md b/doc/api/experiments.md new file mode 100644 index 00000000000..66c444e54ce --- /dev/null +++ b/doc/api/experiments.md @@ -0,0 +1,40 @@ +--- +stage: Growth +group: Expansion +info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers +--- + +# Experiments API + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/262725) in GitLab 13.5. + +This API is for listing Experiments [experiment use in development of GitLab](../development/experiment_guide/index.md). + +All methods require user be a [GitLab team member](https://gitlab.com/groups/gitlab-com/-/group_members) for authorization. + +## List all experiments + +Get a list of all experiments, with its enabled status. + +```plaintext +GET /experiments +``` + +```shell +curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/experiments" +``` + +Example response: + +```json +[ + { + "key": "experiment_1", + "enabled": true + }, + { + "key": "experiment_2", + "enabled": false + } +] +``` diff --git a/doc/api/feature_flag_user_lists.md b/doc/api/feature_flag_user_lists.md index 460f3727819..b44cb1fb9f2 100644 --- a/doc/api/feature_flag_user_lists.md +++ b/doc/api/feature_flag_user_lists.md @@ -4,9 +4,10 @@ group: Progressive Delivery info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers --- -# Feature flag user lists API **(PREMIUM)** +# Feature flag user lists API **(CORE)** -> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/205409) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.10. +> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/205409) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.10. +> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212318) to GitLab Core in 13.5. API for accessing GitLab Feature Flag User Lists. diff --git a/doc/api/feature_flags.md b/doc/api/feature_flags.md index 1088154b599..fbda873f866 100644 --- a/doc/api/feature_flags.md +++ b/doc/api/feature_flags.md @@ -4,9 +4,11 @@ group: Progressive Delivery info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers --- -# Feature Flags API **(PREMIUM)** +# Feature Flags API **(CORE)** -> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9566) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.5. +> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9566) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.5. +> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212318) to [GitLab Starter](https://about.gitlab.com/pricing/) in 13.4. +> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212318) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.5. NOTE: **Note:** This API is behind a [feature flag](../operations/feature_flags.md#enable-or-disable-feature-flag-strategies). @@ -151,7 +153,7 @@ POST /projects/:id/feature_flags | `description` | string | no | The description of the feature flag. | | `active` | boolean | no | The active state of the flag. Defaults to true. [Supported](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/38350) in GitLab 13.3 and later. | | `strategies` | JSON | no | The feature flag [strategies](../operations/feature_flags.md#feature-flag-strategies). | -| `strategies:name` | JSON | no | The strategy name. | +| `strategies:name` | JSON | no | The strategy name. Can be `default`, `gradualRolloutUserId`, `userWithId`, or `gitlabUserList`. In [GitLab 13.5](https://gitlab.com/gitlab-org/gitlab/-/issues/36380) and later, can be [`flexibleRollout`](https://unleash.github.io/docs/activation_strategy#flexiblerollout). | | `strategies:parameters` | JSON | no | The strategy parameters. | | `strategies:scopes` | JSON | no | The scopes for the strategy. | | `strategies:scopes:environment_scope` | string | no | The environment spec for the scope. | diff --git a/doc/api/feature_flags_legacy.md b/doc/api/feature_flags_legacy.md index 175261b3a7b..a7c139a02ba 100644 --- a/doc/api/feature_flags_legacy.md +++ b/doc/api/feature_flags_legacy.md @@ -4,9 +4,11 @@ group: Progressive Delivery info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers --- -# Legacy Feature Flags API **(PREMIUM)** +# Legacy Feature Flags API **(CORE)** -> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9566) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.5. +> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9566) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.5. +> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212318) to [GitLab Starter](https://about.gitlab.com/pricing/) in 13.4. +> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212318) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.5. CAUTION: **Deprecation:** This API is deprecated and [scheduled for removal in GitLab 14.0](https://gitlab.com/gitlab-org/gitlab/-/issues/213369). Use [this API](feature_flags.md) instead. diff --git a/doc/api/geo_nodes.md b/doc/api/geo_nodes.md index 8d2052f7373..064bd26ee72 100644 --- a/doc/api/geo_nodes.md +++ b/doc/api/geo_nodes.md @@ -1,7 +1,7 @@ # Geo Nodes API **(PREMIUM ONLY)** -In order to interact with Geo node endpoints, you need to authenticate yourself -as an admin. +To interact with Geo node endpoints, you need to authenticate yourself as an +admin. ## Create a new Geo node @@ -460,12 +460,12 @@ Example response: "package_files_registry_count": 10, "package_files_synced_count": 6, "package_files_failed_count": 3, - "terraform_states_count": 10, - "terraform_states_checksummed_count": 10, - "terraform_states_checksum_failed_count": 0, - "terraform_states_registry_count": 10, - "terraform_states_synced_count": 6, - "terraform_states_failed_count": 3 + "terraform_state_versions_count": 10, + "terraform_state_versions_checksummed_count": 10, + "terraform_state_versions_checksum_failed_count": 0, + "terraform_state_versions_registry_count": 10, + "terraform_state_versions_synced_count": 6, + "terraform_state_versions_failed_count": 3, "snippet_repositories_count": 10, "snippet_repositories_checksummed_count": 10, "snippet_repositories_checksum_failed_count": 0, diff --git a/doc/api/graphql/reference/gitlab_schema.graphql b/doc/api/graphql/reference/gitlab_schema.graphql index 7f5ff04bcee..a44f8f70311 100644 --- a/doc/api/graphql/reference/gitlab_schema.graphql +++ b/doc/api/graphql/reference/gitlab_schema.graphql @@ -32,7 +32,7 @@ input AddAwardEmojiInput { """ The global id of the awardable resource """ - awardableId: ID! + awardableId: AwardableID! """ A unique identifier for the client performing the mutation. @@ -77,7 +77,7 @@ input AddProjectToSecurityDashboardInput { """ ID of the project to be added to Instance Security Dashboard """ - id: ID! + id: ProjectID! } """ @@ -115,6 +115,11 @@ input AdminSidekiqQueuesDeleteJobsInput { clientMutationId: String """ + Delete jobs matching feature_category in the context metadata + """ + featureCategory: String + + """ Delete jobs matching project in the context metadata """ project: String @@ -245,6 +250,11 @@ type AlertManagementAlert implements Noteable { endedAt: Time """ + Environment for the alert + """ + environment: Environment + + """ Number of events of this alert """ eventCount: Int @@ -435,6 +445,16 @@ Values for sorting alerts """ enum AlertManagementAlertSort { """ + Created at ascending order + """ + CREATED_ASC + + """ + Created at descending order + """ + CREATED_DESC + + """ Created time by ascending order """ CREATED_TIME_ASC @@ -495,6 +515,16 @@ enum AlertManagementAlertSort { STATUS_DESC """ + Updated at ascending order + """ + UPDATED_ASC + + """ + Updated at descending order + """ + UPDATED_DESC + + """ Created time by ascending order """ UPDATED_TIME_ASC @@ -507,22 +537,22 @@ enum AlertManagementAlertSort { """ Created at ascending order """ - created_asc + created_asc @deprecated(reason: "Use CREATED_ASC. Deprecated in 13.5") """ Created at descending order """ - created_desc + created_desc @deprecated(reason: "Use CREATED_DESC. Deprecated in 13.5") """ Updated at ascending order """ - updated_asc + updated_asc @deprecated(reason: "Use UPDATED_ASC. Deprecated in 13.5") """ Updated at descending order """ - updated_desc + updated_desc @deprecated(reason: "Use UPDATED_DESC. Deprecated in 13.5") } """ @@ -772,7 +802,7 @@ input AwardEmojiAddInput { """ The global id of the awardable resource """ - awardableId: ID! + awardableId: AwardableID! """ A unique identifier for the client performing the mutation. @@ -812,7 +842,7 @@ input AwardEmojiRemoveInput { """ The global id of the awardable resource """ - awardableId: ID! + awardableId: AwardableID! """ A unique identifier for the client performing the mutation. @@ -852,7 +882,7 @@ input AwardEmojiToggleInput { """ The global id of the awardable resource """ - awardableId: ID! + awardableId: AwardableID! """ A unique identifier for the client performing the mutation. @@ -890,6 +920,11 @@ type AwardEmojiTogglePayload { toggledOn: Boolean! } +""" +Identifier of Awardable +""" +scalar AwardableID + type BaseService implements Service { """ Indicates if the service is active @@ -1035,7 +1070,7 @@ type Board { Returns the last _n_ elements from the list. """ last: Int - ): EpicConnection + ): BoardEpicConnection """ Whether or not backlog list is hidden. @@ -1053,6 +1088,31 @@ type Board { id: ID! """ + Labels of the board + """ + labels( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): LabelConnection + + """ Lists of the board """ lists( @@ -1077,6 +1137,11 @@ type Board { id: ID """ + Filters applied when getting issue metadata in the board list + """ + issueFilters: BoardIssueInput + + """ Returns the last _n_ elements from the list. """ last: Int @@ -1134,6 +1199,484 @@ type BoardEdge { } """ +Represents an epic on an issue board +""" +type BoardEpic implements CurrentUserTodos & Noteable { + """ + Author of the epic + """ + author: User! + + """ + Children (sub-epics) of the epic + """ + children( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Filter epics by author + """ + authorUsername: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 13.5: Use timeframe.end + """ + endDate: Time + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + IID of the epic, e.g., "1" + """ + iid: ID + + """ + Filter epics by iid for autocomplete + """ + iidStartsWith: String + + """ + List of IIDs of epics, e.g., [1, 2] + """ + iids: [ID!] + + """ + Filter epics by labels + """ + labelName: [String!] + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter epics by milestone title, computed from epic's issues + """ + milestoneTitle: String + + """ + Search query for epic title or description + """ + search: String + + """ + List epics by sort order + """ + sort: EpicSort + + """ + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 13.5: Use + timeframe.start + """ + startDate: Time + + """ + Filter epics by state + """ + state: EpicState + + """ + List items overlapping the given timeframe + """ + timeframe: Timeframe + ): EpicConnection + + """ + Timestamp of when the epic was closed + """ + closedAt: Time + + """ + Indicates if the epic is confidential + """ + confidential: Boolean + + """ + Timestamp of when the epic was created + """ + createdAt: Time + + """ + Todos for the current user + """ + currentUserTodos( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + State of the todos + """ + state: TodoStateEnum + ): TodoConnection! + + """ + Number of open and closed descendant epics and issues + """ + descendantCounts: EpicDescendantCount + + """ + Total weight of open and closed issues in the epic and its descendants + """ + descendantWeightSum: EpicDescendantWeights + + """ + Description of the epic + """ + description: String + + """ + All discussions on this noteable + """ + discussions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DiscussionConnection! + + """ + Number of downvotes the epic has received + """ + downvotes: Int! + + """ + Due date of the epic + """ + dueDate: Time + + """ + Fixed due date of the epic + """ + dueDateFixed: Time + + """ + Inherited due date of the epic from milestones + """ + dueDateFromMilestones: Time + + """ + Indicates if the due date has been manually set + """ + dueDateIsFixed: Boolean + + """ + Group to which the epic belongs + """ + group: Group! + + """ + Indicates if the epic has children + """ + hasChildren: Boolean! + + """ + Indicates if the epic has direct issues + """ + hasIssues: Boolean! + + """ + Indicates if the epic has a parent epic + """ + hasParent: Boolean! + + """ + Current health status of the epic + """ + healthStatus: EpicHealthStatus + + """ + ID of the epic + """ + id: ID! + + """ + Internal ID of the epic + """ + iid: ID! + + """ + A list of issues associated with the epic + """ + issues( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): EpicIssueConnection + + """ + Labels assigned to the epic + """ + labels( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): LabelConnection + + """ + All notes on this noteable + """ + notes( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): NoteConnection! + + """ + Parent epic of the epic + """ + parent: Epic + + """ + List of participants for the epic + """ + participants( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserConnection + + """ + Internal reference of the epic. Returned in shortened format by default + """ + reference( + """ + Indicates if the reference should be returned in full + """ + full: Boolean = false + ): String! + + """ + URI path of the epic-issue relationship + """ + relationPath: String + + """ + The relative position of the epic in the epic tree + """ + relativePosition: Int + + """ + Start date of the epic + """ + startDate: Time + + """ + Fixed start date of the epic + """ + startDateFixed: Time + + """ + Inherited start date of the epic from milestones + """ + startDateFromMilestones: Time + + """ + Indicates if the start date has been manually set + """ + startDateIsFixed: Boolean + + """ + State of the epic + """ + state: EpicState! + + """ + Indicates the currently logged in user is subscribed to the epic + """ + subscribed: Boolean! + + """ + Title of the epic + """ + title: String + + """ + Timestamp of when the epic was updated + """ + updatedAt: Time + + """ + Number of upvotes the epic has received + """ + upvotes: Int! + + """ + Permissions for the current user on the resource + """ + userPermissions: EpicPermissions! + + """ + User preferences for the epic on the issue board + """ + userPreferences: BoardEpicUserPreferences + + """ + Web path of the epic + """ + webPath: String! + + """ + Web URL of the epic + """ + webUrl: String! +} + +""" +The connection type for BoardEpic. +""" +type BoardEpicConnection { + """ + A list of edges. + """ + edges: [BoardEpicEdge] + + """ + A list of nodes. + """ + nodes: [BoardEpic] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type BoardEpicEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: BoardEpic +} + +""" +Represents user preferences for a board epic +""" +type BoardEpicUserPreferences { + """ + Indicates epic should be displayed as collapsed + """ + collapsed: Boolean! +} + +""" Identifier of Board """ scalar BoardID @@ -1402,7 +1945,7 @@ input BoardListUpdateLimitMetricsInput { """ The global ID of the list. """ - listId: ID! + listId: ListID! """ The new maximum issue count limit. @@ -1479,6 +2022,11 @@ type BurnupChartDailyTotals { type CiGroup { """ + Detailed status of the group + """ + detailedStatus: DetailedStatus + + """ Jobs in group """ jobs( @@ -1551,6 +2099,11 @@ type CiGroupEdge { type CiJob { """ + Detailed status of the job + """ + detailedStatus: DetailedStatus + + """ Name of the job """ name: String @@ -1579,6 +2132,11 @@ type CiJob { """ last: Int ): CiJobConnection + + """ + Schedule for the build + """ + scheduledAt: Time } """ @@ -1623,6 +2181,11 @@ scalar CiPipelineID type CiStage { """ + Detailed status of the stage + """ + detailedStatus: DetailedStatus + + """ Group of jobs for the stage """ groups( @@ -1937,6 +2500,11 @@ Identifier of Clusters::AgentToken """ scalar ClustersAgentTokenID +""" +Identifier of Clusters::Cluster +""" +scalar ClustersClusterID + type Commit { """ Author of the commit @@ -2481,7 +3049,7 @@ input CreateAnnotationInput { """ The global id of the cluster to add an annotation to """ - clusterId: ID + clusterId: ClustersClusterID """ The path to a file defining the dashboard on which the annotation should be added @@ -2501,7 +3069,7 @@ input CreateAnnotationInput { """ The global id of the environment to add an annotation to """ - environmentId: ID + environmentId: EnvironmentID """ Timestamp indicating starting moment to which the annotation relates @@ -2530,6 +3098,71 @@ type CreateAnnotationPayload { } """ +Autogenerated input type of CreateBoard +""" +input CreateBoardInput { + """ + The ID of the user to be assigned to the board. + """ + assigneeId: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The group full path the board is associated with. + """ + groupPath: ID + + """ + The IDs of labels to be added to the board. + """ + labelIds: [ID!] + + """ + The ID of the milestone to be assigned to the board. + """ + milestoneId: ID + + """ + The board name. + """ + name: String + + """ + The project full path the board is associated with. + """ + projectPath: ID + + """ + The weight of the board. + """ + weight: Boolean +} + +""" +Autogenerated return type of CreateBoard +""" +type CreateBoardPayload { + """ + The board after mutation. + """ + board: Board + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Errors encountered during execution of the mutation. + """ + errors: [String!]! +} + +""" Autogenerated input type of CreateBranch """ input CreateBranchInput { @@ -2636,7 +3269,7 @@ input CreateDiffNoteInput { """ The global id of the resource to add a note to """ - noteableId: ID! + noteableId: NoteableID! """ The position of this note on a diff @@ -2766,7 +3399,7 @@ input CreateImageDiffNoteInput { """ The global id of the resource to add a note to """ - noteableId: ID! + noteableId: NoteableID! """ The position of this note on a diff @@ -2795,6 +3428,121 @@ type CreateImageDiffNotePayload { } """ +Autogenerated input type of CreateIssue +""" +input CreateIssueInput { + """ + The array of user IDs to assign to the issue + """ + assigneeIds: [UserID!] + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Indicates the issue is confidential + """ + confidential: Boolean + + """ + Timestamp when the issue was created. Available only for admins and project owners + """ + createdAt: Time + + """ + Description of the issue + """ + description: String + + """ + The ID of a discussion to resolve. Also pass `merge_request_to_resolve_discussions_of` + """ + discussionToResolve: String + + """ + Due date of the issue + """ + dueDate: ISO8601Date + + """ + The ID of an epic to associate the issue with + """ + epicId: EpicID + + """ + The desired health status + """ + healthStatus: HealthStatus + + """ + The IID (internal ID) of a project issue. Only admins and project owners can modify + """ + iid: Int + + """ + The IDs of labels to be added to the issue + """ + labelIds: [LabelID!] + + """ + Labels of the issue + """ + labels: [String!] + + """ + Indicates discussion is locked on the issue + """ + locked: Boolean + + """ + The IID of a merge request for which to resolve discussions + """ + mergeRequestToResolveDiscussionsOf: MergeRequestID + + """ + The ID of the milestone to assign to the issue. On update milestone will be removed if set to null + """ + milestoneId: MilestoneID + + """ + Project full path the issue is associated with + """ + projectPath: ID! + + """ + Title of the issue + """ + title: String! + + """ + The weight of the issue + """ + weight: Int +} + +""" +Autogenerated return type of CreateIssue +""" +type CreateIssuePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Errors encountered during execution of the mutation. + """ + errors: [String!]! + + """ + The issue after mutation + """ + issue: Issue +} + +""" Autogenerated input type of CreateIteration """ input CreateIterationInput { @@ -2876,12 +3624,12 @@ input CreateNoteInput { """ The global id of the discussion this note is in reply to """ - discussionId: ID + discussionId: DiscussionID """ The global id of the resource to add a note to """ - noteableId: ID! + noteableId: NoteableID! } """ @@ -2914,14 +3662,19 @@ input CreateRequirementInput { clientMutationId: String """ - The project full path the requirement is associated with + Description of the requirement + """ + description: String + + """ + Full project path the requirement is associated with """ projectPath: ID! """ Title of the requirement """ - title: String! + title: String } """ @@ -2939,7 +3692,7 @@ type CreateRequirementPayload { errors: [String!]! """ - The requirement after mutation + Requirement after mutation """ requirement: Requirement } @@ -3002,6 +3755,11 @@ type CreateSnippetPayload { The snippet after mutation """ snippet: Snippet + + """ + Indicates whether the operation returns a record detected as spam + """ + spam: Boolean } """ @@ -3133,6 +3891,11 @@ type DastOnDemandScanCreatePayload { enum DastScanTypeEnum { """ + Active DAST scan. This scan will make active attacks against the target site. + """ + ACTIVE + + """ Passive DAST scan. This scan will not make active attacks against the target site. """ PASSIVE @@ -3163,6 +3926,16 @@ type DastScannerProfile { profileName: String """ + Indicates the type of DAST scan that will run. Either a Passive Scan or an Active Scan. + """ + scanType: DastScanTypeEnum + + """ + Indicates if debug messages should be included in DAST console output. True to include the debug messages. + """ + showDebugMessages: Boolean! + + """ The maximum number of minutes allowed for the spider to traverse the site """ spiderTimeout: Int @@ -3171,6 +3944,13 @@ type DastScannerProfile { The maximum number of seconds allowed for the site under test to respond to a request """ targetTimeout: Int + + """ + Indicates if the AJAX spider should be used to crawl the target site. True to + run the AJAX spider in addition to the traditional spider, and false to run + only the traditional spider. + """ + useAjaxSpider: Boolean! } """ @@ -3213,6 +3993,16 @@ input DastScannerProfileCreateInput { profileName: String! """ + Indicates the type of DAST scan that will run. Either a Passive Scan or an Active Scan. + """ + scanType: DastScanTypeEnum = PASSIVE + + """ + Indicates if debug messages should be included in DAST console output. True to include the debug messages. + """ + showDebugMessages: Boolean = false + + """ The maximum number of minutes allowed for the spider to traverse the site. """ spiderTimeout: Int @@ -3221,6 +4011,13 @@ input DastScannerProfileCreateInput { The maximum number of seconds allowed for the site under test to respond to a request. """ targetTimeout: Int + + """ + Indicates if the AJAX spider should be used to crawl the target site. True to + run the AJAX spider in addition to the traditional spider, and false to run + only the traditional spider. + """ + useAjaxSpider: Boolean = false } """ @@ -3328,6 +4125,16 @@ input DastScannerProfileUpdateInput { profileName: String! """ + Indicates the type of DAST scan that will run. Either a Passive Scan or an Active Scan. + """ + scanType: DastScanTypeEnum + + """ + Indicates if debug messages should be included in DAST console output. True to include the debug messages. + """ + showDebugMessages: Boolean + + """ The maximum number of minutes allowed for the spider to traverse the site. """ spiderTimeout: Int! @@ -3336,6 +4143,13 @@ input DastScannerProfileUpdateInput { The maximum number of seconds allowed for the site under test to respond to a request. """ targetTimeout: Int! + + """ + Indicates if the AJAX spider should be used to crawl the target site. True to + run the AJAX spider in addition to the traditional spider, and false to run + only the traditional spider. + """ + useAjaxSpider: Boolean } """ @@ -3596,6 +4410,66 @@ enum DastSiteProfileValidationStatusEnum { } """ +Autogenerated input type of DastSiteTokenCreate +""" +input DastSiteTokenCreateInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The project the site token belongs to. + """ + fullPath: ID! + + """ + The URL of the target to be validated. + """ + targetUrl: String +} + +""" +Autogenerated return type of DastSiteTokenCreate +""" +type DastSiteTokenCreatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Errors encountered during execution of the mutation. + """ + errors: [String!]! + + """ + ID of the site token. + """ + id: DastSiteTokenID + + """ + The current validation status of the target. + """ + status: DastSiteProfileValidationStatusEnum + + """ + Token string. + """ + token: String +} + +""" +Identifier of DastSiteToken +""" +scalar DastSiteTokenID + +""" +Date represented in ISO 8601 +""" +scalar Date + +""" Autogenerated input type of DeleteAnnotation """ input DeleteAnnotationInput { @@ -3920,6 +4794,11 @@ A collection of designs """ type DesignCollection { """ + Copy state of the design collection + """ + copyState: DesignCollectionCopyState + + """ Find a specific design """ design( @@ -4047,6 +4926,26 @@ type DesignCollection { } """ +Copy state of a DesignCollection +""" +enum DesignCollectionCopyState { + """ + The DesignCollection encountered an error during a copy + """ + ERROR + + """ + The DesignCollection is being copied + """ + IN_PROGRESS + + """ + The DesignCollection has no copy in progress + """ + READY +} + +""" The connection type for Design. """ type DesignConnection { @@ -4471,6 +5370,41 @@ input DestroyBoardInput { } """ +Autogenerated input type of DestroyBoardList +""" +input DestroyBoardListInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Global ID of the list to destroy. Only label lists are accepted. + """ + listId: ListID! +} + +""" +Autogenerated return type of DestroyBoardList +""" +type DestroyBoardListPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Errors encountered during execution of the mutation. + """ + errors: [String!]! + + """ + The list after mutation. + """ + list: BoardList +} + +""" Autogenerated return type of DestroyBoard """ type DestroyBoardPayload { @@ -4502,7 +5436,7 @@ input DestroyNoteInput { """ The global id of the note to destroy """ - id: ID! + id: NoteID! } """ @@ -4562,44 +5496,49 @@ type DestroySnippetPayload { type DetailedStatus { """ - Path of the details for the pipeline status + Action information for the status. This includes method, button title, icon, path, and title + """ + action: StatusAction + + """ + Path of the details for the status """ - detailsPath: String! + detailsPath: String """ - Favicon of the pipeline status + Favicon of the status """ - favicon: String! + favicon: String """ - Group of the pipeline status + Group of the status """ - group: String! + group: String """ - Indicates if the pipeline status has further details + Indicates if the status has further details """ - hasDetails: Boolean! + hasDetails: Boolean """ - Icon of the pipeline status + Icon of the status """ - icon: String! + icon: String """ - Label of the pipeline status + Label of the status """ - label: String! + label: String """ - Text of the pipeline status + Text of the status """ - text: String! + text: String """ - Tooltip associated with the pipeline status + Tooltip associated with the status """ - tooltip: String! + tooltip: String } input DiffImagePositionInput { @@ -4915,6 +5854,11 @@ type DiscussionEdge { } """ +Identifier of Discussion +""" +scalar DiscussionID + +""" Autogenerated input type of DiscussionToggleResolve """ input DiscussionToggleResolveInput { @@ -4926,7 +5870,7 @@ input DiscussionToggleResolveInput { """ The global id of the discussion """ - id: ID! + id: DiscussionID! """ Will resolve the discussion when true, and unresolve the discussion when false @@ -4971,7 +5915,7 @@ input DismissVulnerabilityInput { """ ID of the vulnerability to be dismissed """ - id: ID! + id: VulnerabilityID! } """ @@ -5045,7 +5989,7 @@ type Environment { id: ID! """ - The most severe open alert for the environment. If multiple alerts have equal severity, the most recent is returned. + The most severe open alert for the environment. If multiple alerts have equal severity, the most recent is returned """ latestOpenedMostSevereAlert: AlertManagementAlert @@ -5065,6 +6009,12 @@ type Environment { name: String! """ + The path to the environment. Will always return null if + `expose_environment_path_in_alert_details` feature flag is disabled + """ + path: String + + """ State of the environment, for example: available/stopped """ state: String! @@ -5106,6 +6056,11 @@ type EnvironmentEdge { } """ +Identifier of Environment +""" +scalar EnvironmentID + +""" Represents an epic """ type Epic implements CurrentUserTodos & Noteable { @@ -5134,8 +6089,8 @@ type Epic implements CurrentUserTodos & Noteable { before: String """ - List items within a time frame where items.end_date is between startDate and - endDate parameters (startDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 13.5: Use timeframe.end """ endDate: Time @@ -5185,8 +6140,9 @@ type Epic implements CurrentUserTodos & Noteable { sort: EpicSort """ - List items within a time frame where items.start_date is between startDate - and endDate parameters (endDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 13.5: Use + timeframe.start """ startDate: Time @@ -5194,10 +6150,15 @@ type Epic implements CurrentUserTodos & Noteable { Filter epics by state """ state: EpicState + + """ + List items overlapping the given timeframe + """ + timeframe: Timeframe ): EpicConnection """ - Timestamp of the epic's closure + Timestamp of when the epic was closed """ closedAt: Time @@ -5207,7 +6168,7 @@ type Epic implements CurrentUserTodos & Noteable { confidential: Boolean """ - Timestamp of the epic's creation + Timestamp of when the epic was created """ createdAt: Time @@ -5502,7 +6463,7 @@ type Epic implements CurrentUserTodos & Noteable { title: String """ - Timestamp of the epic's last activity + Timestamp of when the epic was updated """ updatedAt: Time @@ -5967,6 +6928,11 @@ type EpicIssue implements CurrentUserTodos & Noteable { severity: IssuableSeverity """ + Timestamp of when the issue SLA expires. + """ + slaDueAt: Time + + """ State of the issue """ state: IssueState! @@ -6233,17 +7199,17 @@ input EpicTreeNodeFieldsInputType { """ The id of the epic_issue or issue that the actual epic or issue is switched with """ - adjacentReferenceId: ID + adjacentReferenceId: EpicTreeSortingID """ The id of the epic_issue or epic that is being moved """ - id: ID! + id: EpicTreeSortingID! """ ID of the new parent epic """ - newParentId: ID + newParentId: EpicID """ The type of the switch, after or before allowed @@ -6258,7 +7224,7 @@ input EpicTreeReorderInput { """ The id of the base epic of the tree """ - baseEpicId: ID! + baseEpicId: EpicID! """ A unique identifier for the client performing the mutation. @@ -6287,6 +7253,11 @@ type EpicTreeReorderPayload { } """ +Identifier of EpicTreeSorting +""" +scalar EpicTreeSortingID + +""" Epic ID wildcard values """ enum EpicWildcardId { @@ -6328,6 +7299,36 @@ type GeoNode { internalUrl: String """ + Find merge request diff registries on this Geo node + """ + mergeRequestDiffRegistries( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Filters registries by their ID + """ + ids: [ID!] + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): MergeRequestDiffRegistryConnection + + """ The interval (in days) in which the repository verification is valid. Once expired, it will be reverified """ minimumReverificationInterval: Int @@ -6418,10 +7419,9 @@ type GeoNode { syncObjectStorage: Boolean """ - Find terraform state registries on this Geo node. Available only when feature - flag `geo_terraform_state_replication` is enabled + Find terraform state version registries on this Geo node """ - terraformStateRegistries( + terraformStateVersionRegistries( """ Returns the elements in the list that come after the specified cursor. """ @@ -6446,7 +7446,7 @@ type GeoNode { Returns the last _n_ elements from the list. """ last: Int - ): TerraformStateRegistryConnection + ): TerraformStateVersionRegistryConnection """ The user-facing URL for this Geo node @@ -6493,6 +7493,16 @@ type GrafanaIntegration { type Group { """ + Size limit for repositories in the namespace in bytes + """ + actualRepositorySizeLimit: Float + + """ + Additional storage purchased for the root namespace in bytes + """ + additionalPurchasedStorageSize: Float + + """ Indicates whether Auto DevOps is enabled for all projects within this group """ autoDevopsEnabled: Boolean @@ -6507,9 +7517,9 @@ type Group { """ board( """ - Find a board by its ID + The board's ID """ - id: ID + id: BoardID! ): Board """ @@ -6543,6 +7553,11 @@ type Group { ): BoardConnection """ + Includes at least one project where the repository size exceeds the limit + """ + containsLockedProjects: Boolean! + + """ Description of the namespace """ description: String @@ -6567,8 +7582,8 @@ type Group { authorUsername: String """ - List items within a time frame where items.end_date is between startDate and - endDate parameters (startDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 13.5: Use timeframe.end """ endDate: Time @@ -6608,8 +7623,9 @@ type Group { sort: EpicSort """ - List items within a time frame where items.start_date is between startDate - and endDate parameters (endDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 13.5: Use + timeframe.start """ startDate: Time @@ -6617,6 +7633,11 @@ type Group { Filter epics by state """ state: EpicState + + """ + List items overlapping the given timeframe + """ + timeframe: Timeframe ): Epic """ @@ -6639,8 +7660,8 @@ type Group { before: String """ - List items within a time frame where items.end_date is between startDate and - endDate parameters (startDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 13.5: Use timeframe.end """ endDate: Time @@ -6690,8 +7711,9 @@ type Group { sort: EpicSort """ - List items within a time frame where items.start_date is between startDate - and endDate parameters (endDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 13.5: Use + timeframe.start """ startDate: Time @@ -6699,6 +7721,11 @@ type Group { Filter epics by state """ state: EpicState + + """ + List items overlapping the given timeframe + """ + timeframe: Timeframe ): EpicConnection """ @@ -6762,7 +7789,7 @@ type Group { isTemporaryStorageIncreaseEnabled: Boolean! """ - Issues of the group + Issues for projects in this group """ issues( """ @@ -6781,6 +7808,16 @@ type Group { assigneeUsername: String """ + Usernames of users assigned to the issue + """ + assigneeUsernames: [String!] + + """ + Username of the author of the issue + """ + authorUsername: String + + """ Returns the elements in the list that come before the specified cursor. """ before: String @@ -6821,7 +7858,7 @@ type Group { iids: [String!] """ - Include issues belonging to subgroups. + Include issues belonging to subgroups """ includeSubgroups: Boolean = false @@ -6891,8 +7928,8 @@ type Group { before: String """ - List items within a time frame where items.end_date is between startDate and - endDate parameters (startDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 13.5: Use timeframe.end """ endDate: Time @@ -6922,8 +7959,9 @@ type Group { last: Int """ - List items within a time frame where items.start_date is between startDate - and endDate parameters (endDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 13.5: Use + timeframe.start """ startDate: Time @@ -6933,6 +7971,11 @@ type Group { state: IterationState """ + List items overlapping the given timeframe + """ + timeframe: Timeframe + + """ Fuzzy search by title """ title: String @@ -6989,6 +8032,91 @@ type Group { mentionsDisabled: Boolean """ + Merge requests for projects in this group + """ + mergeRequests( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Username of the assignee + """ + assigneeUsername: String + + """ + Username of the author + """ + authorUsername: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Array of IIDs of merge requests, for example `[1, 2]` + """ + iids: [String!] + + """ + Include merge requests belonging to subgroups + """ + includeSubgroups: Boolean = false + + """ + Array of label names. All resolved merge requests will have all of these labels. + """ + labels: [String!] + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Merge requests merged after this date + """ + mergedAfter: Time + + """ + Merge requests merged before this date + """ + mergedBefore: Time + + """ + Title of the milestone + """ + milestoneTitle: String + + """ + Sort merge requests by this criteria + """ + sort: MergeRequestSort = created_desc + + """ + Array of source branch names. All resolved merge requests will have one of these branches as their source. + """ + sourceBranches: [String!] + + """ + A merge request state. If provided, all resolved merge requests will have this state. + """ + state: MergeRequestState + + """ + Array of target branch names. All resolved merge requests will have one of these branches as their target. + """ + targetBranches: [String!] + ): MergeRequestConnection + + """ Milestones of the group """ milestones( @@ -7003,8 +8131,13 @@ type Group { before: String """ - List items within a time frame where items.end_date is between startDate and - endDate parameters (startDate parameter must be present) + A date that the milestone contains + """ + containingDate: Time + + """ + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 13.5: Use timeframe.end """ endDate: Time @@ -7029,8 +8162,14 @@ type Group { last: Int """ - List items within a time frame where items.start_date is between startDate - and endDate parameters (endDate parameter must be present) + A search string for the title + """ + searchTitle: String + + """ + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 13.5: Use + timeframe.start """ startDate: Time @@ -7038,6 +8177,16 @@ type Group { Filter milestones by state """ state: MilestoneStateEnum + + """ + List items overlapping the given timeframe + """ + timeframe: Timeframe + + """ + The title of the milestone + """ + title: String ): MilestoneConnection """ @@ -7106,6 +8255,11 @@ type Group { ): ProjectConnection! """ + Number of projects in the root namespace where the repository size exceeds the limit + """ + repositorySizeExcessProjectCount: Int! + + """ Indicates if users can request access to namespace """ requestAccessEnabled: Boolean @@ -7186,6 +8340,16 @@ type Group { ): TimelogConnection! """ + Total repository size of all projects in the root namespace in bytes + """ + totalRepositorySize: Float + + """ + Total excess repository size of all projects in the root namespace in bytes + """ + totalRepositorySizeExcess: Float + + """ Time before two-factor authentication is enforced """ twoFactorGracePeriod: Int @@ -7962,6 +9126,11 @@ type Issue implements CurrentUserTodos & Noteable { severity: IssuableSeverity """ + Timestamp of when the issue SLA expires. + """ + slaDueAt: Time + + """ State of the issue """ state: IssueState! @@ -8088,6 +9257,31 @@ Identifier of Issue scalar IssueID """ +Autogenerated input type of IssueMove +""" +input IssueMoveInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The IID of the issue to mutate + """ + iid: String! + + """ + The project the issue to mutate is in + """ + projectPath: ID! + + """ + The project to move the issue to + """ + targetProjectPath: ID! +} + +""" Autogenerated input type of IssueMoveList """ input IssueMoveListInput { @@ -8158,6 +9352,26 @@ type IssueMoveListPayload { } """ +Autogenerated return type of IssueMove +""" +type IssueMovePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Errors encountered during execution of the mutation. + """ + errors: [String!]! + + """ + The issue after mutation + """ + issue: Issue +} + +""" Check permissions for the current user on a issue """ type IssuePermissions { @@ -8404,7 +9618,7 @@ input IssueSetIterationInput { """ The iteration to assign to the issue. """ - iterationId: ID + iterationId: IterationID """ The project the issue to mutate is in @@ -8617,6 +9831,16 @@ Values for sorting issues """ enum IssueSort { """ + Created at ascending order + """ + CREATED_ASC + + """ + Created at descending order + """ + CREATED_DESC + + """ Due date by ascending order """ DUE_DATE_ASC @@ -8657,11 +9881,41 @@ enum IssueSort { PRIORITY_DESC """ + Published issues shown last + """ + PUBLISHED_ASC + + """ + Published issues shown first + """ + PUBLISHED_DESC + + """ Relative position by ascending order """ RELATIVE_POSITION_ASC """ + Severity from less critical to more critical + """ + SEVERITY_ASC + + """ + Severity from more critical to less critical + """ + SEVERITY_DESC + + """ + Updated at ascending order + """ + UPDATED_ASC + + """ + Updated at descending order + """ + UPDATED_DESC + + """ Weight by ascending order """ WEIGHT_ASC @@ -8674,22 +9928,22 @@ enum IssueSort { """ Created at ascending order """ - created_asc + created_asc @deprecated(reason: "Use CREATED_ASC. Deprecated in 13.5") """ Created at descending order """ - created_desc + created_desc @deprecated(reason: "Use CREATED_DESC. Deprecated in 13.5") """ Updated at ascending order """ - updated_asc + updated_asc @deprecated(reason: "Use UPDATED_ASC. Deprecated in 13.5") """ Updated at descending order """ - updated_desc + updated_desc @deprecated(reason: "Use UPDATED_DESC. Deprecated in 13.5") } """ @@ -8703,6 +9957,21 @@ enum IssueState { } """ +Values for issue state events +""" +enum IssueStateEvent { + """ + Closes the issue + """ + CLOSE + + """ + Reopens the issue + """ + REOPEN +} + +""" Represents total number of issues for the represented statuses """ type IssueStatusCountsType { @@ -9215,6 +10484,11 @@ The connection type for Label. """ type LabelConnection { """ + Total count of collection + """ + count: Int! + + """ A list of edges. """ edges: [LabelEdge] @@ -9251,6 +10525,11 @@ Identifier of Label scalar LabelID """ +Identifier of List +""" +scalar ListID + +""" List limit metric setting """ enum ListLimitMetric { @@ -9319,6 +10598,26 @@ enum MeasurementIdentifier { PIPELINES """ + Pipeline count with canceled status + """ + PIPELINES_CANCELED + + """ + Pipeline count with failed status + """ + PIPELINES_FAILED + + """ + Pipeline count with skipped status + """ + PIPELINES_SKIPPED + + """ + Pipeline count with success status + """ + PIPELINES_SUCCEEDED + + """ Project count """ PROJECTS @@ -10019,6 +11318,86 @@ type MergeRequestCreatePayload { } """ +Represents the Geo sync and verification state of a Merge Request diff +""" +type MergeRequestDiffRegistry { + """ + Timestamp when the MergeRequestDiffRegistry was created + """ + createdAt: Time + + """ + ID of the MergeRequestDiffRegistry + """ + id: ID! + + """ + Error message during sync of the MergeRequestDiffRegistry + """ + lastSyncFailure: String + + """ + Timestamp of the most recent successful sync of the MergeRequestDiffRegistry + """ + lastSyncedAt: Time + + """ + ID of the Merge Request diff + """ + mergeRequestDiffId: ID! + + """ + Timestamp after which the MergeRequestDiffRegistry should be resynced + """ + retryAt: Time + + """ + Number of consecutive failed sync attempts of the MergeRequestDiffRegistry + """ + retryCount: Int + + """ + Sync state of the MergeRequestDiffRegistry + """ + state: RegistryState +} + +""" +The connection type for MergeRequestDiffRegistry. +""" +type MergeRequestDiffRegistryConnection { + """ + A list of edges. + """ + edges: [MergeRequestDiffRegistryEdge] + + """ + A list of nodes. + """ + nodes: [MergeRequestDiffRegistry] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type MergeRequestDiffRegistryEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: MergeRequestDiffRegistry +} + +""" An edge in a connection. """ type MergeRequestEdge { @@ -10034,6 +11413,11 @@ type MergeRequestEdge { } """ +Identifier of MergeRequest +""" +scalar MergeRequestID + +""" Check permissions for the current user on a merge request """ type MergeRequestPermissions { @@ -10245,7 +11629,7 @@ input MergeRequestSetMilestoneInput { """ The milestone to assign to the merge request. """ - milestoneId: ID + milestoneId: MilestoneID """ The project the merge request to mutate is in @@ -10368,6 +11752,16 @@ Values for sorting merge requests """ enum MergeRequestSort { """ + Created at ascending order + """ + CREATED_ASC + + """ + Created at descending order + """ + CREATED_DESC + + """ Label priority by ascending order """ LABEL_PRIORITY_ASC @@ -10408,24 +11802,34 @@ enum MergeRequestSort { PRIORITY_DESC """ + Updated at ascending order + """ + UPDATED_ASC + + """ + Updated at descending order + """ + UPDATED_DESC + + """ Created at ascending order """ - created_asc + created_asc @deprecated(reason: "Use CREATED_ASC. Deprecated in 13.5") """ Created at descending order """ - created_desc + created_desc @deprecated(reason: "Use CREATED_DESC. Deprecated in 13.5") """ Updated at ascending order """ - updated_asc + updated_asc @deprecated(reason: "Use UPDATED_ASC. Deprecated in 13.5") """ Updated at descending order """ - updated_desc + updated_desc @deprecated(reason: "Use UPDATED_DESC. Deprecated in 13.5") } """ @@ -10783,11 +12187,13 @@ type Mutation { configureSast(input: ConfigureSastInput!): ConfigureSastPayload createAlertIssue(input: CreateAlertIssueInput!): CreateAlertIssuePayload createAnnotation(input: CreateAnnotationInput!): CreateAnnotationPayload + createBoard(input: CreateBoardInput!): CreateBoardPayload createBranch(input: CreateBranchInput!): CreateBranchPayload createClusterAgent(input: CreateClusterAgentInput!): CreateClusterAgentPayload createDiffNote(input: CreateDiffNoteInput!): CreateDiffNotePayload createEpic(input: CreateEpicInput!): CreateEpicPayload createImageDiffNote(input: CreateImageDiffNoteInput!): CreateImageDiffNotePayload + createIssue(input: CreateIssueInput!): CreateIssuePayload createIteration(input: CreateIterationInput!): CreateIterationPayload createNote(input: CreateNoteInput!): CreateNotePayload createRequirement(input: CreateRequirementInput!): CreateRequirementPayload @@ -10800,11 +12206,13 @@ type Mutation { dastSiteProfileCreate(input: DastSiteProfileCreateInput!): DastSiteProfileCreatePayload dastSiteProfileDelete(input: DastSiteProfileDeleteInput!): DastSiteProfileDeletePayload dastSiteProfileUpdate(input: DastSiteProfileUpdateInput!): DastSiteProfileUpdatePayload + dastSiteTokenCreate(input: DastSiteTokenCreateInput!): DastSiteTokenCreatePayload deleteAnnotation(input: DeleteAnnotationInput!): DeleteAnnotationPayload designManagementDelete(input: DesignManagementDeleteInput!): DesignManagementDeletePayload designManagementMove(input: DesignManagementMoveInput!): DesignManagementMovePayload designManagementUpload(input: DesignManagementUploadInput!): DesignManagementUploadPayload destroyBoard(input: DestroyBoardInput!): DestroyBoardPayload + destroyBoardList(input: DestroyBoardListInput!): DestroyBoardListPayload destroyNote(input: DestroyNoteInput!): DestroyNotePayload destroySnippet(input: DestroySnippetInput!): DestroySnippetPayload @@ -10812,10 +12220,11 @@ type Mutation { Toggles the resolved state of a discussion """ discussionToggleResolve(input: DiscussionToggleResolveInput!): DiscussionToggleResolvePayload - dismissVulnerability(input: DismissVulnerabilityInput!): DismissVulnerabilityPayload + dismissVulnerability(input: DismissVulnerabilityInput!): DismissVulnerabilityPayload @deprecated(reason: "Use vulnerabilityDismiss. Deprecated in 13.5") epicAddIssue(input: EpicAddIssueInput!): EpicAddIssuePayload epicSetSubscription(input: EpicSetSubscriptionInput!): EpicSetSubscriptionPayload epicTreeReorder(input: EpicTreeReorderInput!): EpicTreeReorderPayload + issueMove(input: IssueMoveInput!): IssueMovePayload issueMoveList(input: IssueMoveListInput!): IssueMoveListPayload issueSetAssignees(input: IssueSetAssigneesInput!): IssueSetAssigneesPayload issueSetConfidential(input: IssueSetConfidentialInput!): IssueSetConfidentialPayload @@ -10847,6 +12256,7 @@ type Mutation { pipelineRetry(input: PipelineRetryInput!): PipelineRetryPayload removeAwardEmoji(input: RemoveAwardEmojiInput!): RemoveAwardEmojiPayload @deprecated(reason: "Use awardEmojiRemove. Deprecated in 13.2") removeProjectFromSecurityDashboard(input: RemoveProjectFromSecurityDashboardInput!): RemoveProjectFromSecurityDashboardPayload + revertVulnerabilityToDetected(input: RevertVulnerabilityToDetectedInput!): RevertVulnerabilityToDetectedPayload @deprecated(reason: "Use vulnerabilityRevertToDetected. Deprecated in 13.5") runDastScan(input: RunDASTScanInput!): RunDASTScanPayload @deprecated(reason: "Use DastOnDemandScanCreate. Deprecated in 13.4") todoMarkDone(input: TodoMarkDoneInput!): TodoMarkDonePayload todoRestore(input: TodoRestoreInput!): TodoRestorePayload @@ -10855,6 +12265,7 @@ type Mutation { toggleAwardEmoji(input: ToggleAwardEmojiInput!): ToggleAwardEmojiPayload @deprecated(reason: "Use awardEmojiToggle. Deprecated in 13.2") updateAlertStatus(input: UpdateAlertStatusInput!): UpdateAlertStatusPayload updateBoard(input: UpdateBoardInput!): UpdateBoardPayload + updateBoardEpicUserPreferences(input: UpdateBoardEpicUserPreferencesInput!): UpdateBoardEpicUserPreferencesPayload updateBoardList(input: UpdateBoardListInput!): UpdateBoardListPayload updateContainerExpirationPolicy(input: UpdateContainerExpirationPolicyInput!): UpdateContainerExpirationPolicyPayload updateEpic(input: UpdateEpicInput!): UpdateEpicPayload @@ -10875,7 +12286,10 @@ type Mutation { updateNote(input: UpdateNoteInput!): UpdateNotePayload updateRequirement(input: UpdateRequirementInput!): UpdateRequirementPayload updateSnippet(input: UpdateSnippetInput!): UpdateSnippetPayload + vulnerabilityConfirm(input: VulnerabilityConfirmInput!): VulnerabilityConfirmPayload + vulnerabilityDismiss(input: VulnerabilityDismissInput!): VulnerabilityDismissPayload vulnerabilityResolve(input: VulnerabilityResolveInput!): VulnerabilityResolvePayload + vulnerabilityRevertToDetected(input: VulnerabilityRevertToDetectedInput!): VulnerabilityRevertToDetectedPayload } """ @@ -10900,6 +12314,21 @@ enum MutationOperationMode { type Namespace { """ + Size limit for repositories in the namespace in bytes + """ + actualRepositorySizeLimit: Float + + """ + Additional storage purchased for the root namespace in bytes + """ + additionalPurchasedStorageSize: Float + + """ + Includes at least one project where the repository size exceeds the limit + """ + containsLockedProjects: Boolean! + + """ Description of the namespace """ description: String @@ -10990,6 +12419,11 @@ type Namespace { ): ProjectConnection! """ + Number of projects in the root namespace where the repository size exceeds the limit + """ + repositorySizeExcessProjectCount: Int! + + """ Indicates if users can request access to namespace """ requestAccessEnabled: Boolean @@ -11010,6 +12444,16 @@ type Namespace { temporaryStorageIncreaseEndsOn: Time """ + Total repository size of all projects in the root namespace in bytes + """ + totalRepositorySize: Float + + """ + Total excess repository size of all projects in the root namespace in bytes + """ + totalRepositorySizeExcess: Float + + """ Visibility of the namespace """ visibility: String @@ -11051,6 +12495,11 @@ type NamespaceEdge { } """ +Identifier of Namespace +""" +scalar NamespaceID + +""" Autogenerated input type of NamespaceIncreaseStorageTemporarily """ input NamespaceIncreaseStorageTemporarilyInput { @@ -11062,7 +12511,7 @@ input NamespaceIncreaseStorageTemporarilyInput { """ The global id of the namespace to mutate """ - id: ID! + id: NamespaceID! } """ @@ -11259,6 +12708,11 @@ type NoteEdge { node: Note } +""" +Identifier of Note +""" +scalar NoteID + type NotePermissions { """ Indicates the user can perform `admin_note` on this resource @@ -11339,6 +12793,11 @@ interface Noteable { } """ +Identifier of Noteable +""" +scalar NoteableID + +""" Represents a package """ type Package { @@ -11409,7 +12868,7 @@ type PackageEdge { } """ -Represents the sync and verification state of a package file +Represents the Geo sync and verification state of a package file """ type PackageFileRegistry { """ @@ -11490,37 +12949,47 @@ type PackageFileRegistryEdge { enum PackageTypeEnum { """ - Packages from the composer package manager + Packages from the Composer package manager """ COMPOSER """ - Packages from the conan package manager + Packages from the Conan package manager """ CONAN """ - Packages from the generic package manager + Packages from the Debian package manager + """ + DEBIAN + + """ + Packages from the Generic package manager """ GENERIC """ - Packages from the maven package manager + Packages from the Golang package manager + """ + GOLANG + + """ + Packages from the Maven package manager """ MAVEN """ - Packages from the npm package manager + Packages from the NPM package manager """ NPM """ - Packages from the nuget package manager + Packages from the Nuget package manager """ NUGET """ - Packages from the pypi package manager + Packages from the PyPI package manager """ PYPI } @@ -11854,10 +13323,20 @@ enum PipelineStatusEnum { type Project { """ + Size limit for the repository in bytes + """ + actualRepositorySizeLimit: Float + + """ A single Alert Management alert of the project """ alertManagementAlert( """ + Username of a user assigned to the issue + """ + assigneeUsername: String + + """ IID of the alert. For example, "1" """ iid: String @@ -11883,6 +13362,11 @@ type Project { """ alertManagementAlertStatusCounts( """ + Username of a user assigned to the issue + """ + assigneeUsername: String + + """ Search criteria for filtering alerts. This will search on title, description, service, monitoring_tool. """ search: String @@ -11898,6 +13382,11 @@ type Project { after: String """ + Username of a user assigned to the issue + """ + assigneeUsername: String + + """ Returns the elements in the list that come before the specified cursor. """ before: String @@ -11959,9 +13448,9 @@ type Project { """ board( """ - Find a board by its ID + The board's ID """ - id: ID + id: BoardID! ): Board """ @@ -12249,6 +13738,16 @@ type Project { assigneeUsername: String """ + Usernames of users assigned to the issue + """ + assigneeUsernames: [String!] + + """ + Username of the author of the issue + """ + authorUsername: String + + """ Issues closed after this date """ closedAfter: Time @@ -12339,6 +13838,16 @@ type Project { assigneeUsername: String """ + Usernames of users assigned to the issue + """ + assigneeUsernames: [String!] + + """ + Username of the author of the issue + """ + authorUsername: String + + """ Issues closed after this date """ closedAfter: Time @@ -12419,6 +13928,16 @@ type Project { assigneeUsername: String """ + Usernames of users assigned to the issue + """ + assigneeUsernames: [String!] + + """ + Username of the author of the issue + """ + authorUsername: String + + """ Returns the elements in the list that come before the specified cursor. """ before: String @@ -12529,8 +14048,8 @@ type Project { before: String """ - List items within a time frame where items.end_date is between startDate and - endDate parameters (startDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 13.5: Use timeframe.end """ endDate: Time @@ -12560,8 +14079,9 @@ type Project { last: Int """ - List items within a time frame where items.start_date is between startDate - and endDate parameters (endDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 13.5: Use + timeframe.start """ startDate: Time @@ -12571,6 +14091,11 @@ type Project { state: IterationState """ + List items overlapping the given timeframe + """ + timeframe: Timeframe + + """ Fuzzy search by title """ title: String @@ -12778,8 +14303,13 @@ type Project { before: String """ - List items within a time frame where items.end_date is between startDate and - endDate parameters (startDate parameter must be present) + A date that the milestone contains + """ + containingDate: Time + + """ + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 13.5: Use timeframe.end """ endDate: Time @@ -12804,8 +14334,14 @@ type Project { last: Int """ - List items within a time frame where items.start_date is between startDate - and endDate parameters (endDate parameter must be present) + A search string for the title + """ + searchTitle: String + + """ + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 13.5: Use + timeframe.start """ startDate: Time @@ -12813,6 +14349,16 @@ type Project { Filter milestones by state """ state: MilestoneStateEnum + + """ + List items overlapping the given timeframe + """ + timeframe: Timeframe + + """ + The title of the milestone + """ + title: String ): MilestoneConnection """ @@ -13012,12 +14558,17 @@ type Project { repository: Repository """ + Size of repository that exceeds the limit in bytes + """ + repositorySizeExcess: Float + + """ Indicates if users can request member access to the project """ requestAccessEnabled: Boolean """ - Find a single requirement. Available only when feature flag `requirements_management` is enabled. + Find a single requirement """ requirement( """ @@ -13057,7 +14608,7 @@ type Project { requirementStatesCount: RequirementStatesCount """ - Find requirements. Available only when feature flag `requirements_management` is enabled. + Find requirements """ requirements( """ @@ -13257,6 +14808,31 @@ type Project { tagList: String """ + Terraform states associated with the project + """ + terraformStates( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): TerraformStateConnection + + """ Permissions for the current user on the resource """ userPermissions: ProjectPermissions! @@ -13468,6 +15044,11 @@ type ProjectEdge { } """ +Identifier of Project +""" +scalar ProjectID + +""" Represents a Project Membership """ type ProjectMember implements MemberInterface { @@ -14001,9 +15582,44 @@ type Query { Search query for project name, path, or description """ search: String + + """ + Include namespace in project search + """ + searchNamespaces: Boolean + + """ + Sort order of results + """ + sort: String ): ProjectConnection """ + Supported runner platforms + """ + runnerPlatforms( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): RunnerPlatformConnection + + """ Find Snippets visible to the current user """ snippets( @@ -14249,6 +15865,16 @@ type Query { """ startDate: ISO8601Date! ): VulnerabilitiesCountByDayAndSeverityConnection @deprecated(reason: "Use `vulnerabilitiesCountByDay`. Deprecated in 13.3") + + """ + Find a vulnerability + """ + vulnerability( + """ + The Global ID of the Vulnerability + """ + id: VulnerabilityID! + ): Vulnerability } """ @@ -14725,7 +16351,7 @@ input RemoveAwardEmojiInput { """ The global id of the awardable resource """ - awardableId: ID! + awardableId: AwardableID! """ A unique identifier for the client performing the mutation. @@ -14770,7 +16396,7 @@ input RemoveProjectFromSecurityDashboardInput { """ ID of the project to remove from the Instance Security Dashboard """ - id: ID! + id: ProjectID! } """ @@ -14840,6 +16466,16 @@ type Requirement { createdAt: Time! """ + Description of the requirement + """ + description: String + + """ + The GitLab Flavored Markdown rendering of `description` + """ + descriptionHtml: String + + """ ID of the requirement """ id: ID! @@ -14850,6 +16486,11 @@ type Requirement { iid: ID! """ + Indicates if latest test report was created by user + """ + lastTestReportManuallyCreated: Boolean + + """ Latest requirement test report state """ lastTestReportState: TestReportState @@ -14900,6 +16541,11 @@ type Requirement { title: String """ + The GitLab Flavored Markdown rendering of `title` + """ + titleHtml: String + + """ Timestamp of when the requirement was last updated """ updatedAt: Time! @@ -15020,6 +16666,41 @@ interface ResolvableInterface { resolvedBy: User } +""" +Autogenerated input type of RevertVulnerabilityToDetected +""" +input RevertVulnerabilityToDetectedInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the vulnerability to be reverted + """ + id: VulnerabilityID! +} + +""" +Autogenerated return type of RevertVulnerabilityToDetected +""" +type RevertVulnerabilityToDetectedPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Errors encountered during execution of the mutation. + """ + errors: [String!]! + + """ + The vulnerability after revert + """ + vulnerability: Vulnerability +} + type RootStorageStatistics { """ The CI artifacts size in bytes @@ -15037,6 +16718,11 @@ type RootStorageStatistics { packagesSize: Float! """ + The CI pipeline artifacts size in bytes + """ + pipelineArtifactsSize: Float! + + """ The Git repository size in bytes """ repositorySize: Float! @@ -15107,6 +16793,125 @@ type RunDASTScanPayload { pipelineUrl: String } +type RunnerArchitecture { + """ + Download location for the runner for the platform architecture + """ + downloadLocation: String! + + """ + Name of the runner platform architecture + """ + name: String! +} + +""" +The connection type for RunnerArchitecture. +""" +type RunnerArchitectureConnection { + """ + A list of edges. + """ + edges: [RunnerArchitectureEdge] + + """ + A list of nodes. + """ + nodes: [RunnerArchitecture] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type RunnerArchitectureEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: RunnerArchitecture +} + +type RunnerPlatform { + """ + Runner architectures supported for the platform + """ + architectures( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): RunnerArchitectureConnection + + """ + Human readable name of the runner platform + """ + humanReadableName: String! + + """ + Name slug of the runner platform + """ + name: String! +} + +""" +The connection type for RunnerPlatform. +""" +type RunnerPlatformConnection { + """ + A list of edges. + """ + edges: [RunnerPlatformEdge] + + """ + A list of nodes. + """ + nodes: [RunnerPlatform] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type RunnerPlatformEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: RunnerPlatform +} + """ Represents a CI configuration of SAST """ @@ -15273,6 +17078,26 @@ type SastCiConfigurationAnalyzersEntityEdge { } """ +Represents the analyzers entity in SAST CI configuration +""" +input SastCiConfigurationAnalyzersEntityInput { + """ + State of the analyzer + """ + enabled: Boolean! + + """ + Name of analyzer + """ + name: String! + + """ + List of variables for the analyzer + """ + variables: [SastCiConfigurationEntityInput!] +} + +""" Represents an entity in SAST CI configuration """ type SastCiConfigurationEntity { @@ -15397,6 +17222,11 @@ Represents a CI configuration of SAST """ input SastCiConfigurationInput { """ + List of analyzers and related variables for the SAST configuration + """ + analyzers: [SastCiConfigurationAnalyzersEntityInput!] + + """ List of global entities related to SAST configuration """ global: [SastCiConfigurationEntityInput!] @@ -15521,6 +17351,11 @@ Represents summary of a security report """ type SecurityReportSummary { """ + Aggregated counts for the api_fuzzing scan + """ + apiFuzzing: SecurityReportSummarySection + + """ Aggregated counts for the container_scanning scan """ containerScanning: SecurityReportSummarySection @@ -15600,6 +17435,7 @@ type SecurityReportSummarySection { The type of the security scanner """ enum SecurityScannerType { + API_FUZZING CONTAINER_SCANNING COVERAGE_FUZZING DAST @@ -16183,7 +18019,32 @@ type Snippet implements Noteable { """ Snippet blobs """ - blobs: [SnippetBlob!]! + blobs( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Paths of the blobs + """ + paths: [String!] + ): SnippetBlobConnection """ Timestamp this snippet was created @@ -16407,6 +18268,41 @@ input SnippetBlobActionInputType { } """ +The connection type for SnippetBlob. +""" +type SnippetBlobConnection { + """ + A list of edges. + """ + edges: [SnippetBlobEdge] + + """ + A list of nodes. + """ + nodes: [SnippetBlob] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type SnippetBlobEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: SnippetBlob +} + +""" Represents how the blob content should be displayed """ type SnippetBlobViewer { @@ -16520,22 +18416,69 @@ enum Sort { """ Created at ascending order """ - created_asc + CREATED_ASC + + """ + Created at descending order + """ + CREATED_DESC + + """ + Updated at ascending order + """ + UPDATED_ASC + + """ + Updated at descending order + """ + UPDATED_DESC + + """ + Created at ascending order + """ + created_asc @deprecated(reason: "Use CREATED_ASC. Deprecated in 13.5") """ Created at descending order """ - created_desc + created_desc @deprecated(reason: "Use CREATED_DESC. Deprecated in 13.5") """ Updated at ascending order """ - updated_asc + updated_asc @deprecated(reason: "Use UPDATED_ASC. Deprecated in 13.5") """ Updated at descending order """ - updated_desc + updated_desc @deprecated(reason: "Use UPDATED_DESC. Deprecated in 13.5") +} + +type StatusAction { + """ + Title for the button, for example: Retry this job + """ + buttonTitle: String + + """ + Icon used in the action button + """ + icon: String + + """ + Method for the action, for example: :post + """ + method: String + + """ + Path for the action + """ + path: String + + """ + Title for the action, for example: Retry + """ + title: String } type Submodule implements Entry { @@ -16630,64 +18573,131 @@ type TaskCompletionStatus { count: Int! } +type TerraformState { + """ + Timestamp the Terraform state was created + """ + createdAt: Time! + + """ + ID of the Terraform state + """ + id: ID! + + """ + Timestamp the Terraform state was locked + """ + lockedAt: Time + + """ + The user currently holding a lock on the Terraform state + """ + lockedByUser: User + + """ + Name of the Terraform state + """ + name: String! + + """ + Timestamp the Terraform state was updated + """ + updatedAt: Time! +} + +""" +The connection type for TerraformState. +""" +type TerraformStateConnection { + """ + A list of edges. + """ + edges: [TerraformStateEdge] + + """ + A list of nodes. + """ + nodes: [TerraformState] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + """ -Represents the sync and verification state of a terraform state +An edge in a connection. """ -type TerraformStateRegistry { +type TerraformStateEdge { """ - Timestamp when the TerraformStateRegistry was created + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: TerraformState +} + +""" +Represents the Geo sync and verification state of a terraform state version +""" +type TerraformStateVersionRegistry { + """ + Timestamp when the TerraformStateVersionRegistry was created """ createdAt: Time """ - ID of the TerraformStateRegistry + ID of the TerraformStateVersionRegistry """ id: ID! """ - Error message during sync of the TerraformStateRegistry + Error message during sync of the TerraformStateVersionRegistry """ lastSyncFailure: String """ - Timestamp of the most recent successful sync of the TerraformStateRegistry + Timestamp of the most recent successful sync of the TerraformStateVersionRegistry """ lastSyncedAt: Time """ - Timestamp after which the TerraformStateRegistry should be resynced + Timestamp after which the TerraformStateVersionRegistry should be resynced """ retryAt: Time """ - Number of consecutive failed sync attempts of the TerraformStateRegistry + Number of consecutive failed sync attempts of the TerraformStateVersionRegistry """ retryCount: Int """ - Sync state of the TerraformStateRegistry + Sync state of the TerraformStateVersionRegistry """ state: RegistryState """ - ID of the TerraformState + ID of the terraform state version """ - terraformStateId: ID! + terraformStateVersionId: ID! } """ -The connection type for TerraformStateRegistry. +The connection type for TerraformStateVersionRegistry. """ -type TerraformStateRegistryConnection { +type TerraformStateVersionRegistryConnection { """ A list of edges. """ - edges: [TerraformStateRegistryEdge] + edges: [TerraformStateVersionRegistryEdge] """ A list of nodes. """ - nodes: [TerraformStateRegistry] + nodes: [TerraformStateVersionRegistry] """ Information to aid in pagination. @@ -16698,7 +18708,7 @@ type TerraformStateRegistryConnection { """ An edge in a connection. """ -type TerraformStateRegistryEdge { +type TerraformStateVersionRegistryEdge { """ A cursor for use in pagination. """ @@ -16707,7 +18717,7 @@ type TerraformStateRegistryEdge { """ The item at the end of the edge. """ - node: TerraformStateRegistry + node: TerraformStateVersionRegistry } """ @@ -16790,6 +18800,21 @@ interface TimeboxBurnupTimeSeriesInterface { burnupTimeSeries: [BurnupChartDailyTotals!] } +""" +A time-frame defined as a closed inclusive range of two dates +""" +input Timeframe { + """ + The end of the range + """ + end: Date! + + """ + The start of the range + """ + start: Date! +} + type Timelog { """ Timestamp of when the time tracked was spent at. Deprecated in 12.10: Use `spentAt` @@ -16953,6 +18978,11 @@ type TodoEdge { } """ +Identifier of Todo +""" +scalar TodoID + +""" Autogenerated input type of TodoMarkDone """ input TodoMarkDoneInput { @@ -16964,7 +18994,7 @@ input TodoMarkDoneInput { """ The global id of the todo to mark as done """ - id: ID! + id: TodoID! } """ @@ -16999,7 +19029,7 @@ input TodoRestoreInput { """ The global id of the todo to restore """ - id: ID! + id: TodoID! } """ @@ -17014,7 +19044,7 @@ input TodoRestoreManyInput { """ The global ids of the todos to restore (a maximum of 50 is supported at once) """ - ids: [ID!]! + ids: [TodoID!]! } """ @@ -17141,7 +19171,7 @@ input ToggleAwardEmojiInput { """ The global id of the awardable resource """ - awardableId: ID! + awardableId: AwardableID! """ A unique identifier for the client performing the mutation. @@ -17407,13 +19437,58 @@ type UpdateAlertStatusPayload { } """ +Autogenerated input type of UpdateBoardEpicUserPreferences +""" +input UpdateBoardEpicUserPreferencesInput { + """ + The board global ID + """ + boardId: BoardID! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Whether the epic should be collapsed in the board + """ + collapsed: Boolean! + + """ + ID of an epic to set preferences for + """ + epicId: EpicID! +} + +""" +Autogenerated return type of UpdateBoardEpicUserPreferences +""" +type UpdateBoardEpicUserPreferencesPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + User preferences for the epic in the board after mutation + """ + epicUserPreferences: BoardEpicUserPreferences + + """ + Errors encountered during execution of the mutation. + """ + errors: [String!]! +} + +""" Autogenerated input type of UpdateBoard """ input UpdateBoardInput { """ The id of user to be assigned to the board. """ - assigneeId: ID + assigneeId: UserID """ A unique identifier for the client performing the mutation. @@ -17433,12 +19508,22 @@ input UpdateBoardInput { """ The board global id. """ - id: ID! + id: BoardID! + + """ + The IDs of labels to be added to the board. + """ + labelIds: [LabelID!] + + """ + Labels of the issue + """ + labels: [String!] """ The id of milestone to be assigned to the board. """ - milestoneId: ID + milestoneId: MilestoneID """ Name of the board @@ -17710,7 +19795,7 @@ input UpdateImageDiffNoteInput { """ The global id of the note to update """ - id: ID! + id: NoteID! """ The position of this note on a diff @@ -17743,7 +19828,7 @@ Autogenerated input type of UpdateIssue """ input UpdateIssueInput { """ - The IDs of labels to be added to the issue. + The IDs of labels to be added to the issue """ addLabelIds: [ID!] @@ -17765,7 +19850,7 @@ input UpdateIssueInput { """ Due date of the issue """ - dueDate: Time + dueDate: ISO8601Date """ The ID of the parent epic. NULL when removing the association @@ -17788,7 +19873,7 @@ input UpdateIssueInput { locked: Boolean """ - The ID of the milestone to be assigned, milestone will be removed if set to null. + The ID of the milestone to assign to the issue. On update milestone will be removed if set to null """ milestoneId: ID @@ -17798,14 +19883,24 @@ input UpdateIssueInput { projectPath: ID! """ - The IDs of labels to be removed from the issue. + The IDs of labels to be removed from the issue """ removeLabelIds: [ID!] """ + Close or reopen an issue + """ + stateEvent: IssueStateEvent + + """ Title of the issue """ title: String + + """ + The weight of the issue + """ + weight: Int } """ @@ -17910,7 +20005,7 @@ input UpdateNoteInput { """ The global id of the note to update """ - id: ID! + id: NoteID! } """ @@ -17943,6 +20038,11 @@ input UpdateRequirementInput { clientMutationId: String """ + Description of the requirement + """ + description: String + + """ The iid of the requirement to update """ iid: String! @@ -17953,7 +20053,7 @@ input UpdateRequirementInput { lastTestReportState: TestReportState """ - The project full path the requirement is associated with + Full project path the requirement is associated with """ projectPath: ID! @@ -17983,7 +20083,7 @@ type UpdateRequirementPayload { errors: [String!]! """ - The requirement after mutation + Requirement after mutation """ requirement: Requirement } @@ -18041,6 +20141,11 @@ type UpdateSnippetPayload { The snippet after mutation """ snippet: Snippet + + """ + Indicates whether the operation returns a record detected as spam + """ + spam: Boolean } scalar Upload @@ -18056,6 +20161,11 @@ type User { after: String """ + Username of the author + """ + authorUsername: String + + """ Returns the elements in the list that come before the specified cursor. """ before: String @@ -18136,6 +20246,11 @@ type User { after: String """ + Username of the assignee + """ + assigneeUsername: String + + """ Returns the elements in the list that come before the specified cursor. """ before: String @@ -18666,7 +20781,7 @@ type VulnerabilitiesCountByDayEdge { """ Represents a vulnerability """ -type Vulnerability { +type Vulnerability implements Noteable { """ Description of the vulnerability """ @@ -18678,6 +20793,31 @@ type Vulnerability { detectedAt: Time! """ + All discussions on this noteable + """ + discussions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DiscussionConnection! + + """ GraphQL ID of the vulnerability """ id: ID! @@ -18723,6 +20863,31 @@ type Vulnerability { location: VulnerabilityLocation """ + All notes on this noteable + """ + notes( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): NoteConnection! + + """ Primary identifier of the vulnerability. """ primaryIdentifier: VulnerabilityIdentifier @@ -18735,7 +20900,7 @@ type Vulnerability { """ Type of the security report that found the vulnerability (SAST, DEPENDENCY_SCANNING, CONTAINER_SCANNING, DAST, SECRET_DETECTION, - COVERAGE_FUZZING) + COVERAGE_FUZZING, API_FUZZING) """ reportType: VulnerabilityReportType @@ -18755,7 +20920,7 @@ type Vulnerability { severity: VulnerabilitySeverity """ - State of the vulnerability (DETECTED, DISMISSED, RESOLVED, CONFIRMED) + State of the vulnerability (DETECTED, CONFIRMED, RESOLVED, DISMISSED) """ state: VulnerabilityState @@ -18781,6 +20946,41 @@ type Vulnerability { } """ +Autogenerated input type of VulnerabilityConfirm +""" +input VulnerabilityConfirmInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the vulnerability to be confirmed + """ + id: VulnerabilityID! +} + +""" +Autogenerated return type of VulnerabilityConfirm +""" +type VulnerabilityConfirmPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Errors encountered during execution of the mutation. + """ + errors: [String!]! + + """ + The vulnerability after state change + """ + vulnerability: Vulnerability +} + +""" The connection type for Vulnerability. """ type VulnerabilityConnection { @@ -18801,6 +21001,46 @@ type VulnerabilityConnection { } """ +Autogenerated input type of VulnerabilityDismiss +""" +input VulnerabilityDismissInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Reason why vulnerability should be dismissed + """ + comment: String + + """ + ID of the vulnerability to be dismissed + """ + id: VulnerabilityID! +} + +""" +Autogenerated return type of VulnerabilityDismiss +""" +type VulnerabilityDismissPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Errors encountered during execution of the mutation. + """ + errors: [String!]! + + """ + The vulnerability after dismissal + """ + vulnerability: Vulnerability +} + +""" An edge in a connection. """ type VulnerabilityEdge { @@ -19123,6 +21363,7 @@ type VulnerabilityPermissions { The type of the security scan that found the vulnerability """ enum VulnerabilityReportType { + API_FUZZING CONTAINER_SCANNING COVERAGE_FUZZING DAST @@ -19141,7 +21382,7 @@ input VulnerabilityResolveInput { clientMutationId: String """ - ID of the vulnerability to be resolveed + ID of the vulnerability to be resolved """ id: VulnerabilityID! } @@ -19167,6 +21408,41 @@ type VulnerabilityResolvePayload { } """ +Autogenerated input type of VulnerabilityRevertToDetected +""" +input VulnerabilityRevertToDetectedInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the vulnerability to be reverted + """ + id: VulnerabilityID! +} + +""" +Autogenerated return type of VulnerabilityRevertToDetected +""" +type VulnerabilityRevertToDetectedPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Errors encountered during execution of the mutation. + """ + errors: [String!]! + + """ + The vulnerability after revert + """ + vulnerability: Vulnerability +} + +""" Represents a vulnerability scanner """ type VulnerabilityScanner { @@ -19278,6 +21554,26 @@ Vulnerability sort values """ enum VulnerabilitySort { """ + Detection timestamp in ascending order + """ + detected_asc + + """ + Detection timestamp in descending order + """ + detected_desc + + """ + Report Type in ascending order + """ + report_type_asc + + """ + Report Type in descending order + """ + report_type_desc + + """ Severity in ascending order """ severity_asc @@ -19286,6 +21582,26 @@ enum VulnerabilitySort { Severity in descending order """ severity_desc + + """ + State in ascending order + """ + state_asc + + """ + State in descending order + """ + state_desc + + """ + Title in ascending order + """ + title_asc + + """ + Title in descending order + """ + title_desc } """ diff --git a/doc/api/graphql/reference/gitlab_schema.json b/doc/api/graphql/reference/gitlab_schema.json index 173415ca164..6914ba29c57 100644 --- a/doc/api/graphql/reference/gitlab_schema.json +++ b/doc/api/graphql/reference/gitlab_schema.json @@ -111,7 +111,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "AwardableID", "ofType": null } }, @@ -227,7 +227,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "ProjectID", "ofType": null } }, @@ -382,6 +382,16 @@ "defaultValue": null }, { + "name": "featureCategory", + "description": "Delete jobs matching feature_category in the context metadata", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { "name": "queueName", "description": "The name of the queue to delete jobs from", "type": { @@ -667,6 +677,20 @@ "deprecationReason": null }, { + "name": "environment", + "description": "Environment for the alert", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "Environment", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "eventCount", "description": "Number of events of this alert", "args": [ @@ -1227,23 +1251,47 @@ { "name": "updated_desc", "description": "Updated at descending order", + "isDeprecated": true, + "deprecationReason": "Use UPDATED_DESC. Deprecated in 13.5" + }, + { + "name": "updated_asc", + "description": "Updated at ascending order", + "isDeprecated": true, + "deprecationReason": "Use UPDATED_ASC. Deprecated in 13.5" + }, + { + "name": "created_desc", + "description": "Created at descending order", + "isDeprecated": true, + "deprecationReason": "Use CREATED_DESC. Deprecated in 13.5" + }, + { + "name": "created_asc", + "description": "Created at ascending order", + "isDeprecated": true, + "deprecationReason": "Use CREATED_ASC. Deprecated in 13.5" + }, + { + "name": "UPDATED_DESC", + "description": "Updated at descending order", "isDeprecated": false, "deprecationReason": null }, { - "name": "updated_asc", + "name": "UPDATED_ASC", "description": "Updated at ascending order", "isDeprecated": false, "deprecationReason": null }, { - "name": "created_desc", + "name": "CREATED_DESC", "description": "Created at descending order", "isDeprecated": false, "deprecationReason": null }, { - "name": "created_asc", + "name": "CREATED_ASC", "description": "Created at ascending order", "isDeprecated": false, "deprecationReason": null @@ -1969,7 +2017,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "AwardableID", "ofType": null } }, @@ -2085,7 +2133,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "AwardableID", "ofType": null } }, @@ -2201,7 +2249,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "AwardableID", "ofType": null } }, @@ -2322,6 +2370,16 @@ "possibleTypes": null }, { + "kind": "SCALAR", + "name": "AwardableID", + "description": "Identifier of Awardable", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { "kind": "OBJECT", "name": "BaseService", "description": null, @@ -2764,7 +2822,7 @@ ], "type": { "kind": "OBJECT", - "name": "EpicConnection", + "name": "BoardEpicConnection", "ofType": null }, "isDeprecated": false, @@ -2817,6 +2875,59 @@ "deprecationReason": null }, { + "name": "labels", + "description": "Labels of the board", + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "LabelConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "lists", "description": "Lists of the board", "args": [ @@ -2831,6 +2942,16 @@ "defaultValue": null }, { + "name": "issueFilters", + "description": "Filters applied when getting issue metadata in the board list", + "type": { + "kind": "INPUT_OBJECT", + "name": "BoardIssueInput", + "ofType": null + }, + "defaultValue": null + }, + { "name": "after", "description": "Returns the elements in the list that come after the specified cursor.", "type": { @@ -3042,6 +3163,1273 @@ "possibleTypes": null }, { + "kind": "OBJECT", + "name": "BoardEpic", + "description": "Represents an epic on an issue board", + "fields": [ + { + "name": "author", + "description": "Author of the epic", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "User", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "children", + "description": "Children (sub-epics) of the epic", + "args": [ + { + "name": "startDate", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.start", + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "endDate", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.end", + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "timeframe", + "description": "List items overlapping the given timeframe", + "type": { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "iid", + "description": "IID of the epic, e.g., \"1\"", + "type": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "iids", + "description": "List of IIDs of epics, e.g., [1, 2]", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "state", + "description": "Filter epics by state", + "type": { + "kind": "ENUM", + "name": "EpicState", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "search", + "description": "Search query for epic title or description", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "sort", + "description": "List epics by sort order", + "type": { + "kind": "ENUM", + "name": "EpicSort", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "authorUsername", + "description": "Filter epics by author", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "labelName", + "description": "Filter epics by labels", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "milestoneTitle", + "description": "Filter epics by milestone title, computed from epic's issues", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "iidStartsWith", + "description": "Filter epics by iid for autocomplete", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "EpicConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "closedAt", + "description": "Timestamp of when the epic was closed", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "confidential", + "description": "Indicates if the epic is confidential", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": "Timestamp of when the epic was created", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "currentUserTodos", + "description": "Todos for the current user", + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "state", + "description": "State of the todos", + "type": { + "kind": "ENUM", + "name": "TodoStateEnum", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "TodoConnection", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "descendantCounts", + "description": "Number of open and closed descendant epics and issues", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "EpicDescendantCount", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "descendantWeightSum", + "description": "Total weight of open and closed issues in the epic and its descendants", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "EpicDescendantWeights", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": "Description of the epic", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "discussions", + "description": "All discussions on this noteable", + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "DiscussionConnection", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "downvotes", + "description": "Number of downvotes the epic has received", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "dueDate", + "description": "Due date of the epic", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "dueDateFixed", + "description": "Fixed due date of the epic", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "dueDateFromMilestones", + "description": "Inherited due date of the epic from milestones", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "dueDateIsFixed", + "description": "Indicates if the due date has been manually set", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "group", + "description": "Group to which the epic belongs", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Group", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "hasChildren", + "description": "Indicates if the epic has children", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "hasIssues", + "description": "Indicates if the epic has direct issues", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "hasParent", + "description": "Indicates if the epic has a parent epic", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "healthStatus", + "description": "Current health status of the epic", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "EpicHealthStatus", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": "ID of the epic", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "iid", + "description": "Internal ID of the epic", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "issues", + "description": "A list of issues associated with the epic", + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "EpicIssueConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "labels", + "description": "Labels assigned to the epic", + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "LabelConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "notes", + "description": "All notes on this noteable", + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "NoteConnection", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "parent", + "description": "Parent epic of the epic", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "Epic", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "participants", + "description": "List of participants for the epic", + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "UserConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "reference", + "description": "Internal reference of the epic. Returned in shortened format by default", + "args": [ + { + "name": "full", + "description": "Indicates if the reference should be returned in full", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false" + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "relationPath", + "description": "URI path of the epic-issue relationship", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "relativePosition", + "description": "The relative position of the epic in the epic tree", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "startDate", + "description": "Start date of the epic", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "startDateFixed", + "description": "Fixed start date of the epic", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "startDateFromMilestones", + "description": "Inherited start date of the epic from milestones", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "startDateIsFixed", + "description": "Indicates if the start date has been manually set", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": "State of the epic", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "EpicState", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "subscribed", + "description": "Indicates the currently logged in user is subscribed to the epic", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "title", + "description": "Title of the epic", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": "Timestamp of when the epic was updated", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "upvotes", + "description": "Number of upvotes the epic has received", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "userPermissions", + "description": "Permissions for the current user on the resource", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "EpicPermissions", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "userPreferences", + "description": "User preferences for the epic on the issue board", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "BoardEpicUserPreferences", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "webPath", + "description": "Web path of the epic", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "webUrl", + "description": "Web URL of the epic", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Noteable", + "ofType": null + }, + { + "kind": "INTERFACE", + "name": "CurrentUserTodos", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "BoardEpicConnection", + "description": "The connection type for BoardEpic.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [ + + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "BoardEpicEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [ + + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "BoardEpic", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "BoardEpicEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "BoardEpic", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "BoardEpicUserPreferences", + "description": "Represents user preferences for a board epic", + "fields": [ + { + "name": "collapsed", + "description": "Indicates epic should be displayed as collapsed", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { "kind": "SCALAR", "name": "BoardID", "description": "Identifier of Board", @@ -3718,7 +5106,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "ListID", "ofType": null } }, @@ -4000,6 +5388,20 @@ "description": null, "fields": [ { + "name": "detailedStatus", + "description": "Detailed status of the group", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "DetailedStatus", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "jobs", "description": "Jobs in group", "args": [ @@ -4206,6 +5608,20 @@ "description": null, "fields": [ { + "name": "detailedStatus", + "description": "Detailed status of the job", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "DetailedStatus", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "name", "description": "Name of the job", "args": [ @@ -4271,6 +5687,20 @@ }, "isDeprecated": false, "deprecationReason": null + }, + { + "name": "scheduledAt", + "description": "Schedule for the build", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null } ], "inputFields": null, @@ -4408,6 +5838,20 @@ "description": null, "fields": [ { + "name": "detailedStatus", + "description": "Detailed status of the stage", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "DetailedStatus", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "groups", "description": "Group of jobs for the stage", "args": [ @@ -5330,6 +6774,16 @@ "possibleTypes": null }, { + "kind": "SCALAR", + "name": "ClustersClusterID", + "description": "Identifier of Clusters::Cluster", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { "kind": "OBJECT", "name": "Commit", "description": null, @@ -6695,7 +8149,7 @@ "description": "The global id of the environment to add an annotation to", "type": { "kind": "SCALAR", - "name": "ID", + "name": "EnvironmentID", "ofType": null }, "defaultValue": null @@ -6705,7 +8159,7 @@ "description": "The global id of the cluster to add an annotation to", "type": { "kind": "SCALAR", - "name": "ID", + "name": "ClustersClusterID", "ofType": null }, "defaultValue": null @@ -6846,6 +8300,172 @@ }, { "kind": "INPUT_OBJECT", + "name": "CreateBoardInput", + "description": "Autogenerated input type of CreateBoard", + "fields": null, + "inputFields": [ + { + "name": "projectPath", + "description": "The project full path the board is associated with.", + "type": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "groupPath", + "description": "The group full path the board is associated with.", + "type": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "name", + "description": "The board name.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "assigneeId", + "description": "The ID of the user to be assigned to the board.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "milestoneId", + "description": "The ID of the milestone to be assigned to the board.", + "type": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "weight", + "description": "The weight of the board.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "labelIds", + "description": "The IDs of labels to be added to the board.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CreateBoardPayload", + "description": "Autogenerated return type of CreateBoard", + "fields": [ + { + "name": "board", + "description": "The board after mutation.", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "Board", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "errors", + "description": "Errors encountered during execution of the mutation.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", "name": "CreateBranchInput", "description": "Autogenerated input type of CreateBranch", "fields": null, @@ -7104,7 +8724,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "NoteableID", "ofType": null } }, @@ -7452,7 +9072,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "NoteableID", "ofType": null } }, @@ -7580,6 +9200,296 @@ }, { "kind": "INPUT_OBJECT", + "name": "CreateIssueInput", + "description": "Autogenerated input type of CreateIssue", + "fields": null, + "inputFields": [ + { + "name": "description", + "description": "Description of the issue", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "dueDate", + "description": "Due date of the issue", + "type": { + "kind": "SCALAR", + "name": "ISO8601Date", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "confidential", + "description": "Indicates the issue is confidential", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "locked", + "description": "Indicates discussion is locked on the issue", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "projectPath", + "description": "Project full path the issue is associated with", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "iid", + "description": "The IID (internal ID) of a project issue. Only admins and project owners can modify", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "title", + "description": "Title of the issue", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "milestoneId", + "description": "The ID of the milestone to assign to the issue. On update milestone will be removed if set to null", + "type": { + "kind": "SCALAR", + "name": "MilestoneID", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "labels", + "description": "Labels of the issue", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "labelIds", + "description": "The IDs of labels to be added to the issue", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "LabelID", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "createdAt", + "description": "Timestamp when the issue was created. Available only for admins and project owners", + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "mergeRequestToResolveDiscussionsOf", + "description": "The IID of a merge request for which to resolve discussions", + "type": { + "kind": "SCALAR", + "name": "MergeRequestID", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "discussionToResolve", + "description": "The ID of a discussion to resolve. Also pass `merge_request_to_resolve_discussions_of`", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "assigneeIds", + "description": "The array of user IDs to assign to the issue", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "UserID", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "healthStatus", + "description": "The desired health status", + "type": { + "kind": "ENUM", + "name": "HealthStatus", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "weight", + "description": "The weight of the issue", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "epicId", + "description": "The ID of an epic to associate the issue with", + "type": { + "kind": "SCALAR", + "name": "EpicID", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CreateIssuePayload", + "description": "Autogenerated return type of CreateIssue", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "errors", + "description": "Errors encountered during execution of the mutation.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "issue", + "description": "The issue after mutation", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "Issue", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", "name": "CreateIterationInput", "description": "Autogenerated input type of CreateIteration", "fields": null, @@ -7740,7 +9650,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "NoteableID", "ofType": null } }, @@ -7775,7 +9685,7 @@ "description": "The global id of the discussion this note is in reply to", "type": { "kind": "SCALAR", - "name": "ID", + "name": "DiscussionID", "ofType": null }, "defaultValue": null @@ -7872,19 +9782,25 @@ "name": "title", "description": "Title of the requirement", "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "description", + "description": "Description of the requirement", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null }, "defaultValue": null }, { "name": "projectPath", - "description": "The project full path the requirement is associated with", + "description": "Full project path the requirement is associated with", "type": { "kind": "NON_NULL", "name": null, @@ -7958,7 +9874,7 @@ }, { "name": "requirement", - "description": "The requirement after mutation", + "description": "Requirement after mutation", "args": [ ], @@ -8141,6 +10057,20 @@ }, "isDeprecated": false, "deprecationReason": null + }, + { + "name": "spam", + "description": "Indicates whether the operation returns a record detected as spam", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null } ], "inputFields": null, @@ -8373,6 +10303,11 @@ "possibleTypes": [ { "kind": "OBJECT", + "name": "BoardEpic", + "ofType": null + }, + { + "kind": "OBJECT", "name": "Design", "ofType": null }, @@ -8537,6 +10472,12 @@ "description": "Passive DAST scan. This scan will not make active attacks against the target site.", "isDeprecated": false, "deprecationReason": null + }, + { + "name": "ACTIVE", + "description": "Active DAST scan. This scan will make active attacks against the target site.", + "isDeprecated": false, + "deprecationReason": null } ], "possibleTypes": null @@ -8611,6 +10552,38 @@ "deprecationReason": null }, { + "name": "scanType", + "description": "Indicates the type of DAST scan that will run. Either a Passive Scan or an Active Scan.", + "args": [ + + ], + "type": { + "kind": "ENUM", + "name": "DastScanTypeEnum", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "showDebugMessages", + "description": "Indicates if debug messages should be included in DAST console output. True to include the debug messages.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "spiderTimeout", "description": "The maximum number of minutes allowed for the spider to traverse the site", "args": [ @@ -8637,6 +10610,24 @@ }, "isDeprecated": false, "deprecationReason": null + }, + { + "name": "useAjaxSpider", + "description": "Indicates if the AJAX spider should be used to crawl the target site. True to run the AJAX spider in addition to the traditional spider, and false to run only the traditional spider.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null } ], "inputFields": null, @@ -8768,6 +10759,36 @@ "defaultValue": null }, { + "name": "scanType", + "description": "Indicates the type of DAST scan that will run. Either a Passive Scan or an Active Scan.", + "type": { + "kind": "ENUM", + "name": "DastScanTypeEnum", + "ofType": null + }, + "defaultValue": "PASSIVE" + }, + { + "name": "useAjaxSpider", + "description": "Indicates if the AJAX spider should be used to crawl the target site. True to run the AJAX spider in addition to the traditional spider, and false to run only the traditional spider.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false" + }, + { + "name": "showDebugMessages", + "description": "Indicates if debug messages should be included in DAST console output. True to include the debug messages.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false" + }, + { "name": "clientMutationId", "description": "A unique identifier for the client performing the mutation.", "type": { @@ -9097,6 +11118,36 @@ "defaultValue": null }, { + "name": "scanType", + "description": "Indicates the type of DAST scan that will run. Either a Passive Scan or an Active Scan.", + "type": { + "kind": "ENUM", + "name": "DastScanTypeEnum", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "useAjaxSpider", + "description": "Indicates if the AJAX spider should be used to crawl the target site. True to run the AJAX spider in addition to the traditional spider, and false to run only the traditional spider.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "showDebugMessages", + "description": "Indicates if debug messages should be included in DAST console output. True to include the debug messages.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, + { "name": "clientMutationId", "description": "A unique identifier for the client performing the mutation.", "type": { @@ -9841,6 +11892,166 @@ }, { "kind": "INPUT_OBJECT", + "name": "DastSiteTokenCreateInput", + "description": "Autogenerated input type of DastSiteTokenCreate", + "fields": null, + "inputFields": [ + { + "name": "fullPath", + "description": "The project the site token belongs to.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "targetUrl", + "description": "The URL of the target to be validated.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "DastSiteTokenCreatePayload", + "description": "Autogenerated return type of DastSiteTokenCreate", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "errors", + "description": "Errors encountered during execution of the mutation.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": "ID of the site token.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "DastSiteTokenID", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "status", + "description": "The current validation status of the target.", + "args": [ + + ], + "type": { + "kind": "ENUM", + "name": "DastSiteProfileValidationStatusEnum", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "token", + "description": "Token string.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "DastSiteTokenID", + "description": "Identifier of DastSiteToken", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "Date", + "description": "Date represented in ISO 8601", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", "name": "DeleteAnnotationInput", "description": "Autogenerated input type of DeleteAnnotation", "fields": null, @@ -10790,6 +13001,20 @@ "description": "A collection of designs", "fields": [ { + "name": "copyState", + "description": "Copy state of the design collection", + "args": [ + + ], + "type": { + "kind": "ENUM", + "name": "DesignCollectionCopyState", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "design", "description": "Find a specific design", "args": [ @@ -11107,6 +13332,35 @@ "possibleTypes": null }, { + "kind": "ENUM", + "name": "DesignCollectionCopyState", + "description": "Copy state of a DesignCollection", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "READY", + "description": "The DesignCollection has no copy in progress", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "IN_PROGRESS", + "description": "The DesignCollection is being copied", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ERROR", + "description": "The DesignCollection encountered an error during a copy", + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { "kind": "OBJECT", "name": "DesignConnection", "description": "The connection type for Design.", @@ -12358,6 +14612,108 @@ "possibleTypes": null }, { + "kind": "INPUT_OBJECT", + "name": "DestroyBoardListInput", + "description": "Autogenerated input type of DestroyBoardList", + "fields": null, + "inputFields": [ + { + "name": "listId", + "description": "Global ID of the list to destroy. Only label lists are accepted.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ListID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "DestroyBoardListPayload", + "description": "Autogenerated return type of DestroyBoardList", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "errors", + "description": "Errors encountered during execution of the mutation.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "list", + "description": "The list after mutation.", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "BoardList", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { "kind": "OBJECT", "name": "DestroyBoardPayload", "description": "Autogenerated return type of DestroyBoard", @@ -12438,7 +14794,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "NoteID", "ofType": null } }, @@ -12634,145 +14990,127 @@ "description": null, "fields": [ { + "name": "action", + "description": "Action information for the status. This includes method, button title, icon, path, and title", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "StatusAction", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "detailsPath", - "description": "Path of the details for the pipeline status", + "description": "Path of the details for the status", "args": [ ], "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } + "kind": "SCALAR", + "name": "String", + "ofType": null }, "isDeprecated": false, "deprecationReason": null }, { "name": "favicon", - "description": "Favicon of the pipeline status", + "description": "Favicon of the status", "args": [ ], "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } + "kind": "SCALAR", + "name": "String", + "ofType": null }, "isDeprecated": false, "deprecationReason": null }, { "name": "group", - "description": "Group of the pipeline status", + "description": "Group of the status", "args": [ ], "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } + "kind": "SCALAR", + "name": "String", + "ofType": null }, "isDeprecated": false, "deprecationReason": null }, { "name": "hasDetails", - "description": "Indicates if the pipeline status has further details", + "description": "Indicates if the status has further details", "args": [ ], "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } + "kind": "SCALAR", + "name": "Boolean", + "ofType": null }, "isDeprecated": false, "deprecationReason": null }, { "name": "icon", - "description": "Icon of the pipeline status", + "description": "Icon of the status", "args": [ ], "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } + "kind": "SCALAR", + "name": "String", + "ofType": null }, "isDeprecated": false, "deprecationReason": null }, { "name": "label", - "description": "Label of the pipeline status", + "description": "Label of the status", "args": [ ], "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } + "kind": "SCALAR", + "name": "String", + "ofType": null }, "isDeprecated": false, "deprecationReason": null }, { "name": "text", - "description": "Text of the pipeline status", + "description": "Text of the status", "args": [ ], "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } + "kind": "SCALAR", + "name": "String", + "ofType": null }, "isDeprecated": false, "deprecationReason": null }, { "name": "tooltip", - "description": "Tooltip associated with the pipeline status", + "description": "Tooltip associated with the status", "args": [ ], "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } + "kind": "SCALAR", + "name": "String", + "ofType": null }, "isDeprecated": false, "deprecationReason": null @@ -13744,6 +16082,16 @@ "possibleTypes": null }, { + "kind": "SCALAR", + "name": "DiscussionID", + "description": "Identifier of Discussion", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { "kind": "INPUT_OBJECT", "name": "DiscussionToggleResolveInput", "description": "Autogenerated input type of DiscussionToggleResolve", @@ -13757,7 +16105,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "DiscussionID", "ofType": null } }, @@ -13873,7 +16221,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "VulnerabilityID", "ofType": null } }, @@ -14160,7 +16508,7 @@ }, { "name": "latestOpenedMostSevereAlert", - "description": "The most severe open alert for the environment. If multiple alerts have equal severity, the most recent is returned.", + "description": "The most severe open alert for the environment. If multiple alerts have equal severity, the most recent is returned", "args": [ ], @@ -14218,6 +16566,20 @@ "deprecationReason": null }, { + "name": "path", + "description": "The path to the environment. Will always return null if `expose_environment_path_in_alert_details` feature flag is disabled", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "state", "description": "State of the environment, for example: available/stopped", "args": [ @@ -14356,6 +16718,16 @@ "possibleTypes": null }, { + "kind": "SCALAR", + "name": "EnvironmentID", + "description": "Identifier of Environment", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { "kind": "OBJECT", "name": "Epic", "description": "Represents an epic", @@ -14384,7 +16756,7 @@ "args": [ { "name": "startDate", - "description": "List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.start", "type": { "kind": "SCALAR", "name": "Time", @@ -14394,7 +16766,7 @@ }, { "name": "endDate", - "description": "List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.end", "type": { "kind": "SCALAR", "name": "Time", @@ -14403,6 +16775,16 @@ "defaultValue": null }, { + "name": "timeframe", + "description": "List items overlapping the given timeframe", + "type": { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "ofType": null + }, + "defaultValue": null + }, + { "name": "iid", "description": "IID of the epic, e.g., \"1\"", "type": { @@ -14559,7 +16941,7 @@ }, { "name": "closedAt", - "description": "Timestamp of the epic's closure", + "description": "Timestamp of when the epic was closed", "args": [ ], @@ -14587,7 +16969,7 @@ }, { "name": "createdAt", - "description": "Timestamp of the epic's creation", + "description": "Timestamp of when the epic was created", "args": [ ], @@ -15354,7 +17736,7 @@ }, { "name": "updatedAt", - "description": "Timestamp of the epic's last activity", + "description": "Timestamp of when the epic was updated", "args": [ ], @@ -16627,6 +19009,20 @@ "deprecationReason": null }, { + "name": "slaDueAt", + "description": "Timestamp of when the issue SLA expires.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "state", "description": "State of the issue", "args": [ @@ -17433,7 +19829,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "EpicTreeSortingID", "ofType": null } }, @@ -17444,7 +19840,7 @@ "description": "The id of the epic_issue or issue that the actual epic or issue is switched with", "type": { "kind": "SCALAR", - "name": "ID", + "name": "EpicTreeSortingID", "ofType": null }, "defaultValue": null @@ -17464,7 +19860,7 @@ "description": "ID of the new parent epic", "type": { "kind": "SCALAR", - "name": "ID", + "name": "EpicID", "ofType": null }, "defaultValue": null @@ -17488,7 +19884,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "EpicID", "ofType": null } }, @@ -17577,6 +19973,16 @@ "possibleTypes": null }, { + "kind": "SCALAR", + "name": "EpicTreeSortingID", + "description": "Identifier of EpicTreeSorting", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { "kind": "ENUM", "name": "EpicWildcardId", "description": "Epic ID wildcard values", @@ -17689,6 +20095,77 @@ "deprecationReason": null }, { + "name": "mergeRequestDiffRegistries", + "description": "Find merge request diff registries on this Geo node", + "args": [ + { + "name": "ids", + "description": "Filters registries by their ID", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "MergeRequestDiffRegistryConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "minimumReverificationInterval", "description": "The interval (in days) in which the repository verification is valid. Once expired, it will be reverified", "args": [ @@ -17919,8 +20396,8 @@ "deprecationReason": null }, { - "name": "terraformStateRegistries", - "description": "Find terraform state registries on this Geo node. Available only when feature flag `geo_terraform_state_replication` is enabled", + "name": "terraformStateVersionRegistries", + "description": "Find terraform state version registries on this Geo node", "args": [ { "name": "ids", @@ -17983,7 +20460,7 @@ ], "type": { "kind": "OBJECT", - "name": "TerraformStateRegistryConnection", + "name": "TerraformStateVersionRegistryConnection", "ofType": null }, "isDeprecated": false, @@ -18152,6 +20629,34 @@ "description": null, "fields": [ { + "name": "actualRepositorySizeLimit", + "description": "Size limit for repositories in the namespace in bytes", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "additionalPurchasedStorageSize", + "description": "Additional storage purchased for the root namespace in bytes", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "autoDevopsEnabled", "description": "Indicates whether Auto DevOps is enabled for all projects within this group", "args": [ @@ -18185,11 +20690,15 @@ "args": [ { "name": "id", - "description": "Find a board by its ID", + "description": "The board's ID", "type": { - "kind": "SCALAR", - "name": "ID", - "ofType": null + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "BoardID", + "ofType": null + } }, "defaultValue": null } @@ -18266,6 +20775,24 @@ "deprecationReason": null }, { + "name": "containsLockedProjects", + "description": "Includes at least one project where the repository size exceeds the limit", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "description", "description": "Description of the namespace", "args": [ @@ -18313,7 +20840,7 @@ "args": [ { "name": "startDate", - "description": "List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.start", "type": { "kind": "SCALAR", "name": "Time", @@ -18323,7 +20850,7 @@ }, { "name": "endDate", - "description": "List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.end", "type": { "kind": "SCALAR", "name": "Time", @@ -18332,6 +20859,16 @@ "defaultValue": null }, { + "name": "timeframe", + "description": "List items overlapping the given timeframe", + "type": { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "ofType": null + }, + "defaultValue": null + }, + { "name": "iid", "description": "IID of the epic, e.g., \"1\"", "type": { @@ -18452,7 +20989,7 @@ "args": [ { "name": "startDate", - "description": "List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.start", "type": { "kind": "SCALAR", "name": "Time", @@ -18462,7 +20999,7 @@ }, { "name": "endDate", - "description": "List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.end", "type": { "kind": "SCALAR", "name": "Time", @@ -18471,6 +21008,16 @@ "defaultValue": null }, { + "name": "timeframe", + "description": "List items overlapping the given timeframe", + "type": { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "ofType": null + }, + "defaultValue": null + }, + { "name": "iid", "description": "IID of the epic, e.g., \"1\"", "type": { @@ -18790,7 +21337,7 @@ }, { "name": "issues", - "description": "Issues of the group", + "description": "Issues for projects in this group", "args": [ { "name": "iid", @@ -18849,6 +21396,16 @@ "defaultValue": null }, { + "name": "authorUsername", + "description": "Username of the author of the issue", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { "name": "assigneeUsername", "description": "Username of a user assigned to the issue", "type": { @@ -18859,6 +21416,24 @@ "defaultValue": null }, { + "name": "assigneeUsernames", + "description": "Usernames of users assigned to the issue", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { "name": "assigneeId", "description": "ID of a user assigned to the issues, \"none\" and \"any\" values supported", "type": { @@ -18992,7 +21567,7 @@ }, { "name": "includeSubgroups", - "description": "Include issues belonging to subgroups.", + "description": "Include issues belonging to subgroups", "type": { "kind": "SCALAR", "name": "Boolean", @@ -19055,7 +21630,7 @@ "args": [ { "name": "startDate", - "description": "List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.start", "type": { "kind": "SCALAR", "name": "Time", @@ -19065,7 +21640,7 @@ }, { "name": "endDate", - "description": "List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.end", "type": { "kind": "SCALAR", "name": "Time", @@ -19074,6 +21649,16 @@ "defaultValue": null }, { + "name": "timeframe", + "description": "List items overlapping the given timeframe", + "type": { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "ofType": null + }, + "defaultValue": null + }, + { "name": "state", "description": "Filter iterations by state", "type": { @@ -19291,12 +21876,217 @@ "deprecationReason": null }, { + "name": "mergeRequests", + "description": "Merge requests for projects in this group", + "args": [ + { + "name": "iids", + "description": "Array of IIDs of merge requests, for example `[1, 2]`", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "sourceBranches", + "description": "Array of source branch names. All resolved merge requests will have one of these branches as their source.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "targetBranches", + "description": "Array of target branch names. All resolved merge requests will have one of these branches as their target.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "state", + "description": "A merge request state. If provided, all resolved merge requests will have this state.", + "type": { + "kind": "ENUM", + "name": "MergeRequestState", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "labels", + "description": "Array of label names. All resolved merge requests will have all of these labels.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "mergedAfter", + "description": "Merge requests merged after this date", + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "mergedBefore", + "description": "Merge requests merged before this date", + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "milestoneTitle", + "description": "Title of the milestone", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "sort", + "description": "Sort merge requests by this criteria", + "type": { + "kind": "ENUM", + "name": "MergeRequestSort", + "ofType": null + }, + "defaultValue": "created_desc" + }, + { + "name": "includeSubgroups", + "description": "Include merge requests belonging to subgroups", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false" + }, + { + "name": "assigneeUsername", + "description": "Username of the assignee", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "authorUsername", + "description": "Username of the author", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "MergeRequestConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "milestones", "description": "Milestones of the group", "args": [ { "name": "startDate", - "description": "List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.start", "type": { "kind": "SCALAR", "name": "Time", @@ -19306,7 +22096,7 @@ }, { "name": "endDate", - "description": "List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.end", "type": { "kind": "SCALAR", "name": "Time", @@ -19315,6 +22105,16 @@ "defaultValue": null }, { + "name": "timeframe", + "description": "List items overlapping the given timeframe", + "type": { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "ofType": null + }, + "defaultValue": null + }, + { "name": "ids", "description": "Array of global milestone IDs, e.g., \"gid://gitlab/Milestone/1\"", "type": { @@ -19343,6 +22143,36 @@ "defaultValue": null }, { + "name": "title", + "description": "The title of the milestone", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "searchTitle", + "description": "A search string for the title", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "containingDate", + "description": "A date that the milestone contains", + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "defaultValue": null + }, + { "name": "includeDescendants", "description": "Also return milestones in all subgroups and subprojects", "type": { @@ -19563,6 +22393,24 @@ "deprecationReason": null }, { + "name": "repositorySizeExcessProjectCount", + "description": "Number of projects in the root namespace where the repository size exceeds the limit", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "requestAccessEnabled", "description": "Indicates if users can request access to namespace", "args": [ @@ -19758,6 +22606,34 @@ "deprecationReason": null }, { + "name": "totalRepositorySize", + "description": "Total repository size of all projects in the root namespace in bytes", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalRepositorySizeExcess", + "description": "Total excess repository size of all projects in the root namespace in bytes", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "twoFactorGracePeriod", "description": "Time before two-factor authentication is enforced", "args": [ @@ -21905,6 +24781,20 @@ "deprecationReason": null }, { + "name": "slaDueAt", + "description": "Timestamp of when the issue SLA expires.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "state", "description": "State of the issue", "args": [ @@ -22335,6 +25225,69 @@ }, { "kind": "INPUT_OBJECT", + "name": "IssueMoveInput", + "description": "Autogenerated input type of IssueMove", + "fields": null, + "inputFields": [ + { + "name": "projectPath", + "description": "The project the issue to mutate is in", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "iid", + "description": "The IID of the issue to mutate", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "targetProjectPath", + "description": "The project to move the issue to", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", "name": "IssueMoveListInput", "description": "Autogenerated input type of IssueMoveList", "fields": null, @@ -22515,6 +25468,73 @@ }, { "kind": "OBJECT", + "name": "IssueMovePayload", + "description": "Autogenerated return type of IssueMove", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "errors", + "description": "Errors encountered during execution of the mutation.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "issue", + "description": "The issue after mutation", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "Issue", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", "name": "IssuePermissions", "description": "Check permissions for the current user on a issue", "fields": [ @@ -23243,7 +26263,7 @@ "description": "The iteration to assign to the issue.\n", "type": { "kind": "SCALAR", - "name": "ID", + "name": "IterationID", "ofType": null }, "defaultValue": null @@ -23861,23 +26881,47 @@ { "name": "updated_desc", "description": "Updated at descending order", + "isDeprecated": true, + "deprecationReason": "Use UPDATED_DESC. Deprecated in 13.5" + }, + { + "name": "updated_asc", + "description": "Updated at ascending order", + "isDeprecated": true, + "deprecationReason": "Use UPDATED_ASC. Deprecated in 13.5" + }, + { + "name": "created_desc", + "description": "Created at descending order", + "isDeprecated": true, + "deprecationReason": "Use CREATED_DESC. Deprecated in 13.5" + }, + { + "name": "created_asc", + "description": "Created at ascending order", + "isDeprecated": true, + "deprecationReason": "Use CREATED_ASC. Deprecated in 13.5" + }, + { + "name": "UPDATED_DESC", + "description": "Updated at descending order", "isDeprecated": false, "deprecationReason": null }, { - "name": "updated_asc", + "name": "UPDATED_ASC", "description": "Updated at ascending order", "isDeprecated": false, "deprecationReason": null }, { - "name": "created_desc", + "name": "CREATED_DESC", "description": "Created at descending order", "isDeprecated": false, "deprecationReason": null }, { - "name": "created_asc", + "name": "CREATED_ASC", "description": "Created at ascending order", "isDeprecated": false, "deprecationReason": null @@ -23937,6 +26981,18 @@ "deprecationReason": null }, { + "name": "SEVERITY_ASC", + "description": "Severity from less critical to more critical", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEVERITY_DESC", + "description": "Severity from more critical to less critical", + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "WEIGHT_ASC", "description": "Weight by ascending order", "isDeprecated": false, @@ -23947,6 +27003,18 @@ "description": "Weight by descending order", "isDeprecated": false, "deprecationReason": null + }, + { + "name": "PUBLISHED_ASC", + "description": "Published issues shown last", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PUBLISHED_DESC", + "description": "Published issues shown first", + "isDeprecated": false, + "deprecationReason": null } ], "possibleTypes": null @@ -23987,6 +27055,29 @@ "possibleTypes": null }, { + "kind": "ENUM", + "name": "IssueStateEvent", + "description": "Values for issue state events", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "REOPEN", + "description": "Reopens the issue", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CLOSE", + "description": "Closes the issue", + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { "kind": "OBJECT", "name": "IssueStatusCountsType", "description": "Represents total number of issues for the represented statuses", @@ -25555,6 +28646,24 @@ "description": "The connection type for Label.", "fields": [ { + "name": "count", + "description": "Total count of collection", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "edges", "description": "A list of edges.", "args": [ @@ -25672,6 +28781,16 @@ "possibleTypes": null }, { + "kind": "SCALAR", + "name": "ListID", + "description": "Identifier of List", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { "kind": "ENUM", "name": "ListLimitMetric", "description": "List limit metric setting", @@ -25845,6 +28964,30 @@ "description": "Pipeline count", "isDeprecated": false, "deprecationReason": null + }, + { + "name": "PIPELINES_SUCCEEDED", + "description": "Pipeline count with success status", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PIPELINES_FAILED", + "description": "Pipeline count with failed status", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PIPELINES_CANCELED", + "description": "Pipeline count with canceled status", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PIPELINES_SKIPPED", + "description": "Pipeline count with skipped status", + "isDeprecated": false, + "deprecationReason": null } ], "possibleTypes": null @@ -27832,6 +30975,251 @@ }, { "kind": "OBJECT", + "name": "MergeRequestDiffRegistry", + "description": "Represents the Geo sync and verification state of a Merge Request diff", + "fields": [ + { + "name": "createdAt", + "description": "Timestamp when the MergeRequestDiffRegistry was created", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": "ID of the MergeRequestDiffRegistry", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "lastSyncFailure", + "description": "Error message during sync of the MergeRequestDiffRegistry", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "lastSyncedAt", + "description": "Timestamp of the most recent successful sync of the MergeRequestDiffRegistry", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "mergeRequestDiffId", + "description": "ID of the Merge Request diff", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "retryAt", + "description": "Timestamp after which the MergeRequestDiffRegistry should be resynced", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "retryCount", + "description": "Number of consecutive failed sync attempts of the MergeRequestDiffRegistry", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": "Sync state of the MergeRequestDiffRegistry", + "args": [ + + ], + "type": { + "kind": "ENUM", + "name": "RegistryState", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "MergeRequestDiffRegistryConnection", + "description": "The connection type for MergeRequestDiffRegistry.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [ + + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "MergeRequestDiffRegistryEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [ + + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "MergeRequestDiffRegistry", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "MergeRequestDiffRegistryEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "MergeRequestDiffRegistry", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", "name": "MergeRequestEdge", "description": "An edge in a connection.", "fields": [ @@ -27876,6 +31264,16 @@ "possibleTypes": null }, { + "kind": "SCALAR", + "name": "MergeRequestID", + "description": "Identifier of MergeRequest", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { "kind": "OBJECT", "name": "MergeRequestPermissions", "description": "Check permissions for the current user on a merge request", @@ -28515,7 +31913,7 @@ "description": "The milestone to assign to the merge request.\n", "type": { "kind": "SCALAR", - "name": "ID", + "name": "MilestoneID", "ofType": null }, "defaultValue": null @@ -28873,23 +32271,47 @@ { "name": "updated_desc", "description": "Updated at descending order", + "isDeprecated": true, + "deprecationReason": "Use UPDATED_DESC. Deprecated in 13.5" + }, + { + "name": "updated_asc", + "description": "Updated at ascending order", + "isDeprecated": true, + "deprecationReason": "Use UPDATED_ASC. Deprecated in 13.5" + }, + { + "name": "created_desc", + "description": "Created at descending order", + "isDeprecated": true, + "deprecationReason": "Use CREATED_DESC. Deprecated in 13.5" + }, + { + "name": "created_asc", + "description": "Created at ascending order", + "isDeprecated": true, + "deprecationReason": "Use CREATED_ASC. Deprecated in 13.5" + }, + { + "name": "UPDATED_DESC", + "description": "Updated at descending order", "isDeprecated": false, "deprecationReason": null }, { - "name": "updated_asc", + "name": "UPDATED_ASC", "description": "Updated at ascending order", "isDeprecated": false, "deprecationReason": null }, { - "name": "created_desc", + "name": "CREATED_DESC", "description": "Created at descending order", "isDeprecated": false, "deprecationReason": null }, { - "name": "created_asc", + "name": "CREATED_ASC", "description": "Created at ascending order", "isDeprecated": false, "deprecationReason": null @@ -30437,6 +33859,33 @@ "deprecationReason": null }, { + "name": "createBoard", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CreateBoardInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CreateBoardPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "createBranch", "description": null, "args": [ @@ -30572,6 +34021,33 @@ "deprecationReason": null }, { + "name": "createIssue", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CreateIssueInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CreateIssuePayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "createIteration", "description": null, "args": [ @@ -30896,6 +34372,33 @@ "deprecationReason": null }, { + "name": "dastSiteTokenCreate", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "DastSiteTokenCreateInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "DastSiteTokenCreatePayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "deleteAnnotation", "description": null, "args": [ @@ -31031,6 +34534,33 @@ "deprecationReason": null }, { + "name": "destroyBoardList", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "DestroyBoardListInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "DestroyBoardListPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "destroyNote", "description": null, "args": [ @@ -31135,8 +34665,8 @@ "name": "DismissVulnerabilityPayload", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null + "isDeprecated": true, + "deprecationReason": "Use vulnerabilityDismiss. Deprecated in 13.5" }, { "name": "epicAddIssue", @@ -31220,6 +34750,33 @@ "deprecationReason": null }, { + "name": "issueMove", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "IssueMoveInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "IssueMovePayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "issueMoveList", "description": null, "args": [ @@ -31949,6 +35506,33 @@ "deprecationReason": null }, { + "name": "revertVulnerabilityToDetected", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "RevertVulnerabilityToDetectedInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "RevertVulnerabilityToDetectedPayload", + "ofType": null + }, + "isDeprecated": true, + "deprecationReason": "Use vulnerabilityRevertToDetected. Deprecated in 13.5" + }, + { "name": "runDastScan", "description": null, "args": [ @@ -32165,6 +35749,33 @@ "deprecationReason": null }, { + "name": "updateBoardEpicUserPreferences", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "UpdateBoardEpicUserPreferencesInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "UpdateBoardEpicUserPreferencesPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "updateBoardList", "description": null, "args": [ @@ -32408,6 +36019,60 @@ "deprecationReason": null }, { + "name": "vulnerabilityConfirm", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "VulnerabilityConfirmInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "VulnerabilityConfirmPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "vulnerabilityDismiss", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "VulnerabilityDismissInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "VulnerabilityDismissPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "vulnerabilityResolve", "description": null, "args": [ @@ -32433,6 +36098,33 @@ }, "isDeprecated": false, "deprecationReason": null + }, + { + "name": "vulnerabilityRevertToDetected", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "VulnerabilityRevertToDetectedInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "VulnerabilityRevertToDetectedPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null } ], "inputFields": null, @@ -32477,6 +36169,52 @@ "description": null, "fields": [ { + "name": "actualRepositorySizeLimit", + "description": "Size limit for repositories in the namespace in bytes", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "additionalPurchasedStorageSize", + "description": "Additional storage purchased for the root namespace in bytes", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "containsLockedProjects", + "description": "Includes at least one project where the repository size exceeds the limit", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "description", "description": "Description of the namespace", "args": [ @@ -32724,6 +36462,24 @@ "deprecationReason": null }, { + "name": "repositorySizeExcessProjectCount", + "description": "Number of projects in the root namespace where the repository size exceeds the limit", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "requestAccessEnabled", "description": "Indicates if users can request access to namespace", "args": [ @@ -32780,6 +36536,34 @@ "deprecationReason": null }, { + "name": "totalRepositorySize", + "description": "Total repository size of all projects in the root namespace in bytes", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalRepositorySizeExcess", + "description": "Total excess repository size of all projects in the root namespace in bytes", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "visibility", "description": "Visibility of the namespace", "args": [ @@ -32914,6 +36698,16 @@ "possibleTypes": null }, { + "kind": "SCALAR", + "name": "NamespaceID", + "description": "Identifier of Namespace", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { "kind": "INPUT_OBJECT", "name": "NamespaceIncreaseStorageTemporarilyInput", "description": "Autogenerated input type of NamespaceIncreaseStorageTemporarily", @@ -32927,7 +36721,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "NamespaceID", "ofType": null } }, @@ -33535,6 +37329,16 @@ "possibleTypes": null }, { + "kind": "SCALAR", + "name": "NoteID", + "description": "Identifier of Note", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { "kind": "OBJECT", "name": "NotePermissions", "description": null, @@ -33768,6 +37572,11 @@ }, { "kind": "OBJECT", + "name": "BoardEpic", + "ofType": null + }, + { + "kind": "OBJECT", "name": "Design", "ofType": null }, @@ -33795,10 +37604,25 @@ "kind": "OBJECT", "name": "Snippet", "ofType": null + }, + { + "kind": "OBJECT", + "name": "Vulnerability", + "ofType": null } ] }, { + "kind": "SCALAR", + "name": "NoteableID", + "description": "Identifier of Noteable", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { "kind": "OBJECT", "name": "Package", "description": "Represents a package", @@ -34030,7 +37854,7 @@ { "kind": "OBJECT", "name": "PackageFileRegistry", - "description": "Represents the sync and verification state of a package file", + "description": "Represents the Geo sync and verification state of a package file", "fields": [ { "name": "createdAt", @@ -34282,43 +38106,55 @@ "enumValues": [ { "name": "MAVEN", - "description": "Packages from the maven package manager", + "description": "Packages from the Maven package manager", "isDeprecated": false, "deprecationReason": null }, { "name": "NPM", - "description": "Packages from the npm package manager", + "description": "Packages from the NPM package manager", "isDeprecated": false, "deprecationReason": null }, { "name": "CONAN", - "description": "Packages from the conan package manager", + "description": "Packages from the Conan package manager", "isDeprecated": false, "deprecationReason": null }, { "name": "NUGET", - "description": "Packages from the nuget package manager", + "description": "Packages from the Nuget package manager", "isDeprecated": false, "deprecationReason": null }, { "name": "PYPI", - "description": "Packages from the pypi package manager", + "description": "Packages from the PyPI package manager", "isDeprecated": false, "deprecationReason": null }, { "name": "COMPOSER", - "description": "Packages from the composer package manager", + "description": "Packages from the Composer package manager", "isDeprecated": false, "deprecationReason": null }, { "name": "GENERIC", - "description": "Packages from the generic package manager", + "description": "Packages from the Generic package manager", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "GOLANG", + "description": "Packages from the Golang package manager", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEBIAN", + "description": "Packages from the Debian package manager", "isDeprecated": false, "deprecationReason": null } @@ -35391,6 +39227,20 @@ "description": null, "fields": [ { + "name": "actualRepositorySizeLimit", + "description": "Size limit for the repository in bytes", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "alertManagementAlert", "description": "A single Alert Management alert of the project", "args": [ @@ -35441,6 +39291,16 @@ "ofType": null }, "defaultValue": null + }, + { + "name": "assigneeUsername", + "description": "Username of a user assigned to the issue", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null } ], "type": { @@ -35464,6 +39324,16 @@ "ofType": null }, "defaultValue": null + }, + { + "name": "assigneeUsername", + "description": "Username of a user assigned to the issue", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null } ], "type": { @@ -35527,6 +39397,16 @@ "defaultValue": null }, { + "name": "assigneeUsername", + "description": "Username of a user assigned to the issue", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { "name": "after", "description": "Returns the elements in the list that come after the specified cursor.", "type": { @@ -35637,11 +39517,15 @@ "args": [ { "name": "id", - "description": "Find a board by its ID", + "description": "The board's ID", "type": { - "kind": "SCALAR", - "name": "ID", - "ofType": null + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "BoardID", + "ofType": null + } }, "defaultValue": null } @@ -36366,6 +40250,16 @@ "defaultValue": null }, { + "name": "authorUsername", + "description": "Username of the author of the issue", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { "name": "assigneeUsername", "description": "Username of a user assigned to the issue", "type": { @@ -36376,6 +40270,24 @@ "defaultValue": null }, { + "name": "assigneeUsernames", + "description": "Usernames of users assigned to the issue", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { "name": "assigneeId", "description": "ID of a user assigned to the issues, \"none\" and \"any\" values supported", "type": { @@ -36577,6 +40489,16 @@ "defaultValue": null }, { + "name": "authorUsername", + "description": "Username of the author of the issue", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { "name": "assigneeUsername", "description": "Username of a user assigned to the issue", "type": { @@ -36587,6 +40509,24 @@ "defaultValue": null }, { + "name": "assigneeUsernames", + "description": "Usernames of users assigned to the issue", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { "name": "assigneeId", "description": "ID of a user assigned to the issues, \"none\" and \"any\" values supported", "type": { @@ -36754,6 +40694,16 @@ "defaultValue": null }, { + "name": "authorUsername", + "description": "Username of the author of the issue", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { "name": "assigneeUsername", "description": "Username of a user assigned to the issue", "type": { @@ -36764,6 +40714,24 @@ "defaultValue": null }, { + "name": "assigneeUsernames", + "description": "Usernames of users assigned to the issue", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { "name": "assigneeId", "description": "ID of a user assigned to the issues, \"none\" and \"any\" values supported", "type": { @@ -36964,7 +40932,7 @@ "args": [ { "name": "startDate", - "description": "List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.start", "type": { "kind": "SCALAR", "name": "Time", @@ -36974,7 +40942,7 @@ }, { "name": "endDate", - "description": "List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.end", "type": { "kind": "SCALAR", "name": "Time", @@ -36983,6 +40951,16 @@ "defaultValue": null }, { + "name": "timeframe", + "description": "List items overlapping the given timeframe", + "type": { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "ofType": null + }, + "defaultValue": null + }, + { "name": "state", "description": "Filter iterations by state", "type": { @@ -37536,7 +41514,7 @@ "args": [ { "name": "startDate", - "description": "List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.start", "type": { "kind": "SCALAR", "name": "Time", @@ -37546,7 +41524,7 @@ }, { "name": "endDate", - "description": "List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.end", "type": { "kind": "SCALAR", "name": "Time", @@ -37555,6 +41533,16 @@ "defaultValue": null }, { + "name": "timeframe", + "description": "List items overlapping the given timeframe", + "type": { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "ofType": null + }, + "defaultValue": null + }, + { "name": "ids", "description": "Array of global milestone IDs, e.g., \"gid://gitlab/Milestone/1\"", "type": { @@ -37583,6 +41571,36 @@ "defaultValue": null }, { + "name": "title", + "description": "The title of the milestone", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "searchTitle", + "description": "A search string for the title", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "containingDate", + "description": "A date that the milestone contains", + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "defaultValue": null + }, + { "name": "includeAncestors", "description": "Also return milestones in the project's parent group and its ancestors", "type": { @@ -38114,6 +42132,20 @@ "deprecationReason": null }, { + "name": "repositorySizeExcess", + "description": "Size of repository that exceeds the limit in bytes", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "requestAccessEnabled", "description": "Indicates if users can request member access to the project", "args": [ @@ -38129,7 +42161,7 @@ }, { "name": "requirement", - "description": "Find a single requirement. Available only when feature flag `requirements_management` is enabled.", + "description": "Find a single requirement", "args": [ { "name": "iid", @@ -38232,7 +42264,7 @@ }, { "name": "requirements", - "description": "Find requirements. Available only when feature flag `requirements_management` is enabled.", + "description": "Find requirements", "args": [ { "name": "iid", @@ -38727,6 +42759,59 @@ "deprecationReason": null }, { + "name": "terraformStates", + "description": "Terraform states associated with the project", + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "TerraformStateConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "userPermissions", "description": "Permissions for the current user on the resource", "args": [ @@ -39317,6 +43402,16 @@ "possibleTypes": null }, { + "kind": "SCALAR", + "name": "ProjectID", + "description": "Identifier of Project", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { "kind": "OBJECT", "name": "ProjectMember", "description": "Represents a Project Membership", @@ -40982,6 +45077,26 @@ "defaultValue": null }, { + "name": "searchNamespaces", + "description": "Include namespace in project search", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "sort", + "description": "Sort order of results", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { "name": "after", "description": "Returns the elements in the list that come after the specified cursor.", "type": { @@ -41031,6 +45146,59 @@ "deprecationReason": null }, { + "name": "runnerPlatforms", + "description": "Supported runner platforms", + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "RunnerPlatformConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "snippets", "description": "Find Snippets visible to the current user", "args": [ @@ -41617,6 +45785,33 @@ }, "isDeprecated": true, "deprecationReason": "Use `vulnerabilitiesCountByDay`. Deprecated in 13.3" + }, + { + "name": "vulnerability", + "description": "Find a vulnerability", + "args": [ + { + "name": "id", + "description": "The Global ID of the Vulnerability", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "VulnerabilityID", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "Vulnerability", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null } ], "inputFields": null, @@ -42880,7 +47075,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "AwardableID", "ofType": null } }, @@ -42996,7 +47191,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "ProjectID", "ofType": null } }, @@ -43218,6 +47413,34 @@ "deprecationReason": null }, { + "name": "description", + "description": "Description of the requirement", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "descriptionHtml", + "description": "The GitLab Flavored Markdown rendering of `description`", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "id", "description": "ID of the requirement", "args": [ @@ -43254,6 +47477,20 @@ "deprecationReason": null }, { + "name": "lastTestReportManuallyCreated", + "description": "Indicates if latest test report was created by user", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "lastTestReportState", "description": "Latest requirement test report state", "args": [ @@ -43381,6 +47618,20 @@ "deprecationReason": null }, { + "name": "titleHtml", + "description": "The GitLab Flavored Markdown rendering of `title`", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "updatedAt", "description": "Timestamp of when the requirement was last updated", "args": [ @@ -43790,6 +48041,108 @@ ] }, { + "kind": "INPUT_OBJECT", + "name": "RevertVulnerabilityToDetectedInput", + "description": "Autogenerated input type of RevertVulnerabilityToDetected", + "fields": null, + "inputFields": [ + { + "name": "id", + "description": "ID of the vulnerability to be reverted", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "VulnerabilityID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "RevertVulnerabilityToDetectedPayload", + "description": "Autogenerated return type of RevertVulnerabilityToDetected", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "errors", + "description": "Errors encountered during execution of the mutation.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "vulnerability", + "description": "The vulnerability after revert", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "Vulnerability", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { "kind": "OBJECT", "name": "RootStorageStatistics", "description": null, @@ -43849,6 +48202,24 @@ "deprecationReason": null }, { + "name": "pipelineArtifactsSize", + "description": "The CI pipeline artifacts size in bytes", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "repositorySize", "description": "The Git repository size in bytes", "args": [ @@ -44074,6 +48445,381 @@ }, { "kind": "OBJECT", + "name": "RunnerArchitecture", + "description": null, + "fields": [ + { + "name": "downloadLocation", + "description": "Download location for the runner for the platform architecture", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": "Name of the runner platform architecture", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "RunnerArchitectureConnection", + "description": "The connection type for RunnerArchitecture.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [ + + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "RunnerArchitectureEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [ + + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "RunnerArchitecture", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "RunnerArchitectureEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "RunnerArchitecture", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "RunnerPlatform", + "description": null, + "fields": [ + { + "name": "architectures", + "description": "Runner architectures supported for the platform", + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "RunnerArchitectureConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "humanReadableName", + "description": "Human readable name of the runner platform", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": "Name slug of the runner platform", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "RunnerPlatformConnection", + "description": "The connection type for RunnerPlatform.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [ + + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "RunnerPlatformEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [ + + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "RunnerPlatform", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "RunnerPlatformEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "RunnerPlatform", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", "name": "SastCiConfiguration", "description": "Represents a CI configuration of SAST", "fields": [ @@ -44479,6 +49225,63 @@ "possibleTypes": null }, { + "kind": "INPUT_OBJECT", + "name": "SastCiConfigurationAnalyzersEntityInput", + "description": "Represents the analyzers entity in SAST CI configuration", + "fields": null, + "inputFields": [ + { + "name": "name", + "description": "Name of analyzer", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "enabled", + "description": "State of the analyzer", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "variables", + "description": "List of variables for the analyzer", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "SastCiConfigurationEntityInput", + "ofType": null + } + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { "kind": "OBJECT", "name": "SastCiConfigurationEntity", "description": "Represents an entity in SAST CI configuration", @@ -44848,6 +49651,24 @@ } }, "defaultValue": null + }, + { + "name": "analyzers", + "description": "List of analyzers and related variables for the SAST configuration", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "SastCiConfigurationAnalyzersEntityInput", + "ofType": null + } + } + }, + "defaultValue": null } ], "interfaces": null, @@ -45195,6 +50016,20 @@ "description": "Represents summary of a security report", "fields": [ { + "name": "apiFuzzing", + "description": "Aggregated counts for the api_fuzzing scan", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "SecurityReportSummarySection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "containerScanning", "description": "Aggregated counts for the container_scanning scan", "args": [ @@ -45437,6 +50272,12 @@ "description": null, "isDeprecated": false, "deprecationReason": null + }, + { + "name": "API_FUZZING", + "description": null, + "isDeprecated": false, + "deprecationReason": null } ], "possibleTypes": null @@ -47364,24 +52205,69 @@ "name": "blobs", "description": "Snippet blobs", "args": [ - - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", + { + "name": "paths", + "description": "Paths of the blobs", + "type": { + "kind": "LIST", "name": null, "ofType": { - "kind": "OBJECT", - "name": "SnippetBlob", - "ofType": null + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } } - } + }, + "defaultValue": null + }, + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null } + ], + "type": { + "kind": "OBJECT", + "name": "SnippetBlobConnection", + "ofType": null }, "isDeprecated": false, "deprecationReason": null @@ -48037,6 +52923,118 @@ }, { "kind": "OBJECT", + "name": "SnippetBlobConnection", + "description": "The connection type for SnippetBlob.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [ + + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "SnippetBlobEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [ + + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "SnippetBlob", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "SnippetBlobEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "SnippetBlob", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", "name": "SnippetBlobViewer", "description": "Represents how the blob content should be displayed", "fields": [ @@ -48414,23 +53412,47 @@ { "name": "updated_desc", "description": "Updated at descending order", + "isDeprecated": true, + "deprecationReason": "Use UPDATED_DESC. Deprecated in 13.5" + }, + { + "name": "updated_asc", + "description": "Updated at ascending order", + "isDeprecated": true, + "deprecationReason": "Use UPDATED_ASC. Deprecated in 13.5" + }, + { + "name": "created_desc", + "description": "Created at descending order", + "isDeprecated": true, + "deprecationReason": "Use CREATED_DESC. Deprecated in 13.5" + }, + { + "name": "created_asc", + "description": "Created at ascending order", + "isDeprecated": true, + "deprecationReason": "Use CREATED_ASC. Deprecated in 13.5" + }, + { + "name": "UPDATED_DESC", + "description": "Updated at descending order", "isDeprecated": false, "deprecationReason": null }, { - "name": "updated_asc", + "name": "UPDATED_ASC", "description": "Updated at ascending order", "isDeprecated": false, "deprecationReason": null }, { - "name": "created_desc", + "name": "CREATED_DESC", "description": "Created at descending order", "isDeprecated": false, "deprecationReason": null }, { - "name": "created_asc", + "name": "CREATED_ASC", "description": "Created at ascending order", "isDeprecated": false, "deprecationReason": null @@ -48439,6 +53461,89 @@ "possibleTypes": null }, { + "kind": "OBJECT", + "name": "StatusAction", + "description": null, + "fields": [ + { + "name": "buttonTitle", + "description": "Title for the button, for example: Retry this job", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "icon", + "description": "Icon used in the action button", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "method", + "description": "Method for the action, for example: :post", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "path", + "description": "Path for the action", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "title", + "description": "Title for the action, for example: Retry", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { "kind": "SCALAR", "name": "String", "description": "Represents textual data as UTF-8 character sequences. This type is most often used by GraphQL to represent free-form human-readable text.", @@ -48764,12 +53869,237 @@ }, { "kind": "OBJECT", - "name": "TerraformStateRegistry", - "description": "Represents the sync and verification state of a terraform state", + "name": "TerraformState", + "description": null, + "fields": [ + { + "name": "createdAt", + "description": "Timestamp the Terraform state was created", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": "ID of the Terraform state", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "lockedAt", + "description": "Timestamp the Terraform state was locked", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "lockedByUser", + "description": "The user currently holding a lock on the Terraform state", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "User", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": "Name of the Terraform state", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": "Timestamp the Terraform state was updated", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "TerraformStateConnection", + "description": "The connection type for TerraformState.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [ + + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "TerraformStateEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [ + + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "TerraformState", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "TerraformStateEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "TerraformState", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "TerraformStateVersionRegistry", + "description": "Represents the Geo sync and verification state of a terraform state version", "fields": [ { "name": "createdAt", - "description": "Timestamp when the TerraformStateRegistry was created", + "description": "Timestamp when the TerraformStateVersionRegistry was created", "args": [ ], @@ -48783,7 +54113,7 @@ }, { "name": "id", - "description": "ID of the TerraformStateRegistry", + "description": "ID of the TerraformStateVersionRegistry", "args": [ ], @@ -48801,7 +54131,7 @@ }, { "name": "lastSyncFailure", - "description": "Error message during sync of the TerraformStateRegistry", + "description": "Error message during sync of the TerraformStateVersionRegistry", "args": [ ], @@ -48815,7 +54145,7 @@ }, { "name": "lastSyncedAt", - "description": "Timestamp of the most recent successful sync of the TerraformStateRegistry", + "description": "Timestamp of the most recent successful sync of the TerraformStateVersionRegistry", "args": [ ], @@ -48829,7 +54159,7 @@ }, { "name": "retryAt", - "description": "Timestamp after which the TerraformStateRegistry should be resynced", + "description": "Timestamp after which the TerraformStateVersionRegistry should be resynced", "args": [ ], @@ -48843,7 +54173,7 @@ }, { "name": "retryCount", - "description": "Number of consecutive failed sync attempts of the TerraformStateRegistry", + "description": "Number of consecutive failed sync attempts of the TerraformStateVersionRegistry", "args": [ ], @@ -48857,7 +54187,7 @@ }, { "name": "state", - "description": "Sync state of the TerraformStateRegistry", + "description": "Sync state of the TerraformStateVersionRegistry", "args": [ ], @@ -48870,8 +54200,8 @@ "deprecationReason": null }, { - "name": "terraformStateId", - "description": "ID of the TerraformState", + "name": "terraformStateVersionId", + "description": "ID of the terraform state version", "args": [ ], @@ -48897,8 +54227,8 @@ }, { "kind": "OBJECT", - "name": "TerraformStateRegistryConnection", - "description": "The connection type for TerraformStateRegistry.", + "name": "TerraformStateVersionRegistryConnection", + "description": "The connection type for TerraformStateVersionRegistry.", "fields": [ { "name": "edges", @@ -48911,7 +54241,7 @@ "name": null, "ofType": { "kind": "OBJECT", - "name": "TerraformStateRegistryEdge", + "name": "TerraformStateVersionRegistryEdge", "ofType": null } }, @@ -48929,7 +54259,7 @@ "name": null, "ofType": { "kind": "OBJECT", - "name": "TerraformStateRegistry", + "name": "TerraformStateVersionRegistry", "ofType": null } }, @@ -48964,7 +54294,7 @@ }, { "kind": "OBJECT", - "name": "TerraformStateRegistryEdge", + "name": "TerraformStateVersionRegistryEdge", "description": "An edge in a connection.", "fields": [ { @@ -48993,7 +54323,7 @@ ], "type": { "kind": "OBJECT", - "name": "TerraformStateRegistry", + "name": "TerraformStateVersionRegistry", "ofType": null }, "isDeprecated": false, @@ -49278,6 +54608,45 @@ ] }, { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "description": "A time-frame defined as a closed inclusive range of two dates", + "fields": null, + "inputFields": [ + { + "name": "start", + "description": "The start of the range", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Date", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "end", + "description": "The end of the range", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Date", + "ofType": null + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { "kind": "OBJECT", "name": "Timelog", "description": null, @@ -49831,6 +55200,16 @@ "possibleTypes": null }, { + "kind": "SCALAR", + "name": "TodoID", + "description": "Identifier of Todo", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { "kind": "INPUT_OBJECT", "name": "TodoMarkDoneInput", "description": "Autogenerated input type of TodoMarkDone", @@ -49844,7 +55223,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "TodoID", "ofType": null } }, @@ -49950,7 +55329,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "TodoID", "ofType": null } }, @@ -49991,7 +55370,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "TodoID", "ofType": null } } @@ -50400,7 +55779,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "AwardableID", "ofType": null } }, @@ -51176,6 +56555,136 @@ }, { "kind": "INPUT_OBJECT", + "name": "UpdateBoardEpicUserPreferencesInput", + "description": "Autogenerated input type of UpdateBoardEpicUserPreferences", + "fields": null, + "inputFields": [ + { + "name": "boardId", + "description": "The board global ID", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "BoardID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "epicId", + "description": "ID of an epic to set preferences for", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "EpicID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "collapsed", + "description": "Whether the epic should be collapsed in the board", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "UpdateBoardEpicUserPreferencesPayload", + "description": "Autogenerated return type of UpdateBoardEpicUserPreferences", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "epicUserPreferences", + "description": "User preferences for the epic in the board after mutation", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "BoardEpicUserPreferences", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "errors", + "description": "Errors encountered during execution of the mutation.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", "name": "UpdateBoardInput", "description": "Autogenerated input type of UpdateBoard", "fields": null, @@ -51188,7 +56697,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "BoardID", "ofType": null } }, @@ -51229,7 +56738,7 @@ "description": "The id of user to be assigned to the board.", "type": { "kind": "SCALAR", - "name": "ID", + "name": "UserID", "ofType": null }, "defaultValue": null @@ -51239,7 +56748,7 @@ "description": "The id of milestone to be assigned to the board.", "type": { "kind": "SCALAR", - "name": "ID", + "name": "MilestoneID", "ofType": null }, "defaultValue": null @@ -51255,6 +56764,42 @@ "defaultValue": null }, { + "name": "labels", + "description": "Labels of the issue", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "labelIds", + "description": "The IDs of labels to be added to the board.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "LabelID", + "ofType": null + } + } + }, + "defaultValue": null + }, + { "name": "clientMutationId", "description": "A unique identifier for the client performing the mutation.", "type": { @@ -51917,7 +57462,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "NoteID", "ofType": null } }, @@ -52060,16 +57605,6 @@ "defaultValue": null }, { - "name": "title", - "description": "Title of the issue", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { "name": "description", "description": "Description of the issue", "type": { @@ -52084,7 +57619,7 @@ "description": "Due date of the issue", "type": { "kind": "SCALAR", - "name": "Time", + "name": "ISO8601Date", "ofType": null }, "defaultValue": null @@ -52110,8 +57645,28 @@ "defaultValue": null }, { + "name": "title", + "description": "Title of the issue", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "milestoneId", + "description": "The ID of the milestone to assign to the issue. On update milestone will be removed if set to null", + "type": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + }, + "defaultValue": null + }, + { "name": "addLabelIds", - "description": "The IDs of labels to be added to the issue.", + "description": "The IDs of labels to be added to the issue", "type": { "kind": "LIST", "name": null, @@ -52129,7 +57684,7 @@ }, { "name": "removeLabelIds", - "description": "The IDs of labels to be removed from the issue.", + "description": "The IDs of labels to be removed from the issue", "type": { "kind": "LIST", "name": null, @@ -52146,11 +57701,11 @@ "defaultValue": null }, { - "name": "milestoneId", - "description": "The ID of the milestone to be assigned, milestone will be removed if set to null.", + "name": "stateEvent", + "description": "Close or reopen an issue", "type": { - "kind": "SCALAR", - "name": "ID", + "kind": "ENUM", + "name": "IssueStateEvent", "ofType": null }, "defaultValue": null @@ -52166,6 +57721,16 @@ "defaultValue": null }, { + "name": "weight", + "description": "The weight of the issue", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { "name": "epicId", "description": "The ID of the parent epic. NULL when removing the association", "type": { @@ -52427,7 +57992,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "NoteID", "ofType": null } }, @@ -52552,38 +58117,48 @@ "defaultValue": null }, { - "name": "state", - "description": "State of the requirement", + "name": "description", + "description": "Description of the requirement", "type": { - "kind": "ENUM", - "name": "RequirementState", + "kind": "SCALAR", + "name": "String", "ofType": null }, "defaultValue": null }, { - "name": "iid", - "description": "The iid of the requirement to update", + "name": "projectPath", + "description": "Full project path the requirement is associated with", "type": { "kind": "NON_NULL", "name": null, "ofType": { "kind": "SCALAR", - "name": "String", + "name": "ID", "ofType": null } }, "defaultValue": null }, { - "name": "projectPath", - "description": "The project full path the requirement is associated with", + "name": "state", + "description": "State of the requirement", + "type": { + "kind": "ENUM", + "name": "RequirementState", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "iid", + "description": "The iid of the requirement to update", "type": { "kind": "NON_NULL", "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "String", "ofType": null } }, @@ -52661,7 +58236,7 @@ }, { "name": "requirement", - "description": "The requirement after mutation", + "description": "Requirement after mutation", "args": [ ], @@ -52822,6 +58397,20 @@ }, "isDeprecated": false, "deprecationReason": null + }, + { + "name": "spam", + "description": "Indicates whether the operation returns a record detected as spam", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null } ], "inputFields": null, @@ -52993,6 +58582,16 @@ "defaultValue": null }, { + "name": "authorUsername", + "description": "Username of the author", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { "name": "after", "description": "Returns the elements in the list that come after the specified cursor.", "type": { @@ -53188,6 +58787,16 @@ "defaultValue": null }, { + "name": "assigneeUsername", + "description": "Username of the assignee", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { "name": "after", "description": "Returns the elements in the list that come after the specified cursor.", "type": { @@ -54606,6 +60215,63 @@ "deprecationReason": null }, { + "name": "discussions", + "description": "All discussions on this noteable", + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "DiscussionConnection", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "id", "description": "GraphQL ID of the vulnerability", "args": [ @@ -54731,6 +60397,63 @@ "deprecationReason": null }, { + "name": "notes", + "description": "All notes on this noteable", + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "NoteConnection", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "primaryIdentifier", "description": "Primary identifier of the vulnerability.", "args": [ @@ -54760,7 +60483,7 @@ }, { "name": "reportType", - "description": "Type of the security report that found the vulnerability (SAST, DEPENDENCY_SCANNING, CONTAINER_SCANNING, DAST, SECRET_DETECTION, COVERAGE_FUZZING)", + "description": "Type of the security report that found the vulnerability (SAST, DEPENDENCY_SCANNING, CONTAINER_SCANNING, DAST, SECRET_DETECTION, COVERAGE_FUZZING, API_FUZZING)", "args": [ ], @@ -54820,7 +60543,7 @@ }, { "name": "state", - "description": "State of the vulnerability (DETECTED, DISMISSED, RESOLVED, CONFIRMED)", + "description": "State of the vulnerability (DETECTED, CONFIRMED, RESOLVED, DISMISSED)", "args": [ ], @@ -54899,6 +60622,112 @@ ], "inputFields": null, "interfaces": [ + { + "kind": "INTERFACE", + "name": "Noteable", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "VulnerabilityConfirmInput", + "description": "Autogenerated input type of VulnerabilityConfirm", + "fields": null, + "inputFields": [ + { + "name": "id", + "description": "ID of the vulnerability to be confirmed", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "VulnerabilityID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "VulnerabilityConfirmPayload", + "description": "Autogenerated return type of VulnerabilityConfirm", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "errors", + "description": "Errors encountered during execution of the mutation.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "vulnerability", + "description": "The vulnerability after state change", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "Vulnerability", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ ], "enumValues": null, @@ -54972,6 +60801,118 @@ "possibleTypes": null }, { + "kind": "INPUT_OBJECT", + "name": "VulnerabilityDismissInput", + "description": "Autogenerated input type of VulnerabilityDismiss", + "fields": null, + "inputFields": [ + { + "name": "id", + "description": "ID of the vulnerability to be dismissed", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "VulnerabilityID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "comment", + "description": "Reason why vulnerability should be dismissed", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "VulnerabilityDismissPayload", + "description": "Autogenerated return type of VulnerabilityDismiss", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "errors", + "description": "Errors encountered during execution of the mutation.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "vulnerability", + "description": "The vulnerability after dismissal", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "Vulnerability", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { "kind": "OBJECT", "name": "VulnerabilityEdge", "description": "An edge in a connection.", @@ -55993,6 +61934,12 @@ "description": null, "isDeprecated": false, "deprecationReason": null + }, + { + "name": "API_FUZZING", + "description": null, + "isDeprecated": false, + "deprecationReason": null } ], "possibleTypes": null @@ -56005,7 +61952,7 @@ "inputFields": [ { "name": "id", - "description": "ID of the vulnerability to be resolveed", + "description": "ID of the vulnerability to be resolved", "type": { "kind": "NON_NULL", "name": null, @@ -56100,6 +62047,108 @@ "possibleTypes": null }, { + "kind": "INPUT_OBJECT", + "name": "VulnerabilityRevertToDetectedInput", + "description": "Autogenerated input type of VulnerabilityRevertToDetected", + "fields": null, + "inputFields": [ + { + "name": "id", + "description": "ID of the vulnerability to be reverted", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "VulnerabilityID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "VulnerabilityRevertToDetectedPayload", + "description": "Autogenerated return type of VulnerabilityRevertToDetected", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "errors", + "description": "Errors encountered during execution of the mutation.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "vulnerability", + "description": "The vulnerability after revert", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "Vulnerability", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { "kind": "OBJECT", "name": "VulnerabilityScanner", "description": "Represents a vulnerability scanner", @@ -56443,6 +62492,54 @@ "description": "Severity in ascending order", "isDeprecated": false, "deprecationReason": null + }, + { + "name": "title_desc", + "description": "Title in descending order", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "title_asc", + "description": "Title in ascending order", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "detected_desc", + "description": "Detection timestamp in descending order", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "detected_asc", + "description": "Detection timestamp in ascending order", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "report_type_desc", + "description": "Report Type in descending order", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "report_type_asc", + "description": "Report Type in ascending order", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state_desc", + "description": "State in descending order", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state_asc", + "description": "State in ascending order", + "isDeprecated": false, + "deprecationReason": null } ], "possibleTypes": null @@ -56462,7 +62559,7 @@ "deprecationReason": null }, { - "name": "DISMISSED", + "name": "CONFIRMED", "description": null, "isDeprecated": false, "deprecationReason": null @@ -56474,7 +62571,7 @@ "deprecationReason": null }, { - "name": "CONFIRMED", + "name": "DISMISSED", "description": null, "isDeprecated": false, "deprecationReason": null diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index fc27298aff2..dca00fc1286 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -77,6 +77,7 @@ Describes an alert from the project's Alert Management. | `details` | JSON | Alert details | | `detailsUrl` | String! | The URL of the alert detail page | | `endedAt` | Time | Timestamp the alert ended | +| `environment` | Environment | Environment for the alert | | `eventCount` | Int | Number of events of this alert | | `hosts` | String! => Array | List of hosts the alert came from | | `iid` | ID! | Internal ID of the alert | @@ -209,6 +210,57 @@ Represents a project or group board. | `name` | String | Name of the board | | `weight` | Int | Weight of the board. | +### BoardEpic + +Represents an epic on an issue board. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `author` | User! | Author of the epic | +| `closedAt` | Time | Timestamp of when the epic was closed | +| `confidential` | Boolean | Indicates if the epic is confidential | +| `createdAt` | Time | Timestamp of when the epic was created | +| `descendantCounts` | EpicDescendantCount | Number of open and closed descendant epics and issues | +| `descendantWeightSum` | EpicDescendantWeights | Total weight of open and closed issues in the epic and its descendants | +| `description` | String | Description of the epic | +| `downvotes` | Int! | Number of downvotes the epic has received | +| `dueDate` | Time | Due date of the epic | +| `dueDateFixed` | Time | Fixed due date of the epic | +| `dueDateFromMilestones` | Time | Inherited due date of the epic from milestones | +| `dueDateIsFixed` | Boolean | Indicates if the due date has been manually set | +| `group` | Group! | Group to which the epic belongs | +| `hasChildren` | Boolean! | Indicates if the epic has children | +| `hasIssues` | Boolean! | Indicates if the epic has direct issues | +| `hasParent` | Boolean! | Indicates if the epic has a parent epic | +| `healthStatus` | EpicHealthStatus | Current health status of the epic | +| `id` | ID! | ID of the epic | +| `iid` | ID! | Internal ID of the epic | +| `parent` | Epic | Parent epic of the epic | +| `reference` | String! | Internal reference of the epic. Returned in shortened format by default | +| `relationPath` | String | URI path of the epic-issue relationship | +| `relativePosition` | Int | The relative position of the epic in the epic tree | +| `startDate` | Time | Start date of the epic | +| `startDateFixed` | Time | Fixed start date of the epic | +| `startDateFromMilestones` | Time | Inherited start date of the epic from milestones | +| `startDateIsFixed` | Boolean | Indicates if the start date has been manually set | +| `state` | EpicState! | State of the epic | +| `subscribed` | Boolean! | Indicates the currently logged in user is subscribed to the epic | +| `title` | String | Title of the epic | +| `updatedAt` | Time | Timestamp of when the epic was updated | +| `upvotes` | Int! | Number of upvotes the epic has received | +| `userPermissions` | EpicPermissions! | Permissions for the current user on the resource | +| `userPreferences` | BoardEpicUserPreferences | User preferences for the epic on the issue board | +| `webPath` | String! | Web path of the epic | +| `webUrl` | String! | Web URL of the epic | + +### BoardEpicUserPreferences + +Represents user preferences for a board epic. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `collapsed` | Boolean! | Indicates epic should be displayed as collapsed | + ### BoardList Represents a list for an issue board. @@ -272,6 +324,7 @@ Represents the total number of issues and their weights for a particular day. | Field | Type | Description | | ----- | ---- | ----------- | +| `detailedStatus` | DetailedStatus | Detailed status of the group | | `name` | String | Name of the job group | | `size` | Int | Size of the group | @@ -279,12 +332,15 @@ Represents the total number of issues and their weights for a particular day. | Field | Type | Description | | ----- | ---- | ----------- | +| `detailedStatus` | DetailedStatus | Detailed status of the job | | `name` | String | Name of the job | +| `scheduledAt` | Time | Schedule for the build | ### CiStage | Field | Type | Description | | ----- | ---- | ----------- | +| `detailedStatus` | DetailedStatus | Detailed status of the stage | | `name` | String | Name of the stage | ### ClusterAgent @@ -421,6 +477,16 @@ Autogenerated return type of CreateAnnotation. | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | +### CreateBoardPayload + +Autogenerated return type of CreateBoard. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `board` | Board | The board after mutation. | +| `clientMutationId` | String | A unique identifier for the client performing the mutation. | +| `errors` | String! => Array | Errors encountered during execution of the mutation. | + ### CreateBranchPayload Autogenerated return type of CreateBranch. @@ -471,6 +537,16 @@ Autogenerated return type of CreateImageDiffNote. | `errors` | String! => Array | Errors encountered during execution of the mutation. | | `note` | Note | The note after mutation | +### CreateIssuePayload + +Autogenerated return type of CreateIssue. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `clientMutationId` | String | A unique identifier for the client performing the mutation. | +| `errors` | String! => Array | Errors encountered during execution of the mutation. | +| `issue` | Issue | The issue after mutation | + ### CreateIterationPayload Autogenerated return type of CreateIteration. @@ -499,7 +575,7 @@ Autogenerated return type of CreateRequirement. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `requirement` | Requirement | The requirement after mutation | +| `requirement` | Requirement | Requirement after mutation | ### CreateSnippetPayload @@ -510,6 +586,7 @@ Autogenerated return type of CreateSnippet. | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | | `snippet` | Snippet | The snippet after mutation | +| `spam` | Boolean | Indicates whether the operation returns a record detected as spam | ### CreateTestCasePayload @@ -541,8 +618,11 @@ Represents a DAST scanner profile. | `globalId` | DastScannerProfileID! | ID of the DAST scanner profile | | `id` **{warning-solid}** | ID! | **Deprecated:** Use `global_id`. Deprecated in 13.4 | | `profileName` | String | Name of the DAST scanner profile | +| `scanType` | DastScanTypeEnum | Indicates the type of DAST scan that will run. Either a Passive Scan or an Active Scan. | +| `showDebugMessages` | Boolean! | Indicates if debug messages should be included in DAST console output. True to include the debug messages. | | `spiderTimeout` | Int | The maximum number of minutes allowed for the spider to traverse the site | | `targetTimeout` | Int | The maximum number of seconds allowed for the site under test to respond to a request | +| `useAjaxSpider` | Boolean! | Indicates if the AJAX spider should be used to crawl the target site. True to run the AJAX spider in addition to the traditional spider, and false to run only the traditional spider. | ### DastScannerProfileCreatePayload @@ -624,6 +704,18 @@ Autogenerated return type of DastSiteProfileUpdate. | `errors` | String! => Array | Errors encountered during execution of the mutation. | | `id` | DastSiteProfileID | ID of the site profile. | +### DastSiteTokenCreatePayload + +Autogenerated return type of DastSiteTokenCreate. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `clientMutationId` | String | A unique identifier for the client performing the mutation. | +| `errors` | String! => Array | Errors encountered during execution of the mutation. | +| `id` | DastSiteTokenID | ID of the site token. | +| `status` | DastSiteProfileValidationStatusEnum | The current validation status of the target. | +| `token` | String | Token string. | + ### DeleteAnnotationPayload Autogenerated return type of DeleteAnnotation. @@ -685,6 +777,7 @@ A collection of designs. | Field | Type | Description | | ----- | ---- | ----------- | +| `copyState` | DesignCollectionCopyState | Copy state of the design collection | | `design` | Design | Find a specific design | | `designAtVersion` | DesignAtVersion | Find a design as of a version | | `issue` | Issue! | Issue associated with the design collection | @@ -739,6 +832,16 @@ A specific version in which designs were added, modified or deleted. | `id` | ID! | ID of the design version | | `sha` | ID! | SHA of the design version | +### DestroyBoardListPayload + +Autogenerated return type of DestroyBoardList. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `clientMutationId` | String | A unique identifier for the client performing the mutation. | +| `errors` | String! => Array | Errors encountered during execution of the mutation. | +| `list` | BoardList | The list after mutation. | + ### DestroyBoardPayload Autogenerated return type of DestroyBoard. @@ -773,14 +876,15 @@ Autogenerated return type of DestroySnippet. | Field | Type | Description | | ----- | ---- | ----------- | -| `detailsPath` | String! | Path of the details for the pipeline status | -| `favicon` | String! | Favicon of the pipeline status | -| `group` | String! | Group of the pipeline status | -| `hasDetails` | Boolean! | Indicates if the pipeline status has further details | -| `icon` | String! | Icon of the pipeline status | -| `label` | String! | Label of the pipeline status | -| `text` | String! | Text of the pipeline status | -| `tooltip` | String! | Tooltip associated with the pipeline status | +| `action` | StatusAction | Action information for the status. This includes method, button title, icon, path, and title | +| `detailsPath` | String | Path of the details for the status | +| `favicon` | String | Favicon of the status | +| `group` | String | Group of the status | +| `hasDetails` | Boolean | Indicates if the status has further details | +| `icon` | String | Icon of the status | +| `label` | String | Label of the status | +| `text` | String | Text of the status | +| `tooltip` | String | Tooltip associated with the status | ### DiffPosition @@ -866,9 +970,10 @@ Describes where code is deployed for a project. | Field | Type | Description | | ----- | ---- | ----------- | | `id` | ID! | ID of the environment | -| `latestOpenedMostSevereAlert` | AlertManagementAlert | The most severe open alert for the environment. If multiple alerts have equal severity, the most recent is returned. | +| `latestOpenedMostSevereAlert` | AlertManagementAlert | The most severe open alert for the environment. If multiple alerts have equal severity, the most recent is returned | | `metricsDashboard` | MetricsDashboard | Metrics dashboard schema for the environment | | `name` | String! | Human-readable name of the environment | +| `path` | String | The path to the environment. Will always return null if `expose_environment_path_in_alert_details` feature flag is disabled | | `state` | String! | State of the environment, for example: available/stopped | ### Epic @@ -878,9 +983,9 @@ Represents an epic. | Field | Type | Description | | ----- | ---- | ----------- | | `author` | User! | Author of the epic | -| `closedAt` | Time | Timestamp of the epic's closure | +| `closedAt` | Time | Timestamp of when the epic was closed | | `confidential` | Boolean | Indicates if the epic is confidential | -| `createdAt` | Time | Timestamp of the epic's creation | +| `createdAt` | Time | Timestamp of when the epic was created | | `descendantCounts` | EpicDescendantCount | Number of open and closed descendant epics and issues | | `descendantWeightSum` | EpicDescendantWeights | Total weight of open and closed issues in the epic and its descendants | | `description` | String | Description of the epic | @@ -907,7 +1012,7 @@ Represents an epic. | `state` | EpicState! | State of the epic | | `subscribed` | Boolean! | Indicates the currently logged in user is subscribed to the epic | | `title` | String | Title of the epic | -| `updatedAt` | Time | Timestamp of the epic's last activity | +| `updatedAt` | Time | Timestamp of when the epic was updated | | `upvotes` | Int! | Number of upvotes the epic has received | | `userPermissions` | EpicPermissions! | Permissions for the current user on the resource | | `webPath` | String! | Web path of the epic | @@ -984,6 +1089,7 @@ Relationship between an epic and an issue. | `relationPath` | String | URI path of the epic-issue relation | | `relativePosition` | Int | Relative position of the issue (used for positioning in epic tree and issue boards) | | `severity` | IssuableSeverity | Severity level of the incident | +| `slaDueAt` | Time | Timestamp of when the issue SLA expires. | | `state` | IssueState! | State of the issue | | `statusPagePublishedIncident` | Boolean | Indicates whether an issue is published to the status page | | `subscribed` | Boolean! | Indicates the currently logged in user is subscribed to the issue | @@ -1069,9 +1175,12 @@ Autogenerated return type of EpicTreeReorder. | Field | Type | Description | | ----- | ---- | ----------- | +| `actualRepositorySizeLimit` | Float | Size limit for repositories in the namespace in bytes | +| `additionalPurchasedStorageSize` | Float | Additional storage purchased for the root namespace in bytes | | `autoDevopsEnabled` | Boolean | Indicates whether Auto DevOps is enabled for all projects within this group | | `avatarUrl` | String | Avatar URL of the group | | `board` | Board | A single board of the group | +| `containsLockedProjects` | Boolean! | Includes at least one project where the repository size exceeds the limit | | `description` | String | Description of the namespace | | `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` | | `emailsDisabled` | Boolean | Indicates if a group has email notifications disabled | @@ -1089,6 +1198,7 @@ Autogenerated return type of EpicTreeReorder. | `parent` | Group | Parent group | | `path` | String! | Path of the namespace | | `projectCreationLevel` | String | The permission level required to create projects in the group | +| `repositorySizeExcessProjectCount` | Int! | Number of projects in the root namespace where the repository size exceeds the limit | | `requestAccessEnabled` | Boolean | Indicates if users can request access to namespace | | `requireTwoFactorAuthentication` | Boolean | Indicates if all users in this group are required to set up two-factor authentication | | `rootStorageStatistics` | RootStorageStatistics | Aggregated storage statistics of the namespace. Only available for root namespaces | @@ -1096,6 +1206,8 @@ Autogenerated return type of EpicTreeReorder. | `storageSizeLimit` | Float | Total storage limit of the root namespace in bytes | | `subgroupCreationLevel` | String | The permission level required to create subgroups within the group | | `temporaryStorageIncreaseEndsOn` | Time | Date until the temporary storage increase is active | +| `totalRepositorySize` | Float | Total repository size of all projects in the root namespace in bytes | +| `totalRepositorySizeExcess` | Float | Total excess repository size of all projects in the root namespace in bytes | | `twoFactorGracePeriod` | Int | Time before two-factor authentication is enforced | | `userPermissions` | GroupPermissions! | Permissions for the current user on the resource | | `visibility` | String | Visibility of the namespace | @@ -1168,6 +1280,7 @@ Represents a recorded measurement (object count) for the Admins. | `reference` | String! | Internal reference of the issue. Returned in shortened format by default | | `relativePosition` | Int | Relative position of the issue (used for positioning in epic tree and issue boards) | | `severity` | IssuableSeverity | Severity level of the incident | +| `slaDueAt` | Time | Timestamp of when the issue SLA expires. | | `state` | IssueState! | State of the issue | | `statusPagePublishedIncident` | Boolean | Indicates whether an issue is published to the status page | | `subscribed` | Boolean! | Indicates the currently logged in user is subscribed to the issue | @@ -1195,6 +1308,16 @@ Autogenerated return type of IssueMoveList. | `errors` | String! => Array | Errors encountered during execution of the mutation. | | `issue` | Issue | The issue after mutation | +### IssueMovePayload + +Autogenerated return type of IssueMove. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `clientMutationId` | String | A unique identifier for the client performing the mutation. | +| `errors` | String! => Array | Errors encountered during execution of the mutation. | +| `issue` | Issue | The issue after mutation | + ### IssuePermissions Check permissions for the current user on a issue. @@ -1486,6 +1609,21 @@ Autogenerated return type of MergeRequestCreate. | `errors` | String! => Array | Errors encountered during execution of the mutation. | | `mergeRequest` | MergeRequest | The merge request after mutation | +### MergeRequestDiffRegistry + +Represents the Geo sync and verification state of a Merge Request diff. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `createdAt` | Time | Timestamp when the MergeRequestDiffRegistry was created | +| `id` | ID! | ID of the MergeRequestDiffRegistry | +| `lastSyncFailure` | String | Error message during sync of the MergeRequestDiffRegistry | +| `lastSyncedAt` | Time | Timestamp of the most recent successful sync of the MergeRequestDiffRegistry | +| `mergeRequestDiffId` | ID! | ID of the Merge Request diff | +| `retryAt` | Time | Timestamp after which the MergeRequestDiffRegistry should be resynced | +| `retryCount` | Int | Number of consecutive failed sync attempts of the MergeRequestDiffRegistry | +| `state` | RegistryState | Sync state of the MergeRequestDiffRegistry | + ### MergeRequestPermissions Check permissions for the current user on a merge request. @@ -1630,6 +1768,9 @@ Contains statistics about a milestone. | Field | Type | Description | | ----- | ---- | ----------- | +| `actualRepositorySizeLimit` | Float | Size limit for repositories in the namespace in bytes | +| `additionalPurchasedStorageSize` | Float | Additional storage purchased for the root namespace in bytes | +| `containsLockedProjects` | Boolean! | Includes at least one project where the repository size exceeds the limit | | `description` | String | Description of the namespace | | `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` | | `fullName` | String! | Full name of the namespace | @@ -1639,10 +1780,13 @@ Contains statistics about a milestone. | `lfsEnabled` | Boolean | Indicates if Large File Storage (LFS) is enabled for namespace | | `name` | String! | Name of the namespace | | `path` | String! | Path of the namespace | +| `repositorySizeExcessProjectCount` | Int! | Number of projects in the root namespace where the repository size exceeds the limit | | `requestAccessEnabled` | Boolean | Indicates if users can request access to namespace | | `rootStorageStatistics` | RootStorageStatistics | Aggregated storage statistics of the namespace. Only available for root namespaces | | `storageSizeLimit` | Float | Total storage limit of the root namespace in bytes | | `temporaryStorageIncreaseEndsOn` | Time | Date until the temporary storage increase is active | +| `totalRepositorySize` | Float | Total repository size of all projects in the root namespace in bytes | +| `totalRepositorySizeExcess` | Float | Total excess repository size of all projects in the root namespace in bytes | | `visibility` | String | Visibility of the namespace | ### NamespaceIncreaseStorageTemporarilyPayload @@ -1702,7 +1846,7 @@ Represents a package. ### PackageFileRegistry -Represents the sync and verification state of a package file. +Represents the Geo sync and verification state of a package file. | Field | Type | Description | | ----- | ---- | ----------- | @@ -1790,6 +1934,7 @@ Autogenerated return type of PipelineRetry. | Field | Type | Description | | ----- | ---- | ----------- | +| `actualRepositorySizeLimit` | Float | Size limit for the repository in bytes | | `alertManagementAlert` | AlertManagementAlert | A single Alert Management alert of the project | | `alertManagementAlertStatusCounts` | AlertManagementAlertStatusCountsType | Counts of alerts by status for the project | | `allowMergeOnSkippedPipeline` | Boolean | If `only_allow_merge_if_pipeline_succeeds` is true, indicates if merge requests of the project can also be merged with skipped jobs | @@ -1836,8 +1981,9 @@ Autogenerated return type of PipelineRetry. | `release` | Release | A single release of the project | | `removeSourceBranchAfterMerge` | Boolean | Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project | | `repository` | Repository | Git repository of the project | +| `repositorySizeExcess` | Float | Size of repository that exceeds the limit in bytes | | `requestAccessEnabled` | Boolean | Indicates if users can request member access to the project | -| `requirement` | Requirement | Find a single requirement. Available only when feature flag `requirements_management` is enabled. | +| `requirement` | Requirement | Find a single requirement | | `requirementStatesCount` | RequirementStatesCount | Number of requirements for the project by their state | | `sastCiConfiguration` | SastCiConfiguration | SAST CI configuration for the project | | `securityDashboardPath` | String | Path to project's security dashboard | @@ -2049,12 +2195,16 @@ Represents a requirement. | ----- | ---- | ----------- | | `author` | User! | Author of the requirement | | `createdAt` | Time! | Timestamp of when the requirement was created | +| `description` | String | Description of the requirement | +| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` | | `id` | ID! | ID of the requirement | | `iid` | ID! | Internal ID of the requirement | +| `lastTestReportManuallyCreated` | Boolean | Indicates if latest test report was created by user | | `lastTestReportState` | TestReportState | Latest requirement test report state | | `project` | Project! | Project to which the requirement belongs | | `state` | RequirementState! | State of the requirement | | `title` | String | Title of the requirement | +| `titleHtml` | String | The GitLab Flavored Markdown rendering of `title` | | `updatedAt` | Time! | Timestamp of when the requirement was last updated | | `userPermissions` | RequirementPermissions! | Permissions for the current user on the resource | @@ -2079,6 +2229,16 @@ Counts of requirements by their state. | `archived` | Int | Number of archived requirements | | `opened` | Int | Number of opened requirements | +### RevertVulnerabilityToDetectedPayload + +Autogenerated return type of RevertVulnerabilityToDetected. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `clientMutationId` | String | A unique identifier for the client performing the mutation. | +| `errors` | String! => Array | Errors encountered during execution of the mutation. | +| `vulnerability` | Vulnerability | The vulnerability after revert | + ### RootStorageStatistics | Field | Type | Description | @@ -2086,6 +2246,7 @@ Counts of requirements by their state. | `buildArtifactsSize` | Float! | The CI artifacts size in bytes | | `lfsObjectsSize` | Float! | The LFS objects size in bytes | | `packagesSize` | Float! | The packages size in bytes | +| `pipelineArtifactsSize` | Float! | The CI pipeline artifacts size in bytes | | `repositorySize` | Float! | The Git repository size in bytes | | `snippetsSize` | Float! | The snippets size in bytes | | `storageSize` | Float! | The total storage in bytes | @@ -2101,6 +2262,20 @@ Autogenerated return type of RunDASTScan. | `errors` | String! => Array | Errors encountered during execution of the mutation. | | `pipelineUrl` | String | URL of the pipeline that was created. | +### RunnerArchitecture + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `downloadLocation` | String! | Download location for the runner for the platform architecture | +| `name` | String! | Name of the runner platform architecture | + +### RunnerPlatform + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `humanReadableName` | String! | Human readable name of the runner platform | +| `name` | String! | Name slug of the runner platform | + ### SastCiConfigurationAnalyzersEntity Represents an analyzer entity in SAST CI configuration. @@ -2150,6 +2325,7 @@ Represents summary of a security report. | Field | Type | Description | | ----- | ---- | ----------- | +| `apiFuzzing` | SecurityReportSummarySection | Aggregated counts for the api_fuzzing scan | | `containerScanning` | SecurityReportSummarySection | Aggregated counts for the container_scanning scan | | `coverageFuzzing` | SecurityReportSummarySection | Aggregated counts for the coverage_fuzzing scan | | `dast` | SecurityReportSummarySection | Aggregated counts for the dast scan | @@ -2302,7 +2478,6 @@ Represents a snippet entry. | ----- | ---- | ----------- | | `author` | User | The owner of the snippet | | `blob` **{warning-solid}** | SnippetBlob! | **Deprecated:** Use `blobs`. Deprecated in 13.3 | -| `blobs` | SnippetBlob! => Array | Snippet blobs | | `createdAt` | Time! | Timestamp this snippet was created | | `description` | String | Description of the snippet | | `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` | @@ -2362,6 +2537,16 @@ Represents how the blob content should be displayed. | `reportSnippet` | Boolean! | Indicates the user can perform `report_snippet` on this resource | | `updateSnippet` | Boolean! | Indicates the user can perform `update_snippet` on this resource | +### StatusAction + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `buttonTitle` | String | Title for the button, for example: Retry this job | +| `icon` | String | Icon used in the action button | +| `method` | String | Method for the action, for example: :post | +| `path` | String | Path for the action | +| `title` | String | Title for the action, for example: Retry | + ### Submodule | Field | Type | Description | @@ -2384,20 +2569,31 @@ Completion status of tasks. | `completedCount` | Int! | Number of completed tasks | | `count` | Int! | Number of total tasks | -### TerraformStateRegistry +### TerraformState + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `createdAt` | Time! | Timestamp the Terraform state was created | +| `id` | ID! | ID of the Terraform state | +| `lockedAt` | Time | Timestamp the Terraform state was locked | +| `lockedByUser` | User | The user currently holding a lock on the Terraform state | +| `name` | String! | Name of the Terraform state | +| `updatedAt` | Time! | Timestamp the Terraform state was updated | + +### TerraformStateVersionRegistry -Represents the sync and verification state of a terraform state. +Represents the Geo sync and verification state of a terraform state version. | Field | Type | Description | | ----- | ---- | ----------- | -| `createdAt` | Time | Timestamp when the TerraformStateRegistry was created | -| `id` | ID! | ID of the TerraformStateRegistry | -| `lastSyncFailure` | String | Error message during sync of the TerraformStateRegistry | -| `lastSyncedAt` | Time | Timestamp of the most recent successful sync of the TerraformStateRegistry | -| `retryAt` | Time | Timestamp after which the TerraformStateRegistry should be resynced | -| `retryCount` | Int | Number of consecutive failed sync attempts of the TerraformStateRegistry | -| `state` | RegistryState | Sync state of the TerraformStateRegistry | -| `terraformStateId` | ID! | ID of the TerraformState | +| `createdAt` | Time | Timestamp when the TerraformStateVersionRegistry was created | +| `id` | ID! | ID of the TerraformStateVersionRegistry | +| `lastSyncFailure` | String | Error message during sync of the TerraformStateVersionRegistry | +| `lastSyncedAt` | Time | Timestamp of the most recent successful sync of the TerraformStateVersionRegistry | +| `retryAt` | Time | Timestamp after which the TerraformStateVersionRegistry should be resynced | +| `retryCount` | Int | Number of consecutive failed sync attempts of the TerraformStateVersionRegistry | +| `state` | RegistryState | Sync state of the TerraformStateVersionRegistry | +| `terraformStateVersionId` | ID! | ID of the terraform state version | ### TestReport @@ -2523,6 +2719,16 @@ Autogenerated return type of UpdateAlertStatus. | `issue` | Issue | The issue created after mutation | | `todo` | Todo | The todo after mutation | +### UpdateBoardEpicUserPreferencesPayload + +Autogenerated return type of UpdateBoardEpicUserPreferences. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `clientMutationId` | String | A unique identifier for the client performing the mutation. | +| `epicUserPreferences` | BoardEpicUserPreferences | User preferences for the epic in the board after mutation | +| `errors` | String! => Array | Errors encountered during execution of the mutation. | + ### UpdateBoardListPayload Autogenerated return type of UpdateBoardList. @@ -2611,7 +2817,7 @@ Autogenerated return type of UpdateRequirement. | ----- | ---- | ----------- | | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | -| `requirement` | Requirement | The requirement after mutation | +| `requirement` | Requirement | Requirement after mutation | ### UpdateSnippetPayload @@ -2622,6 +2828,7 @@ Autogenerated return type of UpdateSnippet. | `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. | | `snippet` | Snippet | The snippet after mutation | +| `spam` | Boolean | Indicates whether the operation returns a record detected as spam | ### User @@ -2690,16 +2897,36 @@ Represents a vulnerability. | `location` | VulnerabilityLocation | Location metadata for the vulnerability. Its fields depend on the type of security scan that found the vulnerability | | `primaryIdentifier` | VulnerabilityIdentifier | Primary identifier of the vulnerability. | | `project` | Project | The project on which the vulnerability was found | -| `reportType` | VulnerabilityReportType | Type of the security report that found the vulnerability (SAST, DEPENDENCY_SCANNING, CONTAINER_SCANNING, DAST, SECRET_DETECTION, COVERAGE_FUZZING) | +| `reportType` | VulnerabilityReportType | Type of the security report that found the vulnerability (SAST, DEPENDENCY_SCANNING, CONTAINER_SCANNING, DAST, SECRET_DETECTION, COVERAGE_FUZZING, API_FUZZING) | | `resolvedOnDefaultBranch` | Boolean! | Indicates whether the vulnerability is fixed on the default branch or not | | `scanner` | VulnerabilityScanner | Scanner metadata for the vulnerability. | | `severity` | VulnerabilitySeverity | Severity of the vulnerability (INFO, UNKNOWN, LOW, MEDIUM, HIGH, CRITICAL) | -| `state` | VulnerabilityState | State of the vulnerability (DETECTED, DISMISSED, RESOLVED, CONFIRMED) | +| `state` | VulnerabilityState | State of the vulnerability (DETECTED, CONFIRMED, RESOLVED, DISMISSED) | | `title` | String | Title of the vulnerability | | `userNotesCount` | Int! | Number of user notes attached to the vulnerability | | `userPermissions` | VulnerabilityPermissions! | Permissions for the current user on the resource | | `vulnerabilityPath` | String | URL to the vulnerability's details page | +### VulnerabilityConfirmPayload + +Autogenerated return type of VulnerabilityConfirm. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `clientMutationId` | String | A unique identifier for the client performing the mutation. | +| `errors` | String! => Array | Errors encountered during execution of the mutation. | +| `vulnerability` | Vulnerability | The vulnerability after state change | + +### VulnerabilityDismissPayload + +Autogenerated return type of VulnerabilityDismiss. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `clientMutationId` | String | A unique identifier for the client performing the mutation. | +| `errors` | String! => Array | Errors encountered during execution of the mutation. | +| `vulnerability` | Vulnerability | The vulnerability after dismissal | + ### VulnerabilityIdentifier Represents a vulnerability identifier. @@ -2812,6 +3039,16 @@ Autogenerated return type of VulnerabilityResolve. | `errors` | String! => Array | Errors encountered during execution of the mutation. | | `vulnerability` | Vulnerability | The vulnerability after state change | +### VulnerabilityRevertToDetectedPayload + +Autogenerated return type of VulnerabilityRevertToDetected. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| `clientMutationId` | String | A unique identifier for the client performing the mutation. | +| `errors` | String! => Array | Errors encountered during execution of the mutation. | +| `vulnerability` | Vulnerability | The vulnerability after revert | + ### VulnerabilityScanner Represents a vulnerability scanner. @@ -2890,6 +3127,8 @@ Values for sorting alerts. | Value | Description | | ----- | ----------- | +| `CREATED_ASC` | Created at ascending order | +| `CREATED_DESC` | Created at descending order | | `CREATED_TIME_ASC` | Created time by ascending order | | `CREATED_TIME_DESC` | Created time by descending order | | `ENDED_AT_ASC` | End time by ascending order | @@ -2902,12 +3141,14 @@ Values for sorting alerts. | `STARTED_AT_DESC` | Start time by descending order | | `STATUS_ASC` | Status by order: Ignored > Resolved > Acknowledged > Triggered | | `STATUS_DESC` | Status by order: Triggered > Acknowledged > Resolved > Ignored | +| `UPDATED_ASC` | Updated at ascending order | +| `UPDATED_DESC` | Updated at descending order | | `UPDATED_TIME_ASC` | Created time by ascending order | | `UPDATED_TIME_DESC` | Created time by descending order | -| `created_asc` | Created at ascending order | -| `created_desc` | Created at descending order | -| `updated_asc` | Updated at ascending order | -| `updated_desc` | Updated at descending order | +| `created_asc` **{warning-solid}** | **Deprecated:** Use CREATED_ASC. Deprecated in 13.5 | +| `created_desc` **{warning-solid}** | **Deprecated:** Use CREATED_DESC. Deprecated in 13.5 | +| `updated_asc` **{warning-solid}** | **Deprecated:** Use UPDATED_ASC. Deprecated in 13.5 | +| `updated_desc` **{warning-solid}** | **Deprecated:** Use UPDATED_DESC. Deprecated in 13.5 | ### AlertManagementSeverity @@ -2996,6 +3237,7 @@ Mode of a commit action. | Value | Description | | ----- | ----------- | +| `ACTIVE` | Active DAST scan. This scan will make active attacks against the target site. | | `PASSIVE` | Passive DAST scan. This scan will not make active attacks against the target site. | ### DastSiteProfileValidationStatusEnum @@ -3007,6 +3249,16 @@ Mode of a commit action. | `PASSED_VALIDATION` | Site validation process finished successfully | | `PENDING_VALIDATION` | Site validation process has not started | +### DesignCollectionCopyState + +Copy state of a DesignCollection. + +| Value | Description | +| ----- | ----------- | +| `ERROR` | The DesignCollection encountered an error during a copy | +| `IN_PROGRESS` | The DesignCollection is being copied | +| `READY` | The DesignCollection has no copy in progress | + ### DesignVersionEvent Mutation event of a design within a version. @@ -3115,6 +3367,8 @@ Values for sorting issues. | Value | Description | | ----- | ----------- | +| `CREATED_ASC` | Created at ascending order | +| `CREATED_DESC` | Created at descending order | | `DUE_DATE_ASC` | Due date by ascending order | | `DUE_DATE_DESC` | Due date by descending order | | `LABEL_PRIORITY_ASC` | Label priority by ascending order | @@ -3123,13 +3377,19 @@ Values for sorting issues. | `MILESTONE_DUE_DESC` | Milestone due date by descending order | | `PRIORITY_ASC` | Priority by ascending order | | `PRIORITY_DESC` | Priority by descending order | +| `PUBLISHED_ASC` | Published issues shown last | +| `PUBLISHED_DESC` | Published issues shown first | | `RELATIVE_POSITION_ASC` | Relative position by ascending order | +| `SEVERITY_ASC` | Severity from less critical to more critical | +| `SEVERITY_DESC` | Severity from more critical to less critical | +| `UPDATED_ASC` | Updated at ascending order | +| `UPDATED_DESC` | Updated at descending order | | `WEIGHT_ASC` | Weight by ascending order | | `WEIGHT_DESC` | Weight by descending order | -| `created_asc` | Created at ascending order | -| `created_desc` | Created at descending order | -| `updated_asc` | Updated at ascending order | -| `updated_desc` | Updated at descending order | +| `created_asc` **{warning-solid}** | **Deprecated:** Use CREATED_ASC. Deprecated in 13.5 | +| `created_desc` **{warning-solid}** | **Deprecated:** Use CREATED_DESC. Deprecated in 13.5 | +| `updated_asc` **{warning-solid}** | **Deprecated:** Use UPDATED_ASC. Deprecated in 13.5 | +| `updated_desc` **{warning-solid}** | **Deprecated:** Use UPDATED_DESC. Deprecated in 13.5 | ### IssueState @@ -3142,6 +3402,15 @@ State of a GitLab issue. | `locked` | | | `opened` | | +### IssueStateEvent + +Values for issue state events. + +| Value | Description | +| ----- | ----------- | +| `CLOSE` | Closes the issue | +| `REOPEN` | Reopens the issue | + ### IssueType Issue type. @@ -3184,6 +3453,10 @@ Possible identifier types for a measurement. | `ISSUES` | Issue count | | `MERGE_REQUESTS` | Merge request count | | `PIPELINES` | Pipeline count | +| `PIPELINES_CANCELED` | Pipeline count with canceled status | +| `PIPELINES_FAILED` | Pipeline count with failed status | +| `PIPELINES_SKIPPED` | Pipeline count with skipped status | +| `PIPELINES_SUCCEEDED` | Pipeline count with success status | | `PROJECTS` | Project count | | `USERS` | User count | @@ -3193,6 +3466,8 @@ Values for sorting merge requests. | Value | Description | | ----- | ----------- | +| `CREATED_ASC` | Created at ascending order | +| `CREATED_DESC` | Created at descending order | | `LABEL_PRIORITY_ASC` | Label priority by ascending order | | `LABEL_PRIORITY_DESC` | Label priority by descending order | | `MERGED_AT_ASC` | Merge time by ascending order | @@ -3201,10 +3476,12 @@ Values for sorting merge requests. | `MILESTONE_DUE_DESC` | Milestone due date by descending order | | `PRIORITY_ASC` | Priority by ascending order | | `PRIORITY_DESC` | Priority by descending order | -| `created_asc` | Created at ascending order | -| `created_desc` | Created at descending order | -| `updated_asc` | Updated at ascending order | -| `updated_desc` | Updated at descending order | +| `UPDATED_ASC` | Updated at ascending order | +| `UPDATED_DESC` | Updated at descending order | +| `created_asc` **{warning-solid}** | **Deprecated:** Use CREATED_ASC. Deprecated in 13.5 | +| `created_desc` **{warning-solid}** | **Deprecated:** Use CREATED_DESC. Deprecated in 13.5 | +| `updated_asc` **{warning-solid}** | **Deprecated:** Use UPDATED_ASC. Deprecated in 13.5 | +| `updated_desc` **{warning-solid}** | **Deprecated:** Use UPDATED_DESC. Deprecated in 13.5 | ### MergeRequestState @@ -3256,13 +3533,15 @@ Values for sorting projects. | Value | Description | | ----- | ----------- | -| `COMPOSER` | Packages from the composer package manager | -| `CONAN` | Packages from the conan package manager | -| `GENERIC` | Packages from the generic package manager | -| `MAVEN` | Packages from the maven package manager | -| `NPM` | Packages from the npm package manager | -| `NUGET` | Packages from the nuget package manager | -| `PYPI` | Packages from the pypi package manager | +| `COMPOSER` | Packages from the Composer package manager | +| `CONAN` | Packages from the Conan package manager | +| `DEBIAN` | Packages from the Debian package manager | +| `GENERIC` | Packages from the Generic package manager | +| `GOLANG` | Packages from the Golang package manager | +| `MAVEN` | Packages from the Maven package manager | +| `NPM` | Packages from the NPM package manager | +| `NUGET` | Packages from the Nuget package manager | +| `PYPI` | Packages from the PyPI package manager | ### PipelineConfigSourceEnum @@ -3352,6 +3631,7 @@ The type of the security scanner. | Value | Description | | ----- | ----------- | +| `API_FUZZING` | | | `CONTAINER_SCANNING` | | | `COVERAGE_FUZZING` | | | `DAST` | | @@ -3428,10 +3708,14 @@ Common sort values. | Value | Description | | ----- | ----------- | -| `created_asc` | Created at ascending order | -| `created_desc` | Created at descending order | -| `updated_asc` | Updated at ascending order | -| `updated_desc` | Updated at descending order | +| `CREATED_ASC` | Created at ascending order | +| `CREATED_DESC` | Created at descending order | +| `UPDATED_ASC` | Updated at ascending order | +| `UPDATED_DESC` | Updated at descending order | +| `created_asc` **{warning-solid}** | **Deprecated:** Use CREATED_ASC. Deprecated in 13.5 | +| `created_desc` **{warning-solid}** | **Deprecated:** Use CREATED_DESC. Deprecated in 13.5 | +| `updated_asc` **{warning-solid}** | **Deprecated:** Use UPDATED_ASC. Deprecated in 13.5 | +| `updated_desc` **{warning-solid}** | **Deprecated:** Use UPDATED_DESC. Deprecated in 13.5 | ### TestReportState @@ -3532,6 +3816,7 @@ The type of the security scan that found the vulnerability. | Value | Description | | ----- | ----------- | +| `API_FUZZING` | | | `CONTAINER_SCANNING` | | | `COVERAGE_FUZZING` | | | `DAST` | | @@ -3558,8 +3843,16 @@ Vulnerability sort values. | Value | Description | | ----- | ----------- | +| `detected_asc` | Detection timestamp in ascending order | +| `detected_desc` | Detection timestamp in descending order | +| `report_type_asc` | Report Type in ascending order | +| `report_type_desc` | Report Type in descending order | | `severity_asc` | Severity in ascending order | | `severity_desc` | Severity in descending order | +| `state_asc` | State in ascending order | +| `state_desc` | State in descending order | +| `title_asc` | Title in ascending order | +| `title_desc` | Title in descending order | ### VulnerabilityState diff --git a/doc/api/group_clusters.md b/doc/api/group_clusters.md index 17413ea2a3b..27b76d1f0c0 100644 --- a/doc/api/group_clusters.md +++ b/doc/api/group_clusters.md @@ -8,8 +8,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/30213) in GitLab 12.1. -NOTE: **Note:** -User will need at least maintainer access for the group to use these endpoints. +Users need at least [Maintainer](../user/permissions.md) access for the group to use these endpoints. ## List group clusters diff --git a/doc/api/group_iterations.md b/doc/api/group_iterations.md new file mode 100644 index 00000000000..62431244d78 --- /dev/null +++ b/doc/api/group_iterations.md @@ -0,0 +1,55 @@ +--- +stage: Plan +group: Project Management +info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers +--- + +# Group iterations API **(STARTER)** + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/118742) in [GitLab Starter](https://about.gitlab.com/pricing/) 13.5. + +This page describes the group iterations API. +There's a separate [project iterations API](./iterations.md) page. + +## List group iterations + +Returns a list of group iterations. + +```plaintext +GET /groups/:id/iterations +GET /groups/:id/iterations?state=opened +GET /groups/:id/iterations?state=closed +GET /groups/:id/iterations?title=1.0 +GET /groups/:id/iterations?search=version +``` + +| Attribute | Type | Required | Description | +| ------------------- | ------- | -------- | ----------- | +| `state` | string | no | Return only `opened`, `upcoming`, `started`, `closed`, or `all` iterations. Defaults to `all`. | +| `search` | string | no | Return only iterations with a title matching the provided string. | +| `include_ancestors` | boolean | no | Include iterations from parent group and its ancestors. Defaults to `true`. | + +Example request: + +```shell +curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/5/iterations" +``` + +Example response: + +```json +[ + { + "id": 53, + "iid": 13, + "group_id": 5, + "title": "Iteration II", + "description": "Ipsum Lorem ipsum", + "state": 2, + "created_at": "2020-01-27T05:07:12.573Z", + "updated_at": "2020-01-27T05:07:12.573Z", + "due_date": "2020-02-01", + "start_date": "2020-02-14" + } +] +``` diff --git a/doc/api/group_milestones.md b/doc/api/group_milestones.md index 47350442b3e..3220707e9e3 100644 --- a/doc/api/group_milestones.md +++ b/doc/api/group_milestones.md @@ -9,7 +9,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/12819) in GitLab 9.5. This page describes the group milestones API. -There's a separate [project milestones API](./group_milestones.md) page. +There's a separate [project milestones API](./milestones.md) page. ## List group milestones diff --git a/doc/api/group_wikis.md b/doc/api/group_wikis.md index 414c795e092..c61a557fcc6 100644 --- a/doc/api/group_wikis.md +++ b/doc/api/group_wikis.md @@ -5,9 +5,9 @@ info: "To determine the technical writer assigned to the Stage/Group associated type: reference, api --- -# Wikis API +# Group wikis API **(PREMIUM)** -> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/212199) in GitLab 13.2. +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/212199) in [GitLab Premium](https://about.gitlab.com/pricing/) 13.5. Available only in APIv4. diff --git a/doc/api/groups.md b/doc/api/groups.md index ae3300e24fb..53c92cf85ec 100644 --- a/doc/api/groups.md +++ b/doc/api/groups.md @@ -167,6 +167,89 @@ GET /groups/:id/subgroups ] ``` +## List a group's descendant groups + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/217115) in GitLab 13.5 + +Get a list of visible descendant groups of this group. +When accessed without authentication, only public groups are returned. + +By default, this request returns 20 results at a time because the API results [are paginated](README.md#pagination). + +Parameters: + +| Attribute | Type | Required | Description | +| ------------------------ | ----------------- | -------- | ----------- | +| `id` | integer/string | yes | The ID or [URL-encoded path of the group](README.md#namespaced-path-encoding) of the immediate parent group | +| `skip_groups` | array of integers | no | Skip the group IDs passed | +| `all_available` | boolean | no | Show all the groups you have access to (defaults to `false` for authenticated users, `true` for admin). Attributes `owned` and `min_access_level` have precedence | +| `search` | string | no | Return the list of authorized groups matching the search criteria | +| `order_by` | string | no | Order groups by `name`, `path`, or `id`. Default is `name` | +| `sort` | string | no | Order groups in `asc` or `desc` order. Default is `asc` | +| `statistics` | boolean | no | Include group statistics (admins only) | +| `with_custom_attributes` | boolean | no | Include [custom attributes](custom_attributes.md) in response (admins only) | +| `owned` | boolean | no | Limit to groups explicitly owned by the current user | +| `min_access_level` | integer | no | Limit to groups where current user has at least this [access level](members.md#valid-access-levels) | + +```plaintext +GET /groups/:id/descendant_groups +``` + +```json +[ + { + "id": 2, + "name": "Bar Group", + "path": "foo/bar", + "description": "A subgroup of Foo Group", + "visibility": "public", + "share_with_group_lock": false, + "require_two_factor_authentication": false, + "two_factor_grace_period": 48, + "project_creation_level": "developer", + "auto_devops_enabled": null, + "subgroup_creation_level": "owner", + "emails_disabled": null, + "mentions_disabled": null, + "lfs_enabled": true, + "default_branch_protection": 2, + "avatar_url": "http://gitlab.example.com/uploads/group/avatar/1/bar.jpg", + "web_url": "http://gitlab.example.com/groups/foo/bar", + "request_access_enabled": false, + "full_name": "Bar Group", + "full_path": "foo/bar", + "file_template_project_id": 1, + "parent_id": 123, + "created_at": "2020-01-15T12:36:29.590Z" + }, + { + "id": 3, + "name": "Baz Group", + "path": "foo/bar/baz", + "description": "A subgroup of Bar Group", + "visibility": "public", + "share_with_group_lock": false, + "require_two_factor_authentication": false, + "two_factor_grace_period": 48, + "project_creation_level": "developer", + "auto_devops_enabled": null, + "subgroup_creation_level": "owner", + "emails_disabled": null, + "mentions_disabled": null, + "lfs_enabled": true, + "default_branch_protection": 2, + "avatar_url": "http://gitlab.example.com/uploads/group/avatar/1/baz.jpg", + "web_url": "http://gitlab.example.com/groups/foo/bar/baz", + "request_access_enabled": false, + "full_name": "Baz Group", + "full_path": "foo/bar/baz", + "file_template_project_id": 1, + "parent_id": 123, + "created_at": "2020-01-15T12:36:29.590Z" + } +] +``` + ## List a group's projects Get a list of projects in this group. When accessed without authentication, only public projects are returned. @@ -357,6 +440,7 @@ Example response: "import_status":"failed", "open_issues_count":10, "ci_default_git_depth":50, + "ci_forward_deployment_enabled":true, "public_jobs":true, "build_timeout":3600, "auto_cancel_pending_pipelines":"enabled", @@ -676,6 +760,7 @@ Parameters: | `default_branch_protection` | integer | no | See [Options for `default_branch_protection`](#options-for-default_branch_protection). Default to the global level default branch protection setting. | | `shared_runners_minutes_limit` | integer | no | **(STARTER ONLY)** Pipeline minutes quota for this group (included in plan). Can be `nil` (default; inherit system default), `0` (unlimited) or `> 0` | | `extra_shared_runners_minutes_limit` | integer | no | **(STARTER ONLY)** Extra pipeline minutes quota for this group (purchased in addition to the minutes included in the plan). | +| `shared_runners_setting` | string | no | See [Options for `shared_runners_setting`](#options-for-shared_runners_setting). Enable or disable shared runners for a group's subgroups and projects. | ### Options for `default_branch_protection` @@ -687,6 +772,16 @@ The `default_branch_protection` attribute determines whether developers and main | `1` | Partial protection. Developers and maintainers can: <br>- Push new commits | | `2` | Full protection. Only maintainers can: <br>- Push new commits | +### Options for `shared_runners_setting` + +The `shared_runners_setting` attribute determines whether shared runners are enabled for a group's subgroups and projects. + +| Value | Description | +|-------|-------------------------------------------------------------------------------------------------------------| +| `enabled` | Enables shared runners for all projects and subgroups in this group. | +| `disabled_with_override` | Disables shared runners for all projects and subgroups in this group, but allows subgroups to override this setting. | +| `disabled_and_unoverridable` | Disables shared runners for all projects and subgroups in this group, and prevents subgroups from overriding this setting. | + ## New Subgroup This is similar to creating a [New group](#new-group). You'll need the `parent_id` from the [List groups](#list-groups) call. You can then enter the desired: @@ -696,7 +791,7 @@ This is similar to creating a [New group](#new-group). You'll need the `parent_i ```shell curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" \ - --data '{"path": "<subgroup_path>", "name": "<subgroup_name>", "parent_id": <parent_group_id> } \ + --data '{"path": "<subgroup_path>", "name": "<subgroup_name>", "parent_id": <parent_group_id> }' \ "https://gitlab.example.com/api/v4/groups/" ``` diff --git a/doc/api/import.md b/doc/api/import.md index 54e7eb12ed1..e377853ade0 100644 --- a/doc/api/import.md +++ b/doc/api/import.md @@ -50,8 +50,8 @@ POST /import/bitbucket_server | `personal_access_token` | string | yes | Bitbucket Server personal access token/password | | `bitbucket_server_project` | string | yes | Bitbucket Project Key | | `bitbucket_server_repo` | string | yes | Bitbucket Repository Name | -| `new_name` | string | no | New repo name | -| `target_namespace` | string | no | Namespace to import repo into | +| `new_name` | string | no | New repository name | +| `target_namespace` | string | no | Namespace to import repository into | ```shell curl --request POST \ diff --git a/doc/api/instance_level_ci_variables.md b/doc/api/instance_level_ci_variables.md index d8f306a822c..e8550d41c44 100644 --- a/doc/api/instance_level_ci_variables.md +++ b/doc/api/instance_level_ci_variables.md @@ -70,7 +70,7 @@ curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/a Create a new instance-level variable. -[Since GitLab 13.1](https://gitlab.com/gitlab-org/gitlab/-/issues/216097), the maximum number of allowed instance-level variables can be changed. +[In GitLab 13.1 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/216097), the maximum number of allowed instance-level variables can be changed. ```plaintext POST /admin/ci/variables @@ -79,7 +79,7 @@ POST /admin/ci/variables | Attribute | Type | required | Description | |-----------------|---------|----------|-----------------------| | `key` | string | yes | The `key` of a variable. Max 255 characters, only `A-Z`, `a-z`, `0-9`, and `_` are allowed. | -| `value` | string | yes | The `value` of a variable. 10,000 characters allowed. [Since GitLab 13.3](https://gitlab.com/gitlab-org/gitlab/-/issues/220028) | +| `value` | string | yes | The `value` of a variable. 10,000 characters allowed ([GitLab 13.3 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/220028)). | | `variable_type` | string | no | The type of a variable. Available types are: `env_var` (default) and `file`. | | `protected` | boolean | no | Whether the variable is protected. | | `masked` | boolean | no | Whether the variable is masked. | @@ -109,7 +109,7 @@ PUT /admin/ci/variables/:key | Attribute | Type | required | Description | |-----------------|---------|----------|-------------------------| | `key` | string | yes | The `key` of a variable. | -| `value` | string | yes | The `value` of a variable. [Since GitLab 13.3](https://gitlab.com/gitlab-org/gitlab/-/issues/220028), around 10,000 characters allowed. Previously 700 characters. | +| `value` | string | yes | The `value` of a variable. 10,000 characters allowed ([GitLab 13.3 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/220028)). | | `variable_type` | string | no | The type of a variable. Available types are: `env_var` (default) and `file`. | | `protected` | boolean | no | Whether the variable is protected. | | `masked` | boolean | no | Whether the variable is masked. | diff --git a/doc/api/issue_links.md b/doc/api/issue_links.md index b6502bf099c..757910d0946 100644 --- a/doc/api/issue_links.md +++ b/doc/api/issue_links.md @@ -1,8 +1,11 @@ -# Issue links API **(STARTER)** +# Issue links API **(CORE)** + +> The simple "relates to" relationship [moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212329) to [GitLab Core](https://about.gitlab.com/pricing/) in 13.4. ## List issue relations -Get a list of related issues of a given issue, sorted by the relationship creation datetime (ascending). +Get a list of a given issue's [related issues](../user/project/issues/related_issues.md), +sorted by the relationship creation datetime (ascending). Issues will be filtered according to the user authorizations. ```plaintext @@ -55,19 +58,20 @@ Parameters: ## Create an issue link -Creates a two-way relation between two issues. User must be allowed to update both issues in order to succeed. +Creates a two-way relation between two issues. The user must be allowed to +update both issues to succeed. ```plaintext POST /projects/:id/issues/:issue_iid/links ``` -| Attribute | Type | Required | Description | -|-------------|---------|----------|--------------------------------------| -| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user | -| `issue_iid` | integer | yes | The internal ID of a project's issue | +| Attribute | Type | Required | Description | +|---------------------|----------------|----------|--------------------------------------| +| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user | +| `issue_iid` | integer | yes | The internal ID of a project's issue | | `target_project_id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) of a target project | -| `target_issue_iid` | integer/string | yes | The internal ID of a target project's issue | -| `link_type` | string | no | The type of the relation ("relates_to", "blocks", "is_blocked_by"), defaults to "relates_to"). | +| `target_issue_iid` | integer/string | yes | The internal ID of a target project's issue | +| `link_type` | string | no | The type of the relation ("relates_to", "blocks", "is_blocked_by"), defaults to "relates_to"). | ```shell curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/4/issues/1/links?target_project_id=5&target_issue_iid=1" diff --git a/doc/api/issues.md b/doc/api/issues.md index d8249869cab..b50ea7b42be 100644 --- a/doc/api/issues.md +++ b/doc/api/issues.md @@ -16,7 +16,7 @@ are paginated. Read more on [pagination](README.md#pagination). -CAUTION: **Deprecation:** +DANGER: **Deprecated:** The `reference` attribute in responses is deprecated in favor of `references`. Introduced in [GitLab 12.6](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/20354). @@ -33,19 +33,19 @@ use parameter `scope=all`. ```plaintext GET /issues -GET /issues?state=opened -GET /issues?state=closed +GET /issues?assignee_id=5 +GET /issues?author_id=5 +GET /issues?confidential=true +GET /issues?iids[]=42&iids[]=43 GET /issues?labels=foo GET /issues?labels=foo,bar GET /issues?labels=foo,bar&state=opened GET /issues?milestone=1.0.0 GET /issues?milestone=1.0.0&state=opened -GET /issues?iids[]=42&iids[]=43 -GET /issues?author_id=5 -GET /issues?assignee_id=5 GET /issues?my_reaction_emoji=star GET /issues?search=foo&in=title -GET /issues?confidential=true +GET /issues?state=closed +GET /issues?state=opened ``` | Attribute | Type | Required | Description | @@ -194,7 +194,7 @@ the `health_status` parameter: ] ``` -NOTE: **Note:** +DANGER: **Deprecated:** The `assignee` column is deprecated. We now show it as a single-sized array `assignees` to conform to the GitLab EE API. @@ -212,19 +212,19 @@ The preferred way to do this, is by using [personal access tokens](../user/profi ```plaintext GET /groups/:id/issues -GET /groups/:id/issues?state=opened -GET /groups/:id/issues?state=closed +GET /groups/:id/issues?assignee_id=5 +GET /groups/:id/issues?author_id=5 +GET /groups/:id/issues?confidential=true +GET /groups/:id/issues?iids[]=42&iids[]=43 GET /groups/:id/issues?labels=foo GET /groups/:id/issues?labels=foo,bar GET /groups/:id/issues?labels=foo,bar&state=opened GET /groups/:id/issues?milestone=1.0.0 GET /groups/:id/issues?milestone=1.0.0&state=opened -GET /groups/:id/issues?iids[]=42&iids[]=43 -GET /groups/:id/issues?search=issue+title+or+description -GET /groups/:id/issues?author_id=5 -GET /groups/:id/issues?assignee_id=5 GET /groups/:id/issues?my_reaction_emoji=star -GET /groups/:id/issues?confidential=true +GET /groups/:id/issues?search=issue+title+or+description +GET /groups/:id/issues?state=closed +GET /groups/:id/issues?state=opened ``` | Attribute | Type | Required | Description | @@ -372,7 +372,7 @@ the `health_status` parameter: ] ``` -NOTE: **Note:** +DANGER: **Deprecated:** The `assignee` column is deprecated. We now show it as a single-sized array `assignees` to conform to the GitLab EE API. NOTE: **Note:** @@ -389,19 +389,19 @@ The preferred way to do this, is by using [personal access tokens](../user/profi ```plaintext GET /projects/:id/issues -GET /projects/:id/issues?state=opened -GET /projects/:id/issues?state=closed +GET /projects/:id/issues?assignee_id=5 +GET /projects/:id/issues?author_id=5 +GET /projects/:id/issues?confidential=true +GET /projects/:id/issues?iids[]=42&iids[]=43 GET /projects/:id/issues?labels=foo GET /projects/:id/issues?labels=foo,bar GET /projects/:id/issues?labels=foo,bar&state=opened GET /projects/:id/issues?milestone=1.0.0 GET /projects/:id/issues?milestone=1.0.0&state=opened -GET /projects/:id/issues?iids[]=42&iids[]=43 -GET /projects/:id/issues?search=issue+title+or+description -GET /projects/:id/issues?author_id=5 -GET /projects/:id/issues?assignee_id=5 GET /projects/:id/issues?my_reaction_emoji=star -GET /projects/:id/issues?confidential=true +GET /projects/:id/issues?search=issue+title+or+description +GET /projects/:id/issues?state=closed +GET /projects/:id/issues?state=opened ``` | Attribute | Type | Required | Description | @@ -555,7 +555,7 @@ the `health_status` parameter: ] ``` -NOTE: **Note:** +DANGER: **Deprecated:** The `assignee` column is deprecated. We now show it as a single-sized array `assignees` to conform to the GitLab EE API. NOTE: **Note:** @@ -574,7 +574,7 @@ GET /issues/:id | Attribute | Type | Required | Description | |-------------|---------|----------|--------------------------------------| -| `id` | integer | yes | The ID of the issue | +| `id` | integer | yes | The ID of the issue | ```shell curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/issues/41" @@ -663,10 +663,10 @@ Example response: "weight": null, "has_tasks": false, "_links": { - "self": "http://gitlab.dummy:3000/api/v4/projects/1/issues/1", - "notes": "http://gitlab.dummy:3000/api/v4/projects/1/issues/1/notes", - "award_emoji": "http://gitlab.dummy:3000/api/v4/projects/1/issues/1/award_emoji", - "project": "http://gitlab.dummy:3000/api/v4/projects/1" + "self": "http://gitlab.example:3000/api/v4/projects/1/issues/1", + "notes": "http://gitlab.example:3000/api/v4/projects/1/issues/1/notes", + "award_emoji": "http://gitlab.example:3000/api/v4/projects/1/issues/1/award_emoji", + "project": "http://gitlab.example:3000/api/v4/projects/1" }, "references": { "short": "#1", @@ -712,19 +712,19 @@ the `epic` property: } ``` -NOTE: **Note:** +DANGER: **Deprecated:** The `assignee` column is deprecated. We now show it as a single-sized array `assignees` to conform to the GitLab EE API. +DANGER: **Deprecated:** +The `epic_iid` attribute is deprecated, and [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/-/issues/35157). +Please use `iid` of the `epic` attribute instead. + NOTE: **Note:** The `closed_by` attribute was [introduced in GitLab 10.6](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/17042). This value is only present for issues closed after GitLab 10.6 and if the user account that closed the issue still exists. -NOTE: **Note:** -The `epic_iid` attribute is deprecated, and [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/-/issues/35157). -Please use `iid` of the `epic` attribute instead. - ## Single project issue Get a single project issue. @@ -874,17 +874,17 @@ property: ] ``` -NOTE: **Note:** +DANGER: **Deprecated:** The `assignee` column is deprecated. We now show it as a single-sized array `assignees` to conform to the GitLab EE API. +DANGER: **Deprecated:** +The `epic_iid` attribute is deprecated and [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/-/issues/35157). +Please use `iid` of the `epic` attribute instead. + NOTE: **Note:** The `closed_by` attribute was [introduced in GitLab 10.6](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/17042). This value is only present for issues closed after GitLab 10.6 and if the user account that closed the issue still exists. -NOTE: **Note:** -The `epic_iid` attribute is deprecated and [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/-/issues/35157). -Please use `iid` of the `epic` attribute instead. - ## New issue Creates a new project issue. @@ -895,21 +895,21 @@ POST /projects/:id/issues | Attribute | Type | Required | Description | |-------------------------------------------|----------------|----------|--------------| +| `assignee_ids` | integer array | no | The ID of the user(s) to assign the issue to. | +| `confidential` | boolean | no | Set an issue to be confidential. Default is `false`. | +| `created_at` | string | no | When the issue was created. Date time string, ISO 8601 formatted, for example `2016-03-11T03:45:40Z`. Requires administrator or project/group owner rights. | +| `description` | string | no | The description of an issue. Limited to 1,048,576 characters. | +| `discussion_to_resolve` | string | no | The ID of a discussion to resolve. This fills out the issue with a default description and mark the discussion as resolved. Use in combination with `merge_request_to_resolve_discussions_of`. | +| `due_date` | string | no | The due date. Date time string in the format YEAR-MONTH-DAY, for example `2016-03-11` | +| `epic_id` **(PREMIUM)** | integer | no | ID of the epic to add the issue to. Valid values are greater than or equal to 0. | +| `epic_iid` **(PREMIUM)** | integer | no | IID of the epic to add the issue to. Valid values are greater than or equal to 0. (deprecated, [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/-/issues/35157)) | | `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user | | `iid` | integer/string | no | The internal ID of the project's issue (requires administrator or project owner rights) | -| `title` | string | yes | The title of an issue | -| `description` | string | no | The description of an issue. Limited to 1,048,576 characters. | -| `confidential` | boolean | no | Set an issue to be confidential. Default is `false`. | -| `assignee_ids` | integer array | no | The ID of the user(s) to assign the issue to. | -| `milestone_id` | integer | no | The global ID of a milestone to assign issue | | `labels` | string | no | Comma-separated label names for an issue | -| `created_at` | string | no | Date time string, ISO 8601 formatted, for example `2016-03-11T03:45:40Z` (requires administrator or project/group owner rights) | -| `due_date` | string | no | Date time string in the format YEAR-MONTH-DAY, for example `2016-03-11` | | `merge_request_to_resolve_discussions_of` | integer | no | The IID of a merge request in which to resolve all issues. This fills out the issue with a default description and mark all discussions as resolved. When passing a description or title, these values take precedence over the default values.| -| `discussion_to_resolve` | string | no | The ID of a discussion to resolve. This fills out the issue with a default description and mark the discussion as resolved. Use in combination with `merge_request_to_resolve_discussions_of`. | +| `milestone_id` | integer | no | The global ID of a milestone to assign issue | +| `title` | string | yes | The title of an issue | | `weight` **(STARTER)** | integer | no | The weight of the issue. Valid values are greater than or equal to 0. | -| `epic_id` **(PREMIUM)** | integer | no | ID of the epic to add the issue to. Valid values are greater than or equal to 0. | -| `epic_iid` **(PREMIUM)** | integer | no | IID of the epic to add the issue to. Valid values are greater than or equal to 0. (deprecated, [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/-/issues/35157)) | ```shell curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/4/issues?title=Issues%20with%20auth&labels=bug" @@ -1002,7 +1002,7 @@ the `health_status` parameter: ] ``` -NOTE: **Note:** +DANGER: **Deprecated:** The `assignee` column is deprecated. We now show it as a single-sized array `assignees` to conform to the GitLab EE API. NOTE: **Note:** @@ -1019,29 +1019,43 @@ See [Issues rate limits](../user/admin_area/settings/rate_limit_on_issues_creati Updates an existing project issue. This call is also used to mark an issue as closed. +At least one of the following parameters is required for the request to be successful: + +- `:assignee_id` +- `:assignee_ids` +- `:confidential` +- `:created_at` +- `:description` +- `:discussion_locked` +- `:due_date` +- `:labels` +- `:milestone_id` +- `:state_event` +- `:title` + ```plaintext PUT /projects/:id/issues/:issue_iid ``` | Attribute | Type | Required | Description | |----------------|---------|----------|------------------------------------------------------------------------------------------------------------| +| `add_labels` | string | no | Comma-separated label names to add to an issue. | +| `assignee_ids` | integer array | no | The ID of the user(s) to assign the issue to. Set to `0` or provide an empty value to unassign all assignees. | +| `confidential` | boolean | no | Updates an issue to be confidential | +| `description` | string | no | The description of an issue. Limited to 1,048,576 characters. | +| `discussion_locked` | boolean | no | Flag indicating if the issue's discussion is locked. If the discussion is locked only project members can add or edit comments. | +| `due_date` | string | no | The due date. Date time string in the format YEAR-MONTH-DAY, for example `2016-03-11` | +| `epic_id` **(PREMIUM)** | integer | no | ID of the epic to add the issue to. Valid values are greater than or equal to 0. | +| `epic_iid` **(PREMIUM)** | integer | no | IID of the epic to add the issue to. Valid values are greater than or equal to 0. (deprecated, [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/-/issues/35157)) | | `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user | | `issue_iid` | integer | yes | The internal ID of a project's issue | -| `title` | string | no | The title of an issue | -| `description` | string | no | The description of an issue. Limited to 1,048,576 characters. | -| `confidential` | boolean | no | Updates an issue to be confidential | -| `assignee_ids` | integer array | no | The ID of the user(s) to assign the issue to. Set to `0` or provide an empty value to unassign all assignees. | -| `milestone_id` | integer | no | The global ID of a milestone to assign the issue to. Set to `0` or provide an empty value to unassign a milestone.| | `labels` | string | no | Comma-separated label names for an issue. Set to an empty string to unassign all labels. | -| `add_labels` | string | no | Comma-separated label names to add to an issue. | +| `milestone_id` | integer | no | The global ID of a milestone to assign the issue to. Set to `0` or provide an empty value to unassign a milestone.| | `remove_labels`| string | no | Comma-separated label names to remove from an issue. | | `state_event` | string | no | The state event of an issue. Set `close` to close the issue and `reopen` to reopen it | -| `updated_at` | string | no | Date time string, ISO 8601 formatted, for example `2016-03-11T03:45:40Z` (requires administrator or project owner rights). Empty string or null values are not accepted.| -| `due_date` | string | no | Date time string in the format YEAR-MONTH-DAY, for example `2016-03-11` | +| `title` | string | no | The title of an issue | +| `updated_at` | string | no | When the issue was updated. Date time string, ISO 8601 formatted, for example `2016-03-11T03:45:40Z` (requires administrator or project owner rights). Empty string or null values are not accepted.| | `weight` **(STARTER)** | integer | no | The weight of the issue. Valid values are greater than or equal to 0. 0 | -| `discussion_locked` | boolean | no | Flag indicating if the issue's discussion is locked. If the discussion is locked only project members can add or edit comments. | -| `epic_id` **(PREMIUM)** | integer | no | ID of the epic to add the issue to. Valid values are greater than or equal to 0. | -| `epic_iid` **(PREMIUM)** | integer | no | IID of the epic to add the issue to. Valid values are greater than or equal to 0. (deprecated, [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/-/issues/35157)) | ```shell curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/4/issues/85?state_event=close" @@ -1142,15 +1156,12 @@ the `health_status` parameter: ``` NOTE: **Note:** -At least one of following parameters is required to be passed for the request to be successful: `:assignee_id`, `:assignee_ids`, `:confidential`, `:created_at`, `:description`, `:discussion_locked`, `:due_date`, `:labels`, `:milestone_id`, `:state_event`, or `:title`. - -NOTE: **Note:** -`assignee` column is deprecated. We now show it as a single-sized array `assignees` to conform to the GitLab EE API. - -NOTE: **Note:** The `closed_by` attribute was [introduced in GitLab 10.6](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/17042). This value is only present for issues closed after GitLab 10.6 and if the user account that closed the issue still exists. +DANGER: **Deprecated:** +`assignee` column is deprecated. We now show it as a single-sized array `assignees` to conform to the GitLab EE API. + ## Delete an issue Only for admins and project owners. Deletes the issue in question. @@ -1309,7 +1320,7 @@ the `health_status` parameter: ] ``` -NOTE: **Note:** +DANGER: **Deprecated:** The `assignee` column is deprecated. We now show it as a single-sized array `assignees` to conform to the GitLab EE API. NOTE: **Note:** @@ -1418,7 +1429,7 @@ the `weight` parameter: } ``` -NOTE: **Note:** +DANGER: **Deprecated:** The `assignee` column is deprecated. We now show it as a single-sized array `assignees` to conform to the GitLab EE API. NOTE: **Note:** @@ -1496,10 +1507,10 @@ Example response: } ``` -## Create a to-do +## Create a to do -Manually creates a to-do for the current user on an issue. If -there already exists a to-do for the user on that issue, status code `304` is +Manually creates a to do for the current user on an issue. If +there already exists a to do for the user on that issue, status code `304` is returned. ```plaintext @@ -1608,7 +1619,7 @@ Example response: } ``` -NOTE: **Note:** +DANGER: **Deprecated:** The `assignee` column is deprecated. We now show it as a single-sized array `assignees` to conform to the GitLab EE API. NOTE: **Note:** @@ -1625,9 +1636,9 @@ POST /projects/:id/issues/:issue_iid/time_estimate | Attribute | Type | Required | Description | |-------------|---------|----------|------------------------------------------| +| `duration` | string | yes | The duration in human format. e.g: 3h30m | | `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user | | `issue_iid` | integer | yes | The internal ID of a project's issue | -| `duration` | string | yes | The duration in human format. e.g: 3h30m | ```shell curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/issues/93/time_estimate?duration=3h30m" @@ -1682,9 +1693,9 @@ POST /projects/:id/issues/:issue_iid/add_spent_time | Attribute | Type | Required | Description | |-------------|---------|----------|------------------------------------------| +| `duration` | string | yes | The duration in human format. e.g: 3h30m | | `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user | | `issue_iid` | integer | yes | The internal ID of a project's issue | -| `duration` | string | yes | The duration in human format. e.g: 3h30m | ```shell curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/issues/93/add_spent_time?duration=1h" diff --git a/doc/api/iterations.md b/doc/api/iterations.md new file mode 100644 index 00000000000..53a6bb00f23 --- /dev/null +++ b/doc/api/iterations.md @@ -0,0 +1,57 @@ +--- +stage: Plan +group: Project Management +info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers +--- + +# Project iterations API **(STARTER)** + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/118742) in [GitLab Starter](https://about.gitlab.com/pricing/) 13.5. + +This page describes the project iterations API. +There's a separate [group iterations API](./group_iterations.md) page. + +As of GitLab 13.5, we don't have project-level iterations, but you can use this endpoint to fetch the iterations of the project's ancestor groups. + +## List project iterations + +Returns a list of project iterations. + +```plaintext +GET /projects/:id/iterations +GET /projects/:id/iterations?state=opened +GET /projects/:id/iterations?state=closed +GET /projects/:id/iterations?title=1.0 +GET /projects/:id/iterations?search=version +``` + +| Attribute | Type | Required | Description | +| ------------------- | ------- | -------- | ----------- | +| `state` | string | no | Return only `opened`, `upcoming`, `started`, `closed`, or `all` iterations. Defaults to `all`. | +| `search` | string | no | Return only iterations with a title matching the provided string. | +| `include_ancestors` | boolean | no | Include iterations from parent group and its ancestors. Defaults to `true`. | + +Example request: + +```shell +curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/iterations" +``` + +Example response: + +```json +[ + { + "id": 53, + "iid": 13, + "group_id": 5, + "title": "Iteration II", + "description": "Ipsum Lorem ipsum", + "state": 2, + "created_at": "2020-01-27T05:07:12.573Z", + "updated_at": "2020-01-27T05:07:12.573Z", + "due_date": "2020-02-01", + "start_date": "2020-02-14" + } +] +``` diff --git a/doc/api/job_artifacts.md b/doc/api/job_artifacts.md index 458877d6548..f5510f6ee91 100644 --- a/doc/api/job_artifacts.md +++ b/doc/api/job_artifacts.md @@ -63,6 +63,11 @@ the given reference name and job, provided the job finished successfully. This is the same as [getting the job's artifacts](#get-job-artifacts), but by defining the job's name instead of its ID. +NOTE: **Note:** +If a pipeline is [parent of other child pipelines](../ci/parent_child_pipelines.md), artifacts +are searched in hierarchical order from parent to child. For example, if both parent and +child pipelines have a job with the same name, the artifact from the parent pipeline will be returned. + ```plaintext GET /projects/:id/jobs/artifacts/:ref_name/download?job=name ``` @@ -157,6 +162,11 @@ Download a single artifact file for a specific job of the latest successful pipeline for the given reference name from within the job's artifacts archive. The file is extracted from the archive and streamed to the client. +In [GitLab 13.5](https://gitlab.com/gitlab-org/gitlab/-/issues/201784) and later, artifacts +for [parent and child pipelines](../ci/parent_child_pipelines.md) are searched in hierarchical +order from parent to child. For example, if both parent and child pipelines have a +job with the same name, the artifact from the parent pipeline is returned. + ```plaintext GET /projects/:id/jobs/artifacts/:ref_name/raw/*artifact_path?job=name ``` diff --git a/doc/api/license.md b/doc/api/license.md index 71e95fc3202..dcdf019059b 100644 --- a/doc/api/license.md +++ b/doc/api/license.md @@ -1,7 +1,7 @@ # License **(CORE ONLY)** -In order to interact with license endpoints, you need to authenticate yourself -as an admin. +To interact with license endpoints, you need to authenticate yourself as an +admin. ## Retrieve information about the current license diff --git a/doc/api/lint.md b/doc/api/lint.md index f4d8a0bc011..c82e0845f99 100644 --- a/doc/api/lint.md +++ b/doc/api/lint.md @@ -4,11 +4,14 @@ group: Continuous Integration info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers --- -# Validate the `.gitlab-ci.yml` (API) +# CI Lint API + +## Validate the CI YAML configuration > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/5953) in GitLab 8.12. -Checks if your `.gitlab-ci.yml` file is valid. +Checks if CI/CD YAML configuration is valid. This endpoint validates basic CI/CD +configuration syntax. It doesn't have any namespace specific context. ```plaintext POST /ci/lint @@ -16,13 +19,15 @@ POST /ci/lint | Attribute | Type | Required | Description | | ---------- | ------- | -------- | -------- | -| `content` | string | yes | the `.gitlab-ci.yaml` content| +| `content` | string | yes | The CI/CD configuration content. | +| `include_merged_yaml` | boolean | no | If the [expanded CI/CD configuration](#yaml-expansion) should be included in the response. | ```shell curl --header "Content-Type: application/json" "https://gitlab.example.com/api/v4/ci/lint" --data '{"content": "{ \"image\": \"ruby:2.6\", \"services\": [\"postgres\"], \"before_script\": [\"bundle install\", \"bundle exec rake db:create\"], \"variables\": {\"DB_NAME\": \"postgres\"}, \"types\": [\"test\", \"deploy\", \"notify\"], \"rspec\": { \"script\": \"rake spec\", \"tags\": [\"ruby\", \"postgres\"], \"only\": [\"branches\"]}}"}' ``` -Be sure to copy paste the exact contents of `.gitlab-ci.yml` as YAML is very picky about indentation and spaces. +Be sure to paste the exact contents of your GitLab CI/CD YAML configuration because YAML +is very sensitive about indentation and spacing. Example responses: @@ -53,3 +58,180 @@ Example responses: "error": "content is missing" } ``` + +### YAML expansion + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/29568) in GitLab 13.5. + +The CI lint returns an expanded version of the configuration. The expansion does not +work for CI configuration added with [`include: local`](../ci/yaml/README.md#includelocal), +or with [`extends:`](../ci/yaml/README.md#extends). + +Example contents of a `.gitlab-ci.yml` passed to the CI Lint API with +`include_merged_yaml` set as true: + +```yaml +include: + remote: 'https://example.com/remote.yaml' + +test: + stage: test + script: + - echo 1 +``` + +Example contents of `https://example.com/remote.yaml`: + +```yaml +another_test: + stage: test + script: + - echo 2 +``` + +Example response: + +```json +{ + "status": "valid", + "errors": [], + "merged_config": "---\n:another_test:\n :stage: test\n :script: echo 2\n:test:\n :stage: test\n :script: echo 1\n" +} +``` + +## Validate a project's CI configuration + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/231352) in GitLab 13.5. + +Checks if a project's latest (`HEAD` of the project's default branch) +`.gitlab-ci.yml` configuration is valid. This endpoint uses all namespace +specific data available, including variables, local includes, and so on. + +```plaintext +GET /projects/:id/ci/lint +``` + +| Attribute | Type | Required | Description | +| ---------- | ------- | -------- | -------- | +| `dry_run` | boolean | no | Run pipeline creation simulation, or only do static check. | + +Example request: + +```shell +curl "https://gitlab.example.com/api/v4/projects/:id/ci/lint" +``` + +Example responses: + +- Valid configuration: + +```json +{ + "valid": true, + "merged_yaml": "---\n:test_job:\n :script: echo 1\n", + "errors": [], + "warnings": [] +} +``` + +- Invalid configuration: + +```json +{ + "valid": false, + "merged_yaml": "---\n:test_job:\n :script: echo 1\n", + "errors": [ + "jobs config should contain at least one visible job" + ], + "warnings": [] +} +``` + +## Use jq to create and process YAML & JSON payloads + +To `POST` a YAML configuration to the CI Lint endpoint, it must be properly escaped and JSON encoded. +You can use `jq` and `curl` to escape and upload YAML to the GitLab API. + +### Escape YAML for JSON encoding + +To escape quotes and encode your YAML in a format suitable for embedding within +a JSON payload, you can use `jq`. For example, create a file named `example-gitlab-ci.yml`: + +```yaml +.api_test: + rules: + - if: '$CI_PIPELINE_SOURCE=="merge_request_event"' + changes: + - src/api/* +deploy: + extends: + - .api_test + rules: + - when: manual + allow_failure: true + script: + - echo "hello world" +``` + +Next, use `jq` to escape and encode the YAML file into JSON: + +```shell +jq --raw-input --slurp < example-gitlab-ci.yml +``` + +To escape and encode an input YAML file (`example-gitlab-ci.yml`), and `POST` it to the +GitLab API using `curl` and `jq` in a one-line command: + +```shell +jq --null-input --arg yaml "$(<example-gitlab-ci.yml)" '.content=$yaml' \ +| curl 'https://gitlab.com/api/v4/ci/lint?include_merged_yaml=true' \ +--header 'Content-Type: application/json' \ +--data @- +``` + +### Parse a CI Lint response + +To reformat the CI Lint response, you can use `jq`. You can pipe the CI Lint response to `jq`, +or store the API response as a text file and provide it as an argument: + +```shell +jq --raw-output '.merged_yaml | fromjson' <your_input_here> +``` + +Example input: + +```json +{"status":"valid","errors":[],"merged_yaml":"---\n:.api_test:\n :rules:\n - :if: $CI_PIPELINE_SOURCE==\"merge_request_event\"\n :changes:\n - src/api/*\n:deploy:\n :rules:\n - :when: manual\n :allow_failure: true\n :extends:\n - \".api_test\"\n :script:\n - echo \"hello world\"\n"} +``` + +Becomes: + +```yaml +:.api_test: + :rules: + - :if: $CI_PIPELINE_SOURCE=="merge_request_event" + :changes: + - src/api/* +:deploy: + :rules: + - :when: manual + :allow_failure: true + :extends: + - ".api_test" + :script: + - echo "hello world" +``` + +With a one-line command, you can: + +1. Escape the YAML +1. Encode it in JSON +1. POST it to the API with curl +1. Format the response + +```shell +jq --null-input --arg yaml "$(<example-gitlab-ci.yml)" '.content=$yaml' \ +| curl 'https://gitlab.com/api/v4/ci/lint?include_merged_yaml=true' \ +--header 'Content-Type: application/json' --data @- \ +| jq --raw-output '.merged_yaml | fromjson' +``` diff --git a/doc/api/members.md b/doc/api/members.md index 76d63b277c4..4440b70c512 100644 --- a/doc/api/members.md +++ b/doc/api/members.md @@ -180,6 +180,7 @@ Example response: "web_url": "http://192.168.1.8:3000/root", "access_level": 30, "email": "john@example.com", + "created_at": "2012-10-22T14:13:35Z", "expires_at": null, "group_saml_identity": null } @@ -223,6 +224,61 @@ Example response: } ``` +## List all billable members of a group + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/217384) in GitLab 13.5. + +Gets a list of group members that count as billable. The list includes members in the subgroup or subproject. + +NOTE: +Unlike other API endpoints, billable members is updated once per day at 12:00 UTC. + +This function takes [pagination](README.md#pagination) parameters `page` and `per_page` to restrict the list of users. + +```plaintext +GET /groups/:id/billable_members +``` + +| Attribute | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `id` | integer/string | yes | The ID or [URL-encoded path of the group](README.md#namespaced-path-encoding) owned by the authenticated user | + +```shell +curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/billable_members" +``` + +Example response: + +```json +[ + { + "id": 1, + "username": "raymond_smith", + "name": "Raymond Smith", + "state": "active", + "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", + "web_url": "http://192.168.1.8:3000/root", + }, + { + "id": 2, + "username": "john_doe", + "name": "John Doe", + "state": "active", + "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", + "web_url": "http://192.168.1.8:3000/root", + "email": "john@example.com" + }, + { + "id": 3, + "username": "foo_bar", + "name": "Foo bar", + "state": "active", + "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", + "web_url": "http://192.168.1.8:3000/root" + } +] +``` + ## Add a member to a group or project Adds a member to a group or project. @@ -235,7 +291,7 @@ POST /projects/:id/members | Attribute | Type | Required | Description | | --------- | ---- | -------- | ----------- | | `id` | integer/string | yes | The ID or [URL-encoded path of the project or group](README.md#namespaced-path-encoding) owned by the authenticated user | -| `user_id` | integer | yes | The user ID of the new member | +| `user_id` | integer/string | yes | The user ID of the new member or multiple IDs separated by commas | | `access_level` | integer | yes | A valid access level | | `expires_at` | string | no | A date string in the format YEAR-MONTH-DAY | diff --git a/doc/api/merge_request_approvals.md b/doc/api/merge_request_approvals.md index 643d03b6fb8..89e4224c735 100644 --- a/doc/api/merge_request_approvals.md +++ b/doc/api/merge_request_approvals.md @@ -60,7 +60,7 @@ POST /projects/:id/approvals | `disable_overriding_approvers_per_merge_request` | boolean | no | Allow/Disallow overriding approvers per MR | | `merge_requests_author_approval` | boolean | no | Allow/Disallow authors from self approving merge requests; `true` means authors can self approve | | `merge_requests_disable_committers_approval` | boolean | no | Allow/Disallow committers from self approving merge requests | -| `require_password_to_approve` | boolean | no | Require approver to enter a password in order to authenticate before adding the approval | +| `require_password_to_approve` | boolean | no | Require approver to enter a password to authenticate before adding the approval | ```json { diff --git a/doc/api/merge_requests.md b/doc/api/merge_requests.md index faefc445210..194f48c6e84 100644 --- a/doc/api/merge_requests.md +++ b/doc/api/merge_requests.md @@ -72,6 +72,9 @@ Parameters: | `in` | string | no | Modify the scope of the `search` attribute. `title`, `description`, or a string joining them with comma. Default is `title,description` | | `wip` | string | no | Filter merge requests against their `wip` status. `yes` to return *only* WIP merge requests, `no` to return *non* WIP merge requests | | `not` | Hash | no | Return merge requests that do not match the parameters supplied. Accepts: `labels`, `milestone`, `author_id`, `author_username`, `assignee_id`, `assignee_username`, `my_reaction_emoji` | +| `environment` | string | no | Returns merge requests deployed to the given environment +| `deployed_before` | datetime | no | Return merge requests deployed before the given date/time +| `deployed_after` | datetime | no | Return merge requests deployed after the given date/time NOTE: **Note:** [Starting in GitLab 13.0](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/31890), @@ -1004,6 +1007,7 @@ order for it to take effect: value of zero disables approvals for that project. 1. The provided value of `approvals_before_merge` must be greater than the target project's `approvals_before_merge`. +1. This API returns 201 (created) for a successful response. ```json { @@ -1310,7 +1314,7 @@ curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://git Merge changes submitted with MR using this API. -If merge request is unable to be accepted (ie: Draft, Closed, Pipeline Pending Completion, or Failed while requiring Success) - you'll get a `405` and the error message 'Method Not Allowed' +If merge request is unable to be accepted (such as Draft, Closed, Pipeline Pending Completion, or Failed while requiring Success) - you'll get a `405` and the error message 'Method Not Allowed' If it has some conflicts and can not be merged - you'll get a `406` and the error message 'Branch cannot be merged' @@ -2085,10 +2089,10 @@ the `approvals_before_merge` parameter: } ``` -## Create a to-do +## Create a to do -Manually creates a to-do for the current user on a merge request. -If there already exists a to-do for the user on that merge request, +Manually creates a to do for the current user on a merge request. +If there already exists a to do for the user on that merge request, status code `304` is returned. ```plaintext diff --git a/doc/api/metrics_dashboard_annotations.md b/doc/api/metrics_dashboard_annotations.md index 10dfd3d1c3b..c23ed657583 100644 --- a/doc/api/metrics_dashboard_annotations.md +++ b/doc/api/metrics_dashboard_annotations.md @@ -1,6 +1,6 @@ --- stage: Monitor -group: APM +group: Health info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers type: concepts, howto --- @@ -18,14 +18,11 @@ POST /environments/:id/metrics_dashboard/annotations/ POST /clusters/:id/metrics_dashboard/annotations/ ``` -NOTE: **Note:** -The value of `dashboard_path` will be treated as a CGI-escaped path, and automatically un-escaped. - Parameters: | Attribute | Type | Required | Description | |:---------------|:---------------|:---------|:-----------------------------------------------------------------------------| -| `dashboard_path` | string | yes | ID of the dashboard which needs to be annotated. | +| `dashboard_path` | string | yes | ID of the dashboard which needs to be annotated. Treated as a CGI-escaped path, and automatically un-escaped. | | `starting_at` | string | yes | Date time string, ISO 8601 formatted, such as `2016-03-11T03:45:40Z`. Timestamp marking start point of annotation. | | `ending_at` | string | no | Date time string, ISO 8601 formatted, such as `2016-03-11T03:45:40Z`. Timestamp marking end point of annotation. When not supplied annotation will be displayed as single event at start point. | | `description` | string | yes | Description of the annotation. | diff --git a/doc/api/metrics_user_starred_dashboards.md b/doc/api/metrics_user_starred_dashboards.md index df9cdd3b0e4..8c2894293ba 100644 --- a/doc/api/metrics_user_starred_dashboards.md +++ b/doc/api/metrics_user_starred_dashboards.md @@ -1,6 +1,6 @@ --- stage: Monitor -group: APM +group: Health info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers type: concepts, howto --- diff --git a/doc/api/namespaces.md b/doc/api/namespaces.md index ba59d467bc8..0792c6d4a3b 100644 --- a/doc/api/namespaces.md +++ b/doc/api/namespaces.md @@ -87,6 +87,26 @@ the `plan` parameter associated with a namespace: ] ``` +Users on GitLab.com will also see `max_seats_used` and `seats_in_use` parameters. +`max_seats_used` is the highest number of users the group had. `seats_in_use` is +the number of license seats currently being used. Both values are updated +once a day. + +`max_seats_used` and `seats_in_use` will be non-zero only for namespaces on paid plans. + +```json +[ + { + "id": 1, + "name": "user1", + "billable_members_count": 2, + "max_seats_used": 3, + "seats_in_use": 2, + ... + } +] +``` + NOTE: **Note:** Only group maintainers/owners are presented with `members_count_with_descendants`, as well as `plan` **(BRONZE ONLY)**. @@ -123,6 +143,8 @@ Example response: "web_url": "https://gitlab.example.com/groups/twitter", "members_count_with_descendants": 2, "billable_members_count": 2, + "max_seats_used": 0, + "seats_in_use": 0, "plan": "default", "trial_ends_on": null, "trial": false @@ -162,6 +184,8 @@ Example response: "web_url": "https://gitlab.example.com/groups/group1", "members_count_with_descendants": 2, "billable_members_count": 2, + "max_seats_used": 0, + "seats_in_use": 0, "plan": "default", "trial_ends_on": null, "trial": false @@ -188,6 +212,8 @@ Example response: "web_url": "https://gitlab.example.com/groups/group1", "members_count_with_descendants": 2, "billable_members_count": 2, + "max_seats_used": 0, + "seats_in_use": 0, "plan": "default", "trial_ends_on": null, "trial": false diff --git a/doc/api/openapi/openapi.yaml b/doc/api/openapi/openapi.yaml index 8aa4de62501..8c46804d86f 100644 --- a/doc/api/openapi/openapi.yaml +++ b/doc/api/openapi/openapi.yaml @@ -9,9 +9,9 @@ info: When viewing this on gitlab.com, you can test API calls directly from the browser against the `gitlab.com` instance, if you are logged in. The feature uses the current [GitLab session cookie](https://docs.gitlab.com/ee/api/README.html#session-cookie), - so each request is made using your account. + so each request is made using your account. - Read more at <https://docs.gitlab.com/ee/development/documentation/styleguide.html#restful-api>. + Read more at <https://docs.gitlab.com/ee/development/documentation/restful_api_styleguide.html>. version: "v4" title: "GitLab API" termsOfService: "https://about.gitlab.com/terms/" diff --git a/doc/api/packages.md b/doc/api/packages.md index cf65b518844..d4e69b9bc66 100644 --- a/doc/api/packages.md +++ b/doc/api/packages.md @@ -26,7 +26,7 @@ GET /projects/:id/packages | `id` | integer/string | yes | ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) | | `order_by`| string | no | The field to use as order. One of `created_at` (default), `name`, `version`, or `type`. | | `sort` | string | no | The direction of the order, either `asc` (default) for ascending order or `desc` for descending order. | -| `package_type` | string | no | Filter the returned packages by type. One of `conan`, `maven`, `npm`, `pypi`, `composer`, or `nuget`. (_Introduced in GitLab 12.9_) +| `package_type` | string | no | Filter the returned packages by type. One of `conan`, `maven`, `npm`, `pypi`, `composer`, `nuget`, or `golang`. (_Introduced in GitLab 12.9_) | `package_name` | string | no | Filter the project packages with a fuzzy search by name. (_Introduced in GitLab 12.9_) ```shell @@ -50,6 +50,19 @@ Example response: "version": "1.0.3", "package_type": "npm", "created_at": "2019-11-27T03:37:38.711Z" + }, + { + "id": 3, + "name": "Hello/0.1@mycompany/stable", + "conan_package_name": "Hello", + "version": "0.1", + "package_type": "conan", + "_links": { + "web_path": "/foo/bar/-/packages/3", + "delete_api_path": "https://gitlab.example.com/api/v4/projects/1/packages/3" + }, + "created_at": "2029-12-16T20:33:34.316Z", + "tags": [] } ] ``` @@ -73,7 +86,7 @@ GET /groups/:id/packages | `exclude_subgroups` | boolean | false | If the parameter is included as true, packages from projects from subgroups are not listed. Default is `false`. | | `order_by`| string | no | The field to use as order. One of `created_at` (default), `name`, `version`, `type`, or `project_path`. | | `sort` | string | no | The direction of the order, either `asc` (default) for ascending order or `desc` for descending order. | -| `package_type` | string | no | Filter the returned packages by type. One of `conan`, `maven`, `npm`, `pypi`, `composer`, or `nuget`. (_Introduced in GitLab 12.9_) | +| `package_type` | string | no | Filter the returned packages by type. One of `conan`, `maven`, `npm`, `pypi`, `composer`, `nuget`, or `golang`. (_Introduced in GitLab 12.9_) | | `package_name` | string | no | Filter the project packages with a fuzzy search by name. (_[Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/30980) in GitLab 13.0_) ```shell diff --git a/doc/api/personal_access_tokens.md b/doc/api/personal_access_tokens.md index 517e26f3d85..43310570fe8 100644 --- a/doc/api/personal_access_tokens.md +++ b/doc/api/personal_access_tokens.md @@ -24,7 +24,7 @@ curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/a ``` ```json -[ +[ { "id": 4, "name": "Test Token", @@ -45,7 +45,7 @@ curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/a ``` ```json -[ +[ { "id": 4, "name": "Test Token", diff --git a/doc/api/project_badges.md b/doc/api/project_badges.md index 936bd40d1ee..b8ea55ab72f 100644 --- a/doc/api/project_badges.md +++ b/doc/api/project_badges.md @@ -16,7 +16,7 @@ Badges support placeholders that will be replaced in real time in both the link - **%{project_path}**: will be replaced by the project path. - **%{project_id}**: will be replaced by the project ID. - **%{default_branch}**: will be replaced by the project default branch. -- **%{commit_sha}**: will be replaced by the last project's commit sha. +- **%{commit_sha}**: will be replaced by the last project's commit SHA. ## List all badges of a project diff --git a/doc/api/project_clusters.md b/doc/api/project_clusters.md index 04694157561..ce175184179 100644 --- a/doc/api/project_clusters.md +++ b/doc/api/project_clusters.md @@ -8,8 +8,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/23922) in GitLab 11.7. -NOTE: **Note:** -User will need at least maintainer access to use these endpoints. +Users need at least [Maintainer](../user/permissions.md) access to use these endpoints. ## List project clusters diff --git a/doc/api/project_repository_storage_moves.md b/doc/api/project_repository_storage_moves.md index 2010fccc624..b490b6235b1 100644 --- a/doc/api/project_repository_storage_moves.md +++ b/doc/api/project_repository_storage_moves.md @@ -194,7 +194,7 @@ Parameters: | Attribute | Type | Required | Description | | --------- | ---- | -------- | ----------- | | `project_id` | integer | yes | ID of the project | -| `destination_storage_name` | string | yes | Name of the destination storage shard | +| `destination_storage_name` | string | no | Name of the destination storage shard. If not provided the storage will be selected automatically. | Example request: diff --git a/doc/api/project_snippets.md b/doc/api/project_snippets.md index eccc8b4212d..cc8bb20b003 100644 --- a/doc/api/project_snippets.md +++ b/doc/api/project_snippets.md @@ -83,12 +83,17 @@ POST /projects/:id/snippets Parameters: -- `id` (required) - The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user -- `title` (required) - The title of a snippet -- `file_name` (required) - The name of a snippet file -- `description` (optional) - The description of a snippet -- `content` (required) - The content of a snippet -- `visibility` (required) - The snippet's visibility +| Attribute | Type | Required | Description | +|:------------------|:----------------|:---------|:----------------------------------------------------------------------------------------------------------------| +| `id` | integer | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user | +| `title` | string | yes | Title of a snippet | +| `file_name` | string | no | Deprecated: Use `files` instead. Name of a snippet file | +| `content` | string | no | Deprecated: Use `files` instead. Content of a snippet | +| `description` | string | no | Description of a snippet | +| `visibility` | string | no | Snippet's [visibility](#snippet-visibility-level) | +| `files` | array of hashes | no | An array of snippet files | +| `files:file_path` | string | yes | File path of the snippet file | +| `files:content` | string | yes | Content of the snippet file | Example request: @@ -105,9 +110,13 @@ curl --request POST "https://gitlab.com/api/v4/projects/:id/snippets" \ { "title" : "Example Snippet Title", "description" : "More verbose snippet description", - "file_name" : "example.txt", - "content" : "source code \n with multiple lines\n", - "visibility" : "private" + "visibility" : "private", + "files": [ + { + "file_path": "example.txt", + "content" : "source code \n with multiple lines\n", + } + ] } ``` @@ -121,13 +130,22 @@ PUT /projects/:id/snippets/:snippet_id Parameters: -- `id` (required) - The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user -- `snippet_id` (required) - The ID of a project's snippet -- `title` (optional) - The title of a snippet -- `file_name` (optional) - The name of a snippet file -- `description` (optional) - The description of a snippet -- `content` (optional) - The content of a snippet -- `visibility` (optional) - The snippet's visibility +| Attribute | Type | Required | Description | +|:----------------------|:----------------|:---------|:----------------------------------------------------------------------------------------------------------------| +| `id` | integer | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user | +| `snippet_id` | integer | yes | The ID of a project's snippet | +| `title` | string | no | Title of a snippet | +| `file_name` | string | no | Deprecated: Use `files` instead. Name of a snippet file | +| `content` | string | no | Deprecated: Use `files` instead. Content of a snippet | +| `description` | string | no | Description of a snippet | +| `visibility` | string | no | Snippet's [visibility](#snippet-visibility-level) | +| `files` | array of hashes | no | An array of snippet files | +| `files:action` | string | yes | Type of action to perform on the file, one of: 'create', 'update', 'delete', 'move' | +| `files:file_path` | string | no | File path of the snippet file | +| `files:previous_path` | string | no | Previous path of the snippet file | +| `files:content` | string | no | Content of the snippet file | + +Updates to snippets with multiple files *must* use the `files` attribute. Example request: @@ -144,9 +162,14 @@ curl --request PUT "https://gitlab.com/api/v4/projects/:id/snippets/:snippet_id" { "title" : "Updated Snippet Title", "description" : "More verbose snippet description", - "file_name" : "new_filename.txt", - "content" : "updated source code \n with multiple lines\n", - "visibility" : "private" + "visibility" : "private", + "files": [ + { + "action": "update", + "file_path": "example.txt", + "content" : "updated source code \n with multiple lines\n" + } + ] } ``` diff --git a/doc/api/projects.md b/doc/api/projects.md index ad26457ad99..f6ed905cda1 100644 --- a/doc/api/projects.md +++ b/doc/api/projects.md @@ -156,6 +156,7 @@ When the user is authenticated and `simple` is not set this returns something li "star_count": 0, "runners_token": "b8547b1dc37721d05889db52fa2f02", "ci_default_git_depth": 50, + "ci_forward_deployment_enabled": true, "public_jobs": true, "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, @@ -248,6 +249,7 @@ When the user is authenticated and `simple` is not set this returns something li "star_count": 0, "runners_token": "b8547b1dc37721d05889db52fa2f02", "ci_default_git_depth": 0, + "ci_forward_deployment_enabled": true, "public_jobs": true, "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, @@ -410,6 +412,7 @@ This endpoint supports [keyset pagination](README.md#keyset-based-pagination) fo "star_count": 0, "runners_token": "b8547b1dc37721d05889db52fa2f02", "ci_default_git_depth": 50, + "ci_forward_deployment_enabled": true, "public_jobs": true, "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, @@ -502,6 +505,7 @@ This endpoint supports [keyset pagination](README.md#keyset-based-pagination) fo "star_count": 0, "runners_token": "b8547b1dc37721d05889db52fa2f02", "ci_default_git_depth": 0, + "ci_forward_deployment_enabled": true, "public_jobs": true, "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, @@ -856,6 +860,7 @@ GET /projects/:id "star_count": 0, "runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b", "ci_default_git_depth": 50, + "ci_forward_deployment_enabled": true, "public_jobs": true, "shared_with_groups": [ { @@ -1218,6 +1223,7 @@ PUT /projects/:id | `build_coverage_regex` | string | no | Test coverage parsing | | `ci_config_path` | string | no | The path to CI configuration file | | `ci_default_git_depth` | integer | no | Default number of revisions for [shallow cloning](../ci/pipelines/settings.md#git-shallow-clone) | +| `ci_forward_deployment_enabled` | boolean | no | When a new deployment job starts, [skip older deployment jobs](../ci/pipelines/settings.md#skip-outdated-deployment-jobs) that are still pending | | `auto_devops_enabled` | boolean | no | Enable Auto DevOps for this project | | `auto_devops_deploy_strategy` | string | no | Auto Deploy strategy (`continuous`, `manual` or `timed_incremental`) | | `repository_storage` | string | no | Which storage shard the repository is on. Available only to admins | @@ -1701,6 +1707,7 @@ Example response: "star_count": 0, "runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b", "ci_default_git_depth": 50, + "ci_forward_deployment_enabled": true, "public_jobs": true, "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, @@ -1811,6 +1818,7 @@ Example response: "star_count": 0, "runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b", "ci_default_git_depth": 50, + "ci_forward_deployment_enabled": true, "public_jobs": true, "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, @@ -2241,6 +2249,113 @@ PUT /projects/:id/transfer | `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) | | `namespace` | integer/string | yes | The ID or path of the namespace to transfer to project to | +Example request: + +```shell +curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/transfer?namespace=14" +``` + +Example response: + +```json + { + "id": 7, + "description": "", + "name": "hello-world", + "name_with_namespace": "cute-cats / hello-world", + "path": "hello-world", + "path_with_namespace": "cute-cats/hello-world", + "created_at": "2020-10-15T16:25:22.415Z", + "default_branch": "master", + "tag_list": [], + "ssh_url_to_repo": "git@gitlab.example.com:cute-cats/hello-world.git", + "http_url_to_repo": "https://gitlab.example.com/cute-cats/hello-world.git", + "web_url": "https://gitlab.example.com/cute-cats/hello-world", + "readme_url": "https://gitlab.example.com/cute-cats/hello-world/-/blob/master/README.md", + "avatar_url": null, + "forks_count": 0, + "star_count": 0, + "last_activity_at": "2020-10-15T16:25:22.415Z", + "namespace": { + "id": 18, + "name": "cute-cats", + "path": "cute-cats", + "kind": "group", + "full_path": "cute-cats", + "parent_id": null, + "avatar_url": null, + "web_url": "https://gitlab.example.com/groups/cute-cats" + }, + "_links": { + "self": "https://gitlab.example.com/api/v4/projects/7", + "issues": "https://gitlab.example.com/api/v4/projects/7/issues", + "merge_requests": "https://gitlab.example.com/api/v4/projects/7/merge_requests", + "repo_branches": "https://gitlab.example.com/api/v4/projects/7/repository/branches", + "labels": "https://gitlab.example.com/api/v4/projects/7/labels", + "events": "https://gitlab.example.com/api/v4/projects/7/events", + "members": "https://gitlab.example.com/api/v4/projects/7/members" + }, + "packages_enabled": true, + "empty_repo": false, + "archived": false, + "visibility": "private", + "resolve_outdated_diff_discussions": false, + "container_registry_enabled": true, + "container_expiration_policy": { + "cadence": "7d", + "enabled": false, + "keep_n": null, + "older_than": null, + "name_regex": null, + "name_regex_keep": null, + "next_run_at": "2020-10-22T16:25:22.746Z" + }, + "issues_enabled": true, + "merge_requests_enabled": true, + "wiki_enabled": true, + "jobs_enabled": true, + "snippets_enabled": true, + "service_desk_enabled": false, + "service_desk_address": null, + "can_create_merge_request_in": true, + "issues_access_level": "enabled", + "repository_access_level": "enabled", + "merge_requests_access_level": "enabled", + "forking_access_level": "enabled", + "wiki_access_level": "enabled", + "builds_access_level": "enabled", + "snippets_access_level": "enabled", + "pages_access_level": "enabled", + "emails_disabled": null, + "shared_runners_enabled": true, + "lfs_enabled": true, + "creator_id": 2, + "import_status": "none", + "open_issues_count": 0, + "ci_default_git_depth": 50, + "public_jobs": true, + "build_timeout": 3600, + "auto_cancel_pending_pipelines": "enabled", + "build_coverage_regex": null, + "ci_config_path": null, + "shared_with_groups": [], + "only_allow_merge_if_pipeline_succeeds": false, + "allow_merge_on_skipped_pipeline": null, + "request_access_enabled": true, + "only_allow_merge_if_all_discussions_are_resolved": false, + "remove_source_branch_after_merge": true, + "printing_merge_request_link_enabled": true, + "merge_method": "merge", + "suggestion_commit_message": null, + "auto_devops_enabled": true, + "auto_devops_deploy_strategy": "continuous", + "autoclose_referenced_issues": true, + "approvals_before_merge": 0, + "mirror": false, + "compliance_frameworks": [] +} +``` + ## Branches Read more in the [Branches](branches.md) documentation. diff --git a/doc/api/protected_branches.md b/doc/api/protected_branches.md index 05d586738d0..79b848bdf15 100644 --- a/doc/api/protected_branches.md +++ b/doc/api/protected_branches.md @@ -295,6 +295,67 @@ Example response: } ``` +### Example with allow to push and allow to merge access **(STARTER)** + +Example request: + +```shell +curl --request POST \ + --header "PRIVATE-TOKEN: <your_access_token>" \ + --header "Content-Type: application/json" \ + --data '{ + "id": 5, + "name": "master", + "allowed_to_push": [{"access_level": 30}], + "allowed_to_merge": [{ + "access_level": 30 + },{ + "access_level": 40 + } + ]}' + "https://gitlab.example.com/api/v4/projects/5/protected_branches" +``` + +Example response: + +```json +{ + "id": 5, + "name": "master", + "push_access_levels": [ + { + "access_level": 30, + "access_level_description": "Developers + Maintainers", + "user_id": null, + "group_id": null + } + ], + "merge_access_levels": [ + { + "access_level": 30, + "access_level_description": "Developers + Maintainers", + "user_id": null, + "group_id": null + }, + { + "access_level": 40, + "access_level_description": "Maintainers", + "user_id": null, + "group_id": null + } + ], + "unprotect_access_levels": [ + { + "access_level": 40, + "access_level_description": "Maintainers", + "user_id": null, + "group_id": null + } + ], + "code_owner_approval_required": false +} +``` + ## Unprotect repository branches Unprotects the given protected branch or wildcard protected branch. diff --git a/doc/api/releases/index.md b/doc/api/releases/index.md index 357f7e7a125..4dac9f61469 100644 --- a/doc/api/releases/index.md +++ b/doc/api/releases/index.md @@ -22,6 +22,8 @@ GET /projects/:id/releases | Attribute | Type | Required | Description | | ------------- | -------------- | -------- | ----------------------------------------------------------------------------------- | | `id` | integer/string | yes | The ID or [URL-encoded path of the project](../README.md#namespaced-path-encoding). | +| `order_by` | string | no | The field to use as order. Either `released_at` (default) or `created_at`. | +| `sort` | string | no | The direction of the order. Either `desc` (default) for descending order or `asc` for ascending order. | Example request: @@ -361,11 +363,11 @@ POST /projects/:id/releases | `tag_name` | string | yes | The tag where the release will be created from. | | `description` | string | no | The description of the release. You can use [Markdown](../../user/markdown.md). | | `ref` | string | yes, if `tag_name` doesn't exist | If a tag specified in `tag_name` doesn't exist, the release will be created from `ref` and tagged with `tag_name`. It can be a commit SHA, another tag name, or a branch name. | -| `milestones` | array of string | no | The title of each milestone the release is associated with. | +| `milestones` | array of string | no | The title of each milestone the release is associated with. [GitLab Premium](https://about.gitlab.com/pricing/) customers can specify group milestones. | | `assets:links` | array of hash | no | An array of assets links. | | `assets:links:name`| string | required by: `assets:links` | The name of the link. | | `assets:links:url` | string | required by: `assets:links` | The URL of the link. | -| `assets:links:filepath` | string | no | Optional path for a [Direct Asset link](../../user/project/releases.md). +| `assets:links:filepath` | string | no | Optional path for a [Direct Asset link](../../user/project/releases/index.md). | `assets:links:link_type` | string | no | The type of the link: `other`, `runbook`, `image`, `package`. Defaults to `other`. | `released_at` | datetime | no | The date when the release will be/was ready. Defaults to the current time. Expected in ISO 8601 format (`2019-03-15T08:00:00Z`). | @@ -484,6 +486,15 @@ Example response: } ``` +### Group milestones **(PREMIUM ONLY)** + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/235391) in [GitLab Premium](https://about.gitlab.com/pricing/) 13.5. + +Group milestones associated with the project may be specified in the `milestones` +array for [Create a release](#create-a-release) and [Update a release](#update-a-release) +API calls. Only milestones associated with the project's group may be specified, and +adding milestones for ancestor groups will raise an error. + ## Collect release evidence **(PREMIUM ONLY)** > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/199065) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.10. @@ -525,7 +536,7 @@ PUT /projects/:id/releases/:tag_name | `tag_name` | string | yes | The tag where the release will be created from. | | `name` | string | no | The release name. | | `description` | string | no | The description of the release. You can use [Markdown](../../user/markdown.md). | -| `milestones` | array of string | no | The title of each milestone to associate with the release (`[]` to remove all milestones from the release). | +| `milestones` | array of string | no | The title of each milestone to associate with the release. [GitLab Premium](https://about.gitlab.com/pricing/) customers can specify group milestones. To remove all milestones from the release, specify `[]`. | | `released_at` | datetime | no | The date when the release will be/was ready. Expected in ISO 8601 format (`2019-03-15T08:00:00Z`). | Example request: diff --git a/doc/api/repositories.md b/doc/api/repositories.md index 305216f853a..7e94ff7b7f2 100644 --- a/doc/api/repositories.md +++ b/doc/api/repositories.md @@ -24,7 +24,8 @@ Parameters: - `path` (optional) - The path inside repository. Used to get content of subdirectories - `ref` (optional) - The name of a repository branch or tag or if not given the default branch - `recursive` (optional) - Boolean value used to get a recursive tree (false by default) -- `per_page` (optional) - Number of results to show per page. If not specified, defaults to `20` +- `per_page` (optional) - Number of results to show per page. If not specified, defaults to `20`. + Read more on [pagination](README.md#pagination). ```json [ diff --git a/doc/api/resource_iteration_events.md b/doc/api/resource_iteration_events.md index f774cdfe9c7..47f4d70fdf1 100644 --- a/doc/api/resource_iteration_events.md +++ b/doc/api/resource_iteration_events.md @@ -6,14 +6,8 @@ info: To determine the technical writer assigned to the Stage/Group associated w # Resource iteration events API **(STARTER)** -> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40850) in [GitLab Starter](https://about.gitlab.com/pricing/) 13.4 -> - It's [deployed behind a feature flag](../user/feature_flags.md), enabled by default. -> - It's enabled on GitLab.com. -> - It's recommended for production use. -> - For GitLab self-managed instances, GitLab administrators can opt to [disable it](#enable-or-disable-iterations-events-tracking). - -NOTE: **Note:** -This feature might not be available to you. Check the **version history** note above for details. +> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/229463) in [GitLab Starter](https://about.gitlab.com/pricing/) 13.4. +> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/229463) in [GitLab Starter](https://about.gitlab.com/pricing/) 13.5. Resource iteration events keep track of what happens to GitLab [issues](../user/project/issues/). @@ -154,22 +148,3 @@ Example response: "action": "remove" } ``` - -### Enable or disable iterations events tracking **(STARTER)** - -Iterations events tracking is under development but ready for production use. -It is deployed behind a feature flag that is **enabled by default**. -[GitLab administrators with access to the GitLab Rails console](../administration/feature_flags.md) -can opt to disable it. - -To enable it: - -```ruby -Feature.enable(:track_iteration_change_events) -``` - -To disable it: - -```ruby -Feature.disable(:track_iteration_change_events) -``` diff --git a/doc/api/runners.md b/doc/api/runners.md index 436abe0a706..16ecdebcd4f 100644 --- a/doc/api/runners.md +++ b/doc/api/runners.md @@ -271,20 +271,20 @@ Example response: } ``` -## Remove a runner +### Pause a runner -Remove a runner. +Pause a specific runner. ```plaintext -DELETE /runners/:id +PUT --form "active=false" /runners/:runner_id ``` -| Attribute | Type | Required | Description | -|-----------|---------|----------|---------------------| -| `id` | integer | yes | The ID of a runner | +| Attribute | Type | Required | Description | +|-------------|---------|----------|---------------------| +| `runner_id` | integer | yes | The ID of a runner | ```shell -curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/runners/6" +curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" --form "active=false" "https://gitlab.example.com/api/v4/runners/6" ``` ## List runner's jobs @@ -466,7 +466,7 @@ Example response: Disable a specific runner from the project. It works only if the project isn't the only project associated with the specified runner. If so, an error is -returned. Use the [Remove a runner](#remove-a-runner) call instead. +returned. Use the call to [delete a runner](#delete-a-runner) instead. ```plaintext DELETE /projects/:id/runners/:runner_id @@ -553,7 +553,7 @@ POST /runners |--------------|---------|----------|---------------------| | `token` | string | yes | [Registration token](#registration-and-authentication-tokens). | | `description`| string | no | Runner's description| -| `info` | hash | no | Runner's metadata | +| `info` | hash | no | Runner's metadata. You can include `name`, `version`, `revision`, `platform`, and `architecture`, but only `version` is displayed in the Admin area of the UI. | | `active` | boolean | no | Whether the runner is active | | `locked` | boolean | no | Whether the runner should be locked for current project | | `run_untagged` | boolean | no | Whether the runner should handle untagged jobs | @@ -580,9 +580,32 @@ Example response: } ``` -## Delete a registered runner +## Delete a runner + +There are two ways to delete a runner: + +- By specifying the runner ID. +- By specifying the runner's authentication token. -Deletes a registered runner. +### Delete a runner by ID + +To delete the runner by ID, use your access token with the runner's ID: + +```plaintext +DELETE /runners/:id +``` + +| Attribute | Type | Required | Description | +|-------------|---------|----------|---------------------| +| `id` | integer | yes | The ID of a runner. The ID is visible in the UI under **Settings > CI/CD**. Expand **Runners**, and below the **Remove Runner** button is an ID preceded by the pound sign, for example, `#6`. | + +```shell +curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/runners/6" +``` + +### Delete a runner by authentication token + +To delete the runner by using its authentication token: ```plaintext DELETE /runners @@ -590,7 +613,7 @@ DELETE /runners | Attribute | Type | Required | Description | |-------------|---------|----------|---------------------| -| `token` | string | yes | Runner's [authentication token](#registration-and-authentication-tokens). | +| `token` | string | yes | The runner's [authentication token](#registration-and-authentication-tokens). | ```shell curl --request DELETE "https://gitlab.example.com/api/v4/runners" --form "token=<authentication_token>" diff --git a/doc/api/search.md b/doc/api/search.md index cb90b9a064c..bdf5bdd4924 100644 --- a/doc/api/search.md +++ b/doc/api/search.md @@ -24,10 +24,11 @@ GET /search | `scope` | string | yes | The scope to search in | | `search` | string | yes | The search query | | `state` | string | no | Filter by state. Issues and merge requests are supported; it is ignored for other scopes. | +| `confidential` | boolean | no | Filter by confidentiality. Issues scope is supported; it is ignored for other scopes. This parameter is behind a [feature flag (`search_filter_by_confidential`)](../administration/feature_flags.md). | Search the expression within the specified scope. Currently these scopes are supported: projects, issues, merge_requests, milestones, snippet_titles, users. -If Elasticsearch is enabled additional scopes available are blobs, wiki_blobs and commits. Find more about [the feature](../integration/elasticsearch.md). **(STARTER)** +If Elasticsearch is enabled additional scopes available are blobs, wiki_blobs, notes, and commits. Find more about [the feature](../integration/elasticsearch.md). **(STARTER)** The response depends on the requested scope. @@ -362,6 +363,40 @@ Example response: NOTE: **Note:** `filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename` will be only the file name and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521). +### Scope: notes **(STARTER)** + +This scope is available only if [Elasticsearch](../integration/elasticsearch.md) is enabled. + +```shell +curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/6/search?scope=notes&search=maxime" +``` + +Example response: + +```json +[ + { + "id": 191, + "body": "Harum maxime consequuntur et et deleniti assumenda facilis.", + "attachment": null, + "author": { + "id": 23, + "name": "User 1", + "username": "user1", + "state": "active", + "avatar_url": "https://www.gravatar.com/avatar/111d68d06e2d317b5a59c2c6c5bad808?s=80&d=identicon", + "web_url": "http://localhost:3000/user1" + }, + "created_at": "2017-09-05T08:01:32.068Z", + "updated_at": "2017-09-05T08:01:32.068Z", + "system": false, + "noteable_id": 22, + "noteable_type": "Issue", + "noteable_iid": 2 + } +] +``` + ### Scope: users ```shell @@ -399,10 +434,11 @@ GET /groups/:id/search | `scope` | string | yes | The scope to search in | | `search` | string | yes | The search query | | `state` | string | no | Filter by state. Issues and merge requests are supported; it is ignored for other scopes. | +| `confidential` | boolean | no | Filter by confidentiality. Issues scope is supported; it is ignored for other scopes. This parameter is behind a [feature flag (`search_filter_by_confidential`)](../administration/feature_flags.md). | Search the expression within the specified scope. Currently these scopes are supported: projects, issues, merge_requests, milestones, users. -If Elasticsearch is enabled additional scopes available are blobs, wiki_blobs and commits. Find more about [the feature](../integration/elasticsearch.md). **(STARTER)** +If Elasticsearch is enabled additional scopes available are blobs, wiki_blobs, notes, and commits. Find more about [the feature](../integration/elasticsearch.md). **(STARTER)** The response depends on the requested scope. @@ -706,6 +742,40 @@ Example response: NOTE **Note:** `filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename` will be only the file name and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521). +### Scope: notes **(STARTER)** + +This scope is available only if [Elasticsearch](../integration/elasticsearch.md) is enabled. + +```shell +curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/6/search?scope=notes&search=maxime" +``` + +Example response: + +```json +[ + { + "id": 191, + "body": "Harum maxime consequuntur et et deleniti assumenda facilis.", + "attachment": null, + "author": { + "id": 23, + "name": "User 1", + "username": "user1", + "state": "active", + "avatar_url": "https://www.gravatar.com/avatar/111d68d06e2d317b5a59c2c6c5bad808?s=80&d=identicon", + "web_url": "http://localhost:3000/user1" + }, + "created_at": "2017-09-05T08:01:32.068Z", + "updated_at": "2017-09-05T08:01:32.068Z", + "system": false, + "noteable_id": 22, + "noteable_type": "Issue", + "noteable_iid": 2 + } +] +``` + ### Scope: users ```shell @@ -744,6 +814,7 @@ GET /projects/:id/search | `search` | string | yes | The search query | | `ref` | string | no | The name of a repository branch or tag to search on. The project's default branch is used by default. This is only applicable for scopes: commits, blobs, and wiki_blobs. | | `state` | string | no | Filter by state. Issues and merge requests are supported; it is ignored for other scopes. | +| `confidential` | boolean | no | Filter by confidentiality. Issues scope is supported; it is ignored for other scopes. This parameter is behind a [feature flag (`search_filter_by_confidential`)](../administration/feature_flags.md). | Search the expression within the specified scope. Currently these scopes are supported: issues, merge_requests, milestones, notes, wiki_blobs, commits, blobs, users. diff --git a/doc/api/services.md b/doc/api/services.md index 405047a433d..7c01e43a4d8 100644 --- a/doc/api/services.md +++ b/doc/api/services.md @@ -659,7 +659,7 @@ Parameters: | `webhook` | string | true | The Hangouts Chat webhook. For example, `https://chat.googleapis.com/v1/spaces...`. | | `notify_only_broken_pipelines` | boolean | false | Send notifications for broken pipelines | | `notify_only_default_branch` | boolean | false | DEPRECATED: This parameter has been replaced with `branches_to_be_notified` | -| `branches_to_be_notified` | string | all | Branches to send notifications for. Valid options are "all", "default", "protected", and "default_and_protected" | +| `branches_to_be_notified` | string | false | Branches to send notifications for. Valid options are "all", "default", "protected", and "default_and_protected" | | `push_events` | boolean | false | Enable notifications for push events | | `issues_events` | boolean | false | Enable notifications for issue events | | `confidential_issues_events` | boolean | false | Enable notifications for confidential issue events | @@ -714,7 +714,7 @@ Parameters: | `merge_requests_events` | boolean | false | Enable notifications for merge request events | | `tag_push_events` | boolean | false | Enable notifications for tag push events | | `note_events` | boolean | false | Enable notifications for note events | -| `confidental_note_events` | boolean | false | Enable notifications for confidential note events | +| `confidential_note_events` | boolean | false | Enable notifications for confidential note events | | `pipeline_events` | boolean | false | Enable notifications for pipeline events | ### Delete HipChat service diff --git a/doc/api/settings.md b/doc/api/settings.md index c8a466d1fcd..236cd10a30e 100644 --- a/doc/api/settings.md +++ b/doc/api/settings.md @@ -2,8 +2,8 @@ These API calls allow you to read and modify GitLab instance [application settings](#list-of-settings-that-can-be-accessed-via-api-calls) -as appear in `/admin/application_settings/general`. You have to be an -administrator in order to perform this action. +as they appear in `/admin/application_settings/general`. You must be an +administrator to perform this action. ## Get current application settings @@ -185,13 +185,14 @@ Example responses: **(PREMIUM ONLY)** ## List of settings that can be accessed via API calls -In general, all settings are optional. Certain settings though, if enabled, will -require other settings to be set in order to function properly. These requirements -are listed in the descriptions of the relevant settings. +In general, all settings are optional. Certain settings though, if enabled, +require other settings to be set to function properly. These requirements are +listed in the descriptions of the relevant settings. -| Attribute | Type | Required | Description | -| --------- | ---- | :------: | ----------- | -| `admin_notification_email` | string | no | Abuse reports will be sent to this address if it is set. Abuse reports are always available in the Admin Area. | +| Attribute | Type | Required | Description | +|------------------------------------------|------------------|:------------------------------------:|-------------| +| `admin_notification_email` | string | no | Deprecated: Use `abuse_notification_email` instead. If set, [abuse reports](../user/admin_area/abuse_reports.md) are sent to this address. Abuse reports are always available in the Admin Area. | +| `abuse_notification_email` | string | no | If set, [abuse reports](../user/admin_area/abuse_reports.md) are sent to this address. Abuse reports are always available in the Admin Area. | | `after_sign_out_path` | string | no | Where to redirect users after logout. | | `after_sign_up_text` | string | no | Text shown to the user after signing up | | `akismet_api_key` | string | required by: `akismet_enabled` | API key for Akismet spam protection. | @@ -208,6 +209,7 @@ are listed in the descriptions of the relevant settings. | `authorized_keys_enabled` | boolean | no | By default, we write to the `authorized_keys` file to support Git over SSH without additional configuration. GitLab can be optimized to authenticate SSH keys via the database file. Only disable this if you have configured your OpenSSH server to use the AuthorizedKeysCommand. | | `auto_devops_domain` | string | no | Specify a domain to use by default for every project's Auto Review Apps and Auto Deploy stages. | | `auto_devops_enabled` | boolean | no | Enable Auto DevOps for projects by default. It will automatically build, test, and deploy applications based on a predefined CI/CD configuration. | +| `automatic_purchased_storage_allocation` | boolean | no | Enabling this permits automatic allocation of purchased storage within a namespace. | | `check_namespace_plan` | boolean | no | **(PREMIUM)** Enabling this will make only licensed EE features available to projects if the project namespace's plan includes the feature or if the project is public. | | `commit_email_hostname` | string | no | Custom hostname (for private commit emails). | | `container_registry_token_expire_delay` | integer | no | Container Registry token duration in minutes. | @@ -255,10 +257,10 @@ are listed in the descriptions of the relevant settings. | `external_auth_client_cert` | string | no | (**If enabled, requires:** `external_auth_client_key`) The certificate to use to authenticate with the external authorization service | | `external_auth_client_key_pass` | string | no | Passphrase to use for the private key when authenticating with the external service this is encrypted when stored | | `external_auth_client_key` | string | required by: `external_auth_client_cert` | Private key for the certificate when authentication is required for the external authorization service, this is encrypted when stored | -| `external_authorization_service_default_label` | string | required by: `external_authorization_service_enabled` | The default classification label to use when requesting authorization and no classification label has been specified on the project | +| `external_authorization_service_default_label` | string | required by:<br>`external_authorization_service_enabled` | The default classification label to use when requesting authorization and no classification label has been specified on the project. | | `external_authorization_service_enabled` | boolean | no | (**If enabled, requires:** `external_authorization_service_default_label`, `external_authorization_service_timeout` and `external_authorization_service_url`) Enable using an external authorization service for accessing projects | -| `external_authorization_service_timeout` | float | required by: `external_authorization_service_enabled` | The timeout after which an authorization request is aborted, in seconds. When a request times out, access is denied to the user. (min: 0.001, max: 10, step: 0.001) | -| `external_authorization_service_url` | string | required by: `external_authorization_service_enabled` | URL to which authorization requests will be directed | +| `external_authorization_service_timeout` | float | required by:<br>`external_authorization_service_enabled` | The timeout after which an authorization request is aborted, in seconds. When a request times out, access is denied to the user. (min: 0.001, max: 10, step: 0.001). | +| `external_authorization_service_url` | string | required by:<br>`external_authorization_service_enabled` | URL to which authorization requests are directed. | | `file_template_project_id` | integer | no | **(PREMIUM)** The ID of a project to load custom file templates from | | `first_day_of_week` | integer | no | Start day of the week for calendar views and date pickers. Valid values are `0` (default) for Sunday, `1` for Monday, and `6` for Saturday. | | `geo_node_allowed_ips` | string | yes | **(PREMIUM)** Comma-separated list of IPs and CIDRs of allowed secondary nodes. For example, `1.1.1.1, 2.2.2.0/24`. | @@ -298,7 +300,7 @@ are listed in the descriptions of the relevant settings. | `mirror_max_capacity` | integer | no | **(PREMIUM)** Maximum number of mirrors that can be synchronizing at the same time. | | `mirror_max_delay` | integer | no | **(PREMIUM)** Maximum time (in minutes) between updates that a mirror can have when scheduled to synchronize. | | `npm_package_requests_forwarding` | boolean | no | **(PREMIUM)** Use npmjs.org as a default remote repository when the package is not found in the GitLab NPM Registry | -| `outbound_local_requests_whitelist` | array of strings | no | Define a list of trusted domains or ip addresses to which local requests are allowed when local requests for hooks and services are disabled. +| `outbound_local_requests_whitelist` | array of strings | no | Define a list of trusted domains or IP addresses to which local requests are allowed when local requests for hooks and services are disabled. | `pages_domain_verification_enabled` | boolean | no | Require users to prove ownership of custom domains. Domain verification is an essential security measure for public GitLab sites. Users are required to demonstrate they control a domain before it is enabled. | | `password_authentication_enabled_for_git` | boolean | no | Enable authentication for Git over HTTP(S) via a GitLab account password. Default is `true`. | | `password_authentication_enabled_for_web` | boolean | no | Enable authentication for the web interface via a GitLab account password. Default is `true`. | @@ -321,7 +323,7 @@ are listed in the descriptions of the relevant settings. | `receive_max_input_size` | integer | no | Maximum push size (MB). | | `repository_checks_enabled` | boolean | no | GitLab will periodically run `git fsck` in all project and wiki repositories to look for silent disk corruption issues. | | `repository_size_limit` | integer | no | **(PREMIUM)** Size limit per repository (MB) | -| `repository_storages_weighted` | hash of strings to integers | no | (GitLab 13.1 and later) Hash of names of taken from `gitlab.yml` to weights. New projects are created in one of these stores, chosen by a weighted random selection. | +| `repository_storages_weighted` | hash of strings to integers | no | (GitLab 13.1 and later) Hash of names of taken from `gitlab.yml` to [weights](../administration/repository_storage_paths.md#choose-where-new-repositories-will-be-stored). New projects are created in one of these stores, chosen by a weighted random selection. | | `repository_storages` | array of strings | no | (GitLab 13.0 and earlier) List of names of enabled storage paths, taken from `gitlab.yml`. New projects are created in one of these stores, chosen at random. | | `require_two_factor_authentication` | boolean | no | (**If enabled, requires:** `two_factor_grace_period`) Require all users to set up Two-factor authentication. | | `restricted_visibility_levels` | array of strings | no | Selected levels cannot be used by non-admin users for groups, projects or snippets. Can take `private`, `internal` and `public` as a parameter. Default is `null` which means there is no restriction. | @@ -351,17 +353,17 @@ are listed in the descriptions of the relevant settings. | `terminal_max_session_time` | integer | no | Maximum time for web terminal websocket connection (in seconds). Set to `0` for unlimited time. | | `terms` | text | required by: `enforce_terms` | (**Required by:** `enforce_terms`) Markdown content for the ToS. | | `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` | Max requests per period per user. | +| `throttle_authenticated_api_period_in_seconds` | integer | required by:<br>`throttle_authenticated_api_enabled` | Rate limit period in seconds. | +| `throttle_authenticated_api_requests_per_period` | integer | required by:<br>`throttle_authenticated_api_enabled` | Max requests per period per user. | | `throttle_authenticated_web_enabled` | boolean | no | (**If enabled, requires:** `throttle_authenticated_web_period_in_seconds` and `throttle_authenticated_web_requests_per_period`) Enable authenticated web request rate limit. Helps reduce request volume (for example, from crawlers or abusive bots). | -| `throttle_authenticated_web_period_in_seconds` | integer | required by: `throttle_authenticated_web_enabled` | Rate limit period in seconds. | -| `throttle_authenticated_web_requests_per_period` | integer | required by: `throttle_authenticated_web_enabled` | Max requests per period per user. | +| `throttle_authenticated_web_period_in_seconds` | integer | required by:<br>`throttle_authenticated_web_enabled` | Rate limit period in seconds. | +| `throttle_authenticated_web_requests_per_period` | integer | required by:<br>`throttle_authenticated_web_enabled` | Max requests per period per user. | | `throttle_unauthenticated_enabled` | boolean | no | (**If enabled, requires:** `throttle_unauthenticated_period_in_seconds` and `throttle_unauthenticated_requests_per_period`) Enable unauthenticated request rate limit. Helps reduce request volume (for example, from crawlers or abusive bots). | -| `throttle_unauthenticated_period_in_seconds` | integer | required by: `throttle_unauthenticated_enabled` | Rate limit period in seconds. | -| `throttle_unauthenticated_requests_per_period` | integer | required by: `throttle_unauthenticated_enabled` | Max requests per period per IP. | +| `throttle_unauthenticated_period_in_seconds` | integer | required by:<br>`throttle_unauthenticated_enabled` | Rate limit period in seconds. | +| `throttle_unauthenticated_requests_per_period` | integer | required by:<br>`throttle_unauthenticated_enabled` | Max requests per period per IP. | | `time_tracking_limit_to_hours` | boolean | no | Limit display of time tracking units to hours. Default is `false`. | | `two_factor_grace_period` | integer | required by: `require_two_factor_authentication` | Amount of time (in hours) that users are allowed to skip forced configuration of two-factor authentication. | -| `unique_ips_limit_enabled` | boolean | no | (**If enabled, requires:** `unique_ips_limit_per_user` and `unique_ips_limit_time_window`) Limit sign in from multiple ips. | +| `unique_ips_limit_enabled` | boolean | no | (**If enabled, requires:** `unique_ips_limit_per_user` and `unique_ips_limit_time_window`) Limit sign in from multiple IPs. | | `unique_ips_limit_per_user` | integer | required by: `unique_ips_limit_enabled` | Maximum number of IPs per user. | | `unique_ips_limit_time_window` | integer | required by: `unique_ips_limit_enabled` | How many seconds an IP will be counted towards the limit. | | `usage_ping_enabled` | boolean | no | Every week GitLab will report license usage back to GitLab, Inc. | diff --git a/doc/api/snippets.md b/doc/api/snippets.md index 6863763ff24..431d745ac84 100644 --- a/doc/api/snippets.md +++ b/doc/api/snippets.md @@ -198,22 +198,40 @@ POST /snippets Parameters: -| Attribute | Type | Required | Description | -|:--------------|:-------|:---------|:---------------------------------------------------| -| `title` | string | yes | Title of a snippet. | -| `file_name` | string | yes | Name of a snippet file. | -| `content` | string | yes | Content of a snippet. | -| `description` | string | no | Description of a snippet. | -| `visibility` | string | no | Snippet's [visibility](#snippet-visibility-level). | +| Attribute | Type | Required | Description | +|:------------------|:----------------|:---------|:--------------------------------------------------------| +| `title` | string | yes | Title of a snippet | +| `file_name` | string | no | Deprecated: Use `files` instead. Name of a snippet file | +| `content` | string | no | Deprecated: Use `files` instead. Content of a snippet | +| `description` | string | no | Description of a snippet | +| `visibility` | string | no | Snippet's [visibility](#snippet-visibility-level) | +| `files` | array of hashes | no | An array of snippet files | +| `files:file_path` | string | yes | File path of the snippet file | +| `files:content` | string | yes | Content of the snippet file | Example request: ```shell -curl --request POST \ - --data '{"title": "This is a snippet", "content": "Hello world", "description": "Hello World snippet", "file_name": "test.txt", "visibility": "internal" }' \ +curl --request POST "https://gitlab.example.com/api/v4/snippets" \ --header 'Content-Type: application/json' \ --header "PRIVATE-TOKEN: <your_access_token>" \ - "https://gitlab.example.com/api/v4/snippets" + -d @snippet.json +``` + +`snippet.json` used in the above example request: + +```json +{ + "title": "This is a snippet", + "description": "Hello World snippet", + "visibility": "internal", + "files": [ + { + "content": "Hello world", + "file_path": "test.txt" + } + ] +} ``` Example response: @@ -222,7 +240,6 @@ Example response: { "id": 1, "title": "This is a snippet", - "file_name": "test.txt", "description": "Hello World snippet", "visibility": "internal", "author": { @@ -238,7 +255,16 @@ Example response: "created_at": "2012-06-28T10:52:04Z", "project_id": null, "web_url": "http://example.com/snippets/1", - "raw_url": "http://example.com/snippets/1/raw" + "raw_url": "http://example.com/snippets/1/raw", + "ssh_url_to_repo": "ssh://git@gitlab.example.com:snippets/1.git", + "http_url_to_repo": "https://gitlab.example.com/snippets/1.git", + "file_name": "test.txt", + "files": [ + { + "path": "text.txt", + "raw_url": "https://gitlab.example.com/-/snippets/1/raw/master/renamed.md" + } + ] } ``` @@ -255,23 +281,44 @@ PUT /snippets/:id Parameters: -| Attribute | Type | Required | Description | -|:--------------|:--------|:---------|:---------------------------------------------------| -| `id` | integer | yes | ID of snippet to update. | -| `title` | string | no | Title of a snippet. | -| `file_name` | string | no | Name of a snippet file. | -| `description` | string | no | Description of a snippet. | -| `content` | string | no | Content of a snippet. | -| `visibility` | string | no | Snippet's [visibility](#snippet-visibility-level). | +| Attribute | Type | Required | Description | +|:----------------------|:----------------|:---------|:------------------------------------------------------------------------------------| +| `id` | integer | yes | ID of snippet to update | +| `title` | string | no | Title of a snippet | +| `file_name` | string | no | Deprecated: Use `files` instead. Name of a snippet file | +| `content` | string | no | Deprecated: Use `files` instead. Content of a snippet | +| `description` | string | no | Description of a snippet | +| `visibility` | string | no | Snippet's [visibility](#snippet-visibility-level) | +| `files` | array of hashes | no | An array of snippet files | +| `files:action` | string | yes | Type of action to perform on the file, one of: 'create', 'update', 'delete', 'move' | +| `files:file_path` | string | no | File path of the snippet file | +| `files:previous_path` | string | no | Previous path of the snippet file | +| `files:content` | string | no | Content of the snippet file | + +Updates to snippets with multiple files *must* use the `files` attribute. Example request: ```shell -curl --request PUT \ - --data '{"title": "foo", "content": "bar"}' \ +curl --request PUT "https://gitlab.example.com/api/v4/snippets/1" \ --header 'Content-Type: application/json' \ --header "PRIVATE-TOKEN: <your_access_token>" \ - "https://gitlab.example.com/api/v4/snippets/1" + -d @snippet.json +``` + +`snippet.json` used in the above example request: + +```json +{ + "title": "foo", + "files": [ + { + "action": "move", + "previous_path": "test.txt", + "file_path": "renamed.md" + } + ] +} ``` Example response: @@ -280,7 +327,6 @@ Example response: { "id": 1, "title": "test", - "file_name": "add.rb", "description": "description of snippet", "visibility": "internal", "author": { @@ -296,7 +342,16 @@ Example response: "created_at": "2012-06-28T10:52:04Z", "project_id": null, "web_url": "http://example.com/snippets/1", - "raw_url": "http://example.com/snippets/1/raw" + "raw_url": "http://example.com/snippets/1/raw", + "ssh_url_to_repo": "ssh://git@gitlab.example.com:snippets/1.git", + "http_url_to_repo": "https://gitlab.example.com/snippets/1.git", + "file_name": "renamed.md", + "files": [ + { + "path": "renamed.md", + "raw_url": "https://gitlab.example.com/-/snippets/1/raw/master/renamed.md" + } + ] } ``` diff --git a/doc/api/templates/gitlab_ci_ymls.md b/doc/api/templates/gitlab_ci_ymls.md index dfe22fc453e..45bc0f55095 100644 --- a/doc/api/templates/gitlab_ci_ymls.md +++ b/doc/api/templates/gitlab_ci_ymls.md @@ -135,7 +135,7 @@ Example response: ```json { "name": "Ruby", - "content": "# This file is a template, and might need editing before it works on your project.\n# Official language image. Look for the different tagged releases at:\n# https://hub.docker.com/r/library/ruby/tags/\nimage: \"ruby:2.5\"\n\n# Pick zero or more services to be used on all builds.\n# Only needed when using a docker container to run your tests in.\n# Check out: http://docs.gitlab.com/ce/ci/docker/using_docker_images.html#what-is-a-service\nservices:\n - mysql:latest\n - redis:latest\n - postgres:latest\n\nvariables:\n POSTGRES_DB: database_name\n\n# Cache gems in between builds\ncache:\n paths:\n - vendor/ruby\n\n# This is a basic example for a gem or script which doesn't use\n# services such as redis or postgres\nbefore_script:\n - ruby -v # Print out ruby version for debugging\n # Uncomment next line if your rails app needs a JS runtime:\n # - apt-get update -q && apt-get install nodejs -yqq\n - bundle install -j $(nproc) --path vendor # Install dependencies into ./vendor/ruby\n\n# Optional - Delete if not using `rubocop`\nrubocop:\n script:\n - rubocop\n\nrspec:\n script:\n - rspec spec\n\nrails:\n variables:\n DATABASE_URL: \"postgresql://postgres:postgres@postgres:5432/$POSTGRES_DB\"\n script:\n - rails db:migrate\n - rails db:seed\n - rails test\n\n# This deploy job uses a simple deploy flow to Heroku, other providers, e.g. AWS Elastic Beanstalk\n# are supported too: https://github.com/travis-ci/dpl\ndeploy:\n type: deploy\n environment: production\n script:\n - gem install dpl\n - dpl --provider=heroku --app=$HEROKU_APP_NAME --api-key=$HEROKU_PRODUCTION_KEY\n" + "content": "# This file is a template, and might need editing before it works on your project.\n# Official language image. Look for the different tagged releases at:\n# https://hub.docker.com/r/library/ruby/tags/\nimage: \"ruby:2.5\"\n\n# Pick zero or more services to be used on all builds.\n# Only needed when using a docker container to run your tests in.\n# Check out: http://docs.gitlab.com/ee/ci/docker/using_docker_images.html#what-is-a-service\nservices:\n - mysql:latest\n - redis:latest\n - postgres:latest\n\nvariables:\n POSTGRES_DB: database_name\n\n# Cache gems in between builds\ncache:\n paths:\n - vendor/ruby\n\n# This is a basic example for a gem or script which doesn't use\n# services such as redis or postgres\nbefore_script:\n - ruby -v # Print out ruby version for debugging\n # Uncomment next line if your rails app needs a JS runtime:\n # - apt-get update -q && apt-get install nodejs -yqq\n - bundle install -j $(nproc) --path vendor # Install dependencies into ./vendor/ruby\n\n# Optional - Delete if not using `rubocop`\nrubocop:\n script:\n - rubocop\n\nrspec:\n script:\n - rspec spec\n\nrails:\n variables:\n DATABASE_URL: \"postgresql://postgres:postgres@postgres:5432/$POSTGRES_DB\"\n script:\n - rails db:migrate\n - rails db:seed\n - rails test\n\n# This deploy job uses a simple deploy flow to Heroku, other providers, e.g. AWS Elastic Beanstalk\n# are supported too: https://github.com/travis-ci/dpl\ndeploy:\n type: deploy\n environment: production\n script:\n - gem install dpl\n - dpl --provider=heroku --app=$HEROKU_APP_NAME --api-key=$HEROKU_PRODUCTION_KEY\n" } ``` diff --git a/doc/api/todos.md b/doc/api/todos.md index ebe10ecbd49..ab36021d694 100644 --- a/doc/api/todos.md +++ b/doc/api/todos.md @@ -4,13 +4,13 @@ group: Project Management info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers --- -# To-dos API +# To dos API > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/3188) in GitLab 8.10. -## Get a list of to-dos +## Get a list of to dos -Returns a list of to-dos. When no filter is applied, it returns all pending to-dos +Returns a list of to dos. When no filter is applied, it returns all pending to dos for the current user. Different filters allow the user to precise the request. ```plaintext @@ -25,8 +25,8 @@ Parameters: | `author_id` | integer | no | The ID of an author | | `project_id` | integer | no | The ID of a project | | `group_id` | integer | no | The ID of a group | -| `state` | string | no | The state of the to-do. Can be either `pending` or `done` | -| `type` | string | no | The type of a to-do. Can be either `Issue`, `MergeRequest`, `DesignManagement::Design` or `AlertManagement::Alert` | +| `state` | string | no | The state of the to do. Can be either `pending` or `done` | +| `type` | string | no | The type of a to do. Can be either `Issue`, `MergeRequest`, `DesignManagement::Design` or `AlertManagement::Alert` | ```shell curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/todos" @@ -187,10 +187,10 @@ Example Response: ] ``` -## Mark a to-do as done +## Mark a to do as done -Marks a single pending to-do given by its ID for the current user as done. The -to-do marked as done is returned in the response. +Marks a single pending to do given by its ID for the current user as done. The +to do marked as done is returned in the response. ```plaintext POST /todos/:id/mark_as_done @@ -200,7 +200,7 @@ Parameters: | Attribute | Type | Required | Description | | --------- | ---- | -------- | ----------- | -| `id` | integer | yes | The ID of a to-do | +| `id` | integer | yes | The ID of a to do | ```shell curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/todos/130/mark_as_done" @@ -285,9 +285,9 @@ Example Response: } ``` -## Mark all to-dos as done +## Mark all to dos as done -Marks all pending to-dos for the current user as done. It returns the HTTP status code `204` with an empty response. +Marks all pending to dos for the current user as done. It returns the HTTP status code `204` with an empty response. ```plaintext POST /todos/mark_as_done diff --git a/doc/api/users.md b/doc/api/users.md index 634e0bd0842..beaea689fb7 100644 --- a/doc/api/users.md +++ b/doc/api/users.md @@ -950,7 +950,7 @@ Returns `204 No Content` on success, or `404 Not found` if the key cannot be fou ## List all GPG keys for given user -Get a list of a specified user's GPG keys. Available only for admins. +Get a list of a specified user's GPG keys. This endpoint can be accessed without authentication. ```plaintext GET /users/:id/gpg_keys @@ -980,7 +980,8 @@ Example response: ## Get a specific GPG key for a given user -Get a specific GPG key for a given user. Available only for admins. +Get a specific GPG key for a given user. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/43693) +in GitLab 13.5, this endpoint can be accessed without admin authentication. ```plaintext GET /users/:id/gpg_keys/:key_id @@ -1209,7 +1210,9 @@ Returns: - `201 OK` on success. - `404 User Not Found` if user cannot be found. -- `403 Forbidden` when trying to block an already blocked user by LDAP synchronization. +- `403 Forbidden` when trying to block: + - A user that is blocked through LDAP. + - An internal user. ## Unblock user @@ -1246,7 +1249,8 @@ Returns: - `404 User Not Found` if user cannot be found. - `403 Forbidden` when trying to deactivate a user: - Blocked by admin or by LDAP synchronization. - - That has any activity in past 180 days. These users cannot be deactivated. + - That has any activity in past 90 days. These users cannot be deactivated. + - That is internal. ## Activate user diff --git a/doc/api/v3_to_v4.md b/doc/api/v3_to_v4.md index 4139438bea0..c351c14e24c 100644 --- a/doc/api/v3_to_v4.md +++ b/doc/api/v3_to_v4.md @@ -1,6 +1,6 @@ # API V3 to API V4 -Since GitLab 9.0, API V4 is the preferred version to be used. +In GitLab 9.0 and later, API V4 is the preferred version to be used. API V3 was unsupported from GitLab 9.5, released on August 22, 2017. API v3 was removed in [GitLab 11.0](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/36819). diff --git a/doc/api/vulnerabilities.md b/doc/api/vulnerabilities.md index 73c765e2ccc..f89f2bda2eb 100644 --- a/doc/api/vulnerabilities.md +++ b/doc/api/vulnerabilities.md @@ -220,3 +220,53 @@ Example response: "closed_at": null } ``` + +## Revert vulnerability to detected state + +Reverts a given vulnerability to detected state. Returns status code `304` if the vulnerability is already in detected state. + +If an authenticated user does not have permission to +[revert vulnerability to detected state](../user/permissions.md#project-members-permissions), +this request will result in a `403` status code. + +```plaintext +POST /vulnerabilities/:id/revert +``` + +| Attribute | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `id` | integer or string | yes | The ID of a vulnerability to revert to detected state | + +```shell +curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/vulnerabilities/5/dismiss" +``` + +Example response: + +```json +{ + "id": 2, + "title": "Predictable pseudorandom number generator", + "description": null, + "state": "detected", + "severity": "medium", + "confidence": "medium", + "report_type": "sast", + "project": { + "id": 32, + "name": "security-reports", + "full_path": "/gitlab-examples/security/security-reports", + "full_name": "gitlab-examples / security / security-reports" + }, + "author_id": 1, + "updated_by_id": null, + "last_edited_by_id": null, + "closed_by_id": null, + "start_date": null, + "due_date": null, + "created_at": "2019-10-13T15:08:40.219Z", + "updated_at": "2019-10-13T15:09:40.382Z", + "last_edited_at": null, + "closed_at": null +} +``` diff --git a/doc/api/vulnerability_exports.md b/doc/api/vulnerability_exports.md index d19d41b647e..0ee8a18a46a 100644 --- a/doc/api/vulnerability_exports.md +++ b/doc/api/vulnerability_exports.md @@ -198,18 +198,18 @@ The response will be `404 Not Found` if the vulnerability export is not finished Example response: ```csv -Group Name,Project Name,Scanner Type,Scanner Name,Status,Vulnerability,Details,Additional Info,Severity,CVE -Gitlab.org,Defend,container_scanning,Clair,confirmed,CVE-2017-16997 in glibc,,CVE-2017-16997 in glibc,critical,CVE-2017-16997 +Group Name,Project Name,Scanner Type,Scanner Name,Status,Vulnerability,Details,Additional Info,Severity,CVE,CWE,Other Identifiers +Gitlab.org,Defend,container_scanning,Clair,detected,CVE-2017-16997 in glibc,,CVE-2017-16997 in glibc,critical,CVE-2017-16997 Gitlab.org,Defend,container_scanning,Clair,detected,CVE-2017-18269 in glibc,,CVE-2017-18269 in glibc,critical,CVE-2017-18269 Gitlab.org,Defend,container_scanning,Clair,detected,CVE-2018-1000001 in glibc,,CVE-2018-1000001 in glibc,high,CVE-2018-1000001 Gitlab.org,Defend,container_scanning,Clair,detected,CVE-2016-10228 in glibc,,CVE-2016-10228 in glibc,medium,CVE-2016-10228 -Gitlab.org,Defend,container_scanning,Clair,confirmed,CVE-2010-4052 in glibc,,CVE-2010-4052 in glibc,low,CVE-2010-4052 +Gitlab.org,Defend,container_scanning,Clair,detected,CVE-2010-4052 in glibc,,CVE-2010-4052 in glibc,low,CVE-2010-4052 Gitlab.org,Defend,container_scanning,Clair,detected,CVE-2018-18520 in elfutils,,CVE-2018-18520 in elfutils,low,CVE-2018-18520 -Gitlab.org,Defend,container_scanning,Clair,detected,CVE-2018-16869 in nettle,,CVE-2018-16869 in nettle,unknown,CVE-2018-16869 -Gitlab.org,Defend,dependency_scanning,Gemnasium,detected,Regular Expression Denial of Service in debug,,Regular Expression Denial of Service in debug,unknown,yarn.lock:debug:gemnasium:37283ed4-0380-40d7-ada7-2d994afcc62a -Gitlab.org,Defend,dependency_scanning,Gemnasium,detected,Authentication bypass via incorrect DOM traversal and canonicalization in saml2-js,,Authentication bypass via incorrect DOM traversal and canonicalization in saml2-js,unknown,yarn.lock:saml2-js:gemnasium:9952e574-7b5b-46fa-a270-aeb694198a98 -Gitlab.org,Defend,sast,Find Security Bugs,detected,Predictable pseudorandom number generator,,Predictable pseudorandom number generator,medium,818bf5dacb291e15d9e6dc3c5ac32178:PREDICTABLE_RANDOM:src/main/java/com/gitlab/security_products/tests/App.java:47 -Gitlab.org,Defend,sast,Find Security Bugs,detected,Cipher with no integrity,,Cipher with no integrity,medium,e6449b89335daf53c0db4c0219bc1634:CIPHER_INTEGRITY:src/main/java/com/gitlab/security_products/tests/App.java:29 -Gitlab.org,Defend,sast,Find Security Bugs,detected,Predictable pseudorandom number generator,,Predictable pseudorandom number generator,medium,e8ff1d01f74cd372f78da8f5247d3e73:PREDICTABLE_RANDOM:src/main/java/com/gitlab/security_products/tests/App.java:41 -Gitlab.org,Defend,sast,Find Security Bugs,confirmed,ECB mode is insecure 2,,ECB mode is insecure,medium,ea0f905fc76f2739d5f10a1fd1e37a10:ECB_MODE:src/main/java/com/gitlab/security_products/tests/App.java:29 -Gitlab.org,Defend,``` +Gitlab.org,Defend,container_scanning,Clair,detected,CVE-2018-16869 in nettle,,CVE-2018-16869 in nettle,unknown,CVE-2018-16869,CWE-1 +Gitlab.org,Defend,dependency_scanning,Gemnasium,detected,Regular Expression Denial of Service in debug,,Regular Expression Denial of Service in debug,unknown,CVE-2021-1234,CWE-2,"""yarn.lock:debug:gemnasium:37283ed4-0380-40d7-ada7-2d994afcc62a""" +Gitlab.org,Defend,dependency_scanning,Gemnasium,detected,Authentication bypass via incorrect DOM traversal and canonicalization in saml2-js,,Authentication bypass via incorrect DOM traversal and canonicalization in saml2-js,unknown,,,"""yarn.lock:saml2-js:gemnasium:9952e574-7b5b-46fa-a270-aeb694198a98""" +Gitlab.org,Defend,sast,Find Security Bugs,detected,Predictable pseudorandom number generator,,Predictable pseudorandom number generator,medium,,,"""818bf5dacb291e15d9e6dc3c5ac32178:PREDICTABLE_RANDOM:src/main/java/com/gitlab/security_products/tests/App.java:47""" +Gitlab.org,Defend,sast,Find Security Bugs,detected,Cipher with no integrity,,Cipher with no integrity,medium,,,"""e6449b89335daf53c0db4c0219bc1634:CIPHER_INTEGRITY:src/main/java/com/gitlab/security_products/tests/App.java:29""" +Gitlab.org,Defend,sast,Find Security Bugs,detected,Predictable pseudorandom number generator,,Predictable pseudorandom number generator,medium,,,"""e8ff1d01f74cd372f78da8f5247d3e73:PREDICTABLE_RANDOM:src/main/java/com/gitlab/security_products/tests/App.java:41""" +Gitlab.org,Defend,sast,Find Security Bugs,detected,ECB mode is insecure,,ECB mode is insecure,medium,,,"""ea0f905fc76f2739d5f10a1fd1e37a10:ECB_MODE:src/main/java/com/gitlab/security_products/tests/App.java:29""" +``` diff --git a/doc/api/wikis.md b/doc/api/wikis.md index 7d16a5a38ee..a8c002d4fac 100644 --- a/doc/api/wikis.md +++ b/doc/api/wikis.md @@ -5,7 +5,7 @@ info: "To determine the technical writer assigned to the Stage/Group associated type: reference, api --- -# Wikis API +# Project wikis API > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/13372) in GitLab 10.0. |