From fdc2b6184d20e767f089557f3cdc68837a6aacfb Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 12 Dec 2023 03:16:05 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .rubocop_todo/layout/argument_alignment.yml | 1 - .rubocop_todo/layout/line_length.yml | 1 - .rubocop_todo/rspec/context_wording.yml | 1 - .rubocop_todo/rspec/named_subject.yml | 1 - .rubocop_todo/rspec/scattered_let.yml | 1 - .rubocop_todo/style/if_unless_modifier.yml | 1 - .rubocop_todo/style/numeric_literal_prefix.yml | 2 +- .rubocop_todo/style/open_struct_use.yml | 1 + .../components/system_notes/system_note.vue | 2 +- app/models/diff_note.rb | 2 +- app/models/merge_request_diff.rb | 5 +- .../application_settings/_git_lfs_limits.html.haml | 2 +- .../_import_export_limits.html.haml | 2 +- .../application_settings/_issue_limits.html.haml | 2 +- .../_network_rate_limits.html.haml | 4 +- .../application_settings/_note_limits.html.haml | 2 +- .../_pipeline_limits.html.haml | 2 +- .../_projects_api_limits.html.haml | 2 +- .../application_settings/_search_limits.html.haml | 2 +- .../_users_api_limits.html.haml | 2 +- app/views/admin/deploy_keys/new.html.haml | 2 +- app/views/admin/topics/_form.html.haml | 2 +- .../development/collapse_generated_diff_files.yml | 8 + db/docs/analytics_devops_adoption_snapshots.yml | 4 +- db/docs/packages_tags.yml | 4 +- ...4_add_text_limit_to_custom_jira_regex_fields.rb | 2 +- ...d_to_merge_request_context_commit_diff_files.rb | 11 + db/schema_migrations/20231123035033 | 1 + db/structure.sql | 3 +- doc/api/graphql/getting_started.md | 2 +- doc/api/graphql/index.md | 124 ++--- doc/api/graphql/reference/index.md | 556 ++++++++++----------- doc/ci/resource_groups/index.md | 2 +- doc/ci/testing/code_quality.md | 2 +- doc/development/api_graphql_styleguide.md | 22 +- doc/development/fe_guide/index.md | 2 +- doc/development/fe_guide/migrating_from_vuex.md | 2 +- doc/security/user_file_uploads.md | 2 +- lib/gitlab/git/diff.rb | 24 +- lib/gitlab/git/diff_collection.rb | 6 +- qa/qa/page/project/monitor/alerts/show.rb | 4 +- spec/lib/gitlab/database/sharding_key_spec.rb | 65 +++ spec/lib/gitlab/git/diff_collection_spec.rb | 69 ++- spec/lib/gitlab/git/diff_spec.rb | 6 +- spec/models/merge_request_diff_spec.rb | 60 ++- spec/support/rspec_order_todo.yml | 1 - tooling/graphql/docs/helper.rb | 2 +- tooling/graphql/docs/templates/default.md.haml | 2 +- 48 files changed, 613 insertions(+), 415 deletions(-) create mode 100644 config/feature_flags/development/collapse_generated_diff_files.yml create mode 100644 db/migrate/20231123035033_add_generated_to_merge_request_context_commit_diff_files.rb create mode 100644 db/schema_migrations/20231123035033 diff --git a/.rubocop_todo/layout/argument_alignment.yml b/.rubocop_todo/layout/argument_alignment.yml index 55d6c9799bb..97da3fca535 100644 --- a/.rubocop_todo/layout/argument_alignment.yml +++ b/.rubocop_todo/layout/argument_alignment.yml @@ -949,7 +949,6 @@ Layout/ArgumentAlignment: - 'ee/spec/lib/gitlab/data_builder/vulnerability_spec.rb' - 'ee/spec/lib/gitlab/elastic/indexer_spec.rb' - 'ee/spec/lib/gitlab/geo/log_cursor/daemon_spec.rb' - - 'ee/spec/lib/gitlab/geo/replication/blob_downloader_spec.rb' - 'ee/spec/lib/gitlab/geo_spec.rb' - 'ee/spec/lib/gitlab/git_access_spec.rb' - 'ee/spec/lib/gitlab/git_access_wiki_spec.rb' diff --git a/.rubocop_todo/layout/line_length.yml b/.rubocop_todo/layout/line_length.yml index d44131e2fd4..6c52e174a28 100644 --- a/.rubocop_todo/layout/line_length.yml +++ b/.rubocop_todo/layout/line_length.yml @@ -1664,7 +1664,6 @@ Layout/LineLength: - 'ee/spec/lib/gitlab/geo/log_cursor/lease_spec.rb' - 'ee/spec/lib/gitlab/geo/oauth/login_state_spec.rb' - 'ee/spec/lib/gitlab/geo/oauth/logout_token_spec.rb' - - 'ee/spec/lib/gitlab/geo/replication/blob_downloader_spec.rb' - 'ee/spec/lib/gitlab/geo_spec.rb' - 'ee/spec/lib/gitlab/git_access_spec.rb' - 'ee/spec/lib/gitlab/git_access_wiki_spec.rb' diff --git a/.rubocop_todo/rspec/context_wording.yml b/.rubocop_todo/rspec/context_wording.yml index b87720fa9cd..e2df251aa7e 100644 --- a/.rubocop_todo/rspec/context_wording.yml +++ b/.rubocop_todo/rspec/context_wording.yml @@ -368,7 +368,6 @@ RSpec/ContextWording: - 'ee/spec/lib/gitlab/geo/jwt_request_decoder_spec.rb' - 'ee/spec/lib/gitlab/geo/log_helpers_spec.rb' - 'ee/spec/lib/gitlab/geo/oauth/session_spec.rb' - - 'ee/spec/lib/gitlab/geo/replication/blob_downloader_spec.rb' - 'ee/spec/lib/gitlab/geo/replicator_spec.rb' - 'ee/spec/lib/gitlab/geo/signed_data_spec.rb' - 'ee/spec/lib/gitlab/git_access_spec.rb' diff --git a/.rubocop_todo/rspec/named_subject.yml b/.rubocop_todo/rspec/named_subject.yml index 152d2068e0c..752c32b9d6a 100644 --- a/.rubocop_todo/rspec/named_subject.yml +++ b/.rubocop_todo/rspec/named_subject.yml @@ -436,7 +436,6 @@ RSpec/NamedSubject: - 'ee/spec/lib/gitlab/geo/log_cursor/events/hashed_storage_attachments_event_spec.rb' - 'ee/spec/lib/gitlab/geo/oauth/session_spec.rb' - 'ee/spec/lib/gitlab/geo/registry_batcher_spec.rb' - - 'ee/spec/lib/gitlab/geo/replication/blob_downloader_spec.rb' - 'ee/spec/lib/gitlab/geo/replication/blob_retriever_spec.rb' - 'ee/spec/lib/gitlab/geo/replicator_spec.rb' - 'ee/spec/lib/gitlab/geo/signed_data_spec.rb' diff --git a/.rubocop_todo/rspec/scattered_let.yml b/.rubocop_todo/rspec/scattered_let.yml index 627ab6870b8..00d8fd127ae 100644 --- a/.rubocop_todo/rspec/scattered_let.yml +++ b/.rubocop_todo/rspec/scattered_let.yml @@ -15,7 +15,6 @@ RSpec/ScatteredLet: - 'ee/spec/lib/gitlab/code_owners/loader_spec.rb' - 'ee/spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb' - 'ee/spec/lib/gitlab/elastic/bulk_indexer_spec.rb' - - 'ee/spec/lib/gitlab/geo/replication/blob_downloader_spec.rb' - 'ee/spec/lib/gitlab/git_access_spec.rb' - 'ee/spec/lib/gitlab/insights/reducers/count_per_label_reducer_spec.rb' - 'ee/spec/lib/gitlab/insights/reducers/label_count_per_period_reducer_spec.rb' diff --git a/.rubocop_todo/style/if_unless_modifier.yml b/.rubocop_todo/style/if_unless_modifier.yml index 5c4f93e0d55..985655536bc 100644 --- a/.rubocop_todo/style/if_unless_modifier.yml +++ b/.rubocop_todo/style/if_unless_modifier.yml @@ -623,7 +623,6 @@ Style/IfUnlessModifier: - 'ee/spec/helpers/ee/users/callouts_helper_spec.rb' - 'ee/spec/lib/gitlab/analytics/cycle_analytics/data_collector_spec.rb' - 'ee/spec/lib/gitlab/elastic/search_results_spec.rb' - - 'ee/spec/lib/gitlab/geo/replication/blob_downloader_spec.rb' - 'ee/spec/models/concerns/elastic/note_spec.rb' - 'ee/spec/models/geo_node_status_spec.rb' - 'ee/spec/models/push_rule_spec.rb' diff --git a/.rubocop_todo/style/numeric_literal_prefix.yml b/.rubocop_todo/style/numeric_literal_prefix.yml index 4d810dc95f0..0004b0da84b 100644 --- a/.rubocop_todo/style/numeric_literal_prefix.yml +++ b/.rubocop_todo/style/numeric_literal_prefix.yml @@ -9,7 +9,6 @@ Style/NumericLiteralPrefix: - 'ee/lib/ee/gitlab/background_migration/backfill_project_statistics_container_repository_size.rb' - 'ee/lib/gitlab/geo/replication/blob_downloader.rb' - 'ee/spec/lib/bulk_imports/groups/pipelines/iterations_pipeline_spec.rb' - - 'ee/spec/lib/gitlab/geo/replication/blob_downloader_spec.rb' - 'ee/spec/models/analytics/devops_adoption/snapshot_spec.rb' - 'ee/spec/models/ci/minutes/usage_spec.rb' - 'ee/spec/models/ee/group_spec.rb' @@ -30,6 +29,7 @@ Style/NumericLiteralPrefix: - 'spec/lib/gitlab/database/background_migration/batched_job_spec.rb' - 'spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb' - 'spec/lib/gitlab/git/diff_spec.rb' + - 'spec/lib/gitlab/git/diff_collection_spec.rb' - 'spec/lib/gitlab/gitaly_client/blobs_stitcher_spec.rb' - 'spec/lib/gitlab/gitaly_client/conflict_files_stitcher_spec.rb' - 'spec/lib/gitlab/gitaly_client/diff_spec.rb' diff --git a/.rubocop_todo/style/open_struct_use.yml b/.rubocop_todo/style/open_struct_use.yml index c21b63bc22b..4b2eedd833a 100644 --- a/.rubocop_todo/style/open_struct_use.yml +++ b/.rubocop_todo/style/open_struct_use.yml @@ -6,6 +6,7 @@ Style/OpenStructUse: - 'ee/spec/helpers/ee/blob_helper_spec.rb' - 'ee/spec/lib/gitlab/auth/group_saml/failure_handler_spec.rb' - 'spec/helpers/profiles_helper_spec.rb' + - 'spec/lib/gitlab/git/diff_collection_spec.rb' - 'spec/lib/gitlab/gitaly_client/blobs_stitcher_spec.rb' - 'spec/lib/gitlab/gitaly_client/diff_stitcher_spec.rb' - 'spec/support/helpers/repo_helpers.rb' diff --git a/app/assets/javascripts/vue_shared/alert_details/components/system_notes/system_note.vue b/app/assets/javascripts/vue_shared/alert_details/components/system_notes/system_note.vue index 93581dbbd40..655a16dea01 100644 --- a/app/assets/javascripts/vue_shared/alert_details/components/system_notes/system_note.vue +++ b/app/assets/javascripts/vue_shared/alert_details/components/system_notes/system_note.vue @@ -36,7 +36,7 @@ export default {
  • Enabled and [made generally available](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/30444) in GitLab 12.1. [Feature flag `graphql`](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/30444) removed. - [GraphQL](https://graphql.org/) is a query language for APIs. You can use it to request the exact data you need, and therefore limit the number of requests you need. @@ -15,38 +13,22 @@ GraphQL data is arranged in types, so your client can use [client-side GraphQL libraries](https://graphql.org/code/#graphql-clients) to consume the API and avoid manual parsing. -There are no fixed endpoints and no data model, so you can add -to the API without creating [breaking changes](../../development/deprecation_guidelines/index.md). -This enables us to have a [versionless API](https://graphql.org/learn/best-practices/#versioning). - -## Vision - -We want the GraphQL API to be the **primary** means of interacting -programmatically with GitLab. To achieve this, it needs full coverage - anything -possible in the REST API should also be possible in the GraphQL API. +The GraphQL API is [versionless](https://graphql.org/learn/best-practices/#versioning). -To help us meet this vision, the frontend should use GraphQL in preference to -the REST API for new features. - -There are no plans to deprecate the REST API. To reduce the technical burden of -supporting two APIs in parallel, they should share implementations as much as -possible. - -## Work with GraphQL +## Getting started If you're new to the GitLab GraphQL API, see [Get started with GitLab GraphQL API](getting_started.md). You can view the available resources in the [GraphQL API reference](reference/index.md). -The reference is automatically generated from the GitLab GraphQL schema and -written to a Markdown file. The GitLab GraphQL API endpoint is located at `/api/graphql`. -### GraphiQL +### Interactive GraphQL explorer + +Explore the GraphQL API using the interactive GraphQL explorer, either: -Explore the GraphQL API using the interactive [GraphiQL explorer](https://gitlab.com/-/graphql-explorer), -or on your self-managed GitLab instance on -`https:///-/graphql-explorer`. +- [On GitLab.com](https://gitlab.com/-/graphql-explorer). +- On your self-managed GitLab instance on `https:///-/graphql-explorer`. For more information, see [GraphiQL](getting_started.md#graphiql). @@ -72,33 +54,44 @@ Global IDs are a convention used for caching and fetching in some client-side li GitLab Global IDs are subject to change. If changed, the use of the old Global ID as an argument is deprecated and supported according to the [deprecation and breaking change](#breaking-changes) process. You should not expect that a cached Global ID will be valid beyond the time of a GitLab GraphQL deprecation cycle. +## Available top-level queries + +The top-level entry points for all queries are defined in the [`Query` type](reference/index.md#query-type) in the +GraphQL reference. + +### Multiplex queries + +GitLab supports batching queries into a single request. For more information, see +[Multiplex](https://graphql-ruby.org/queries/multiplex.html). + ## Breaking changes -The GitLab GraphQL API is [versionless](https://graphql.org/learn/best-practices/#versioning) and changes to the API are primarily backward-compatible. +The GitLab GraphQL API is [versionless](https://graphql.org/learn/best-practices/#versioning) and changes to the API are +primarily backward-compatible. However, GitLab sometimes changes the GraphQL API in a way that is not backward-compatible. These changes are considered breaking changes, and can include removing or renaming fields, arguments, or other parts of the schema. When creating a breaking change, GitLab follows a [deprecation and removal process](#deprecation-and-removal-process). -To avoid having a breaking change affect your integrations, you should -familiarize yourself with the [deprecation and removal process](#deprecation-and-removal-process) and -frequently [verify your API calls against the future breaking-change schema](#verify-against-the-future-breaking-change-schema). +To avoid having a breaking change affect your integrations, you should: + +- Familiarize yourself with the [deprecation and removal process](#deprecation-and-removal-process). +- Frequently [verify your API calls against the future breaking-change schema](#verify-against-the-future-breaking-change-schema). For more information, see [Deprecating GitLab features](../../development/deprecation_guidelines/index.md). ### Breaking change exemptions -Schema items -[marked as alpha](../../development/api_graphql_styleguide.md#mark-schema-items-as-alpha) -are exempt from the deprecation process, and can be removed or changed at any +Schema items labeled as Experiments in the [GraphQL API reference](reference/index.md) +are exempt from the deprecation process. These items can be removed or changed at any time without notice. Fields behind a feature flag and disabled by default do not follow the -deprecation and removal process, and can be removed at any time without notice. +deprecation and removal process. These fields can be removed at any time without notice. WARNING: GitLab makes all attempts to follow the [deprecation and removal process](#deprecation-and-removal-process). -On rare occasions, GitLab might make immediate breaking changes to the GraphQL +GitLab might make immediate breaking changes to the GraphQL API to patch critical security or performance concerns if the deprecation process would pose significant risk. @@ -111,8 +104,8 @@ This way, you can verify API calls ahead of a [breaking-change release](#depreca before the items are actually removed from the schema. To make these calls, add a -`remove_deprecated=true` query parameter to the GitLab GraphQL API endpoint (for example, -`https://gitlab.com/api/graphql?remove_deprecated=true` for GitLab SaaS GraphQL). +`remove_deprecated=true` query parameter to the GraphQL API endpoint. For example, +`https://gitlab.com/api/graphql?remove_deprecated=true` for GraphQL on GitLab.com. ### Deprecation and removal process @@ -134,10 +127,8 @@ Items are marked as deprecated in: The deprecation message provides an alternative for the deprecated schema item, if applicable. -NOTE: -If you use the GraphQL API, we recommend you remove the deprecated schema from your GraphQL -API calls as soon as possible to avoid experiencing breaking changes. -You should [verify your API calls against the schema without the deprecated schema items](#verify-against-the-future-breaking-change-schema). +To avoid experiencing breaking changes, you should remove the deprecated schema from your GraphQL API calls as soon as +possible. You should [verify your API calls against the schema without the deprecated schema items](#verify-against-the-future-breaking-change-schema). #### Deprecation example @@ -145,7 +136,7 @@ The following fields are deprecated in different minor releases, but both removed in GitLab 14.0: | Field deprecated in | Reason | -| ------------------- | --- | +|:--------------------|:-------| | 12.7 | GitLab traditionally has 12 minor releases per major release. To ensure the field is available for 6 more releases, it is removed in the 14.0 major release (and not 13.0). | | 13.6 | The removal in 14.0 allows for 6 months of availability. | @@ -153,50 +144,21 @@ removed in GitLab 14.0: View the [list of items removed](removed_items.md) in previous releases. -## Available queries - -The GraphQL API includes the following queries at the root level: - -Query | Description ---------------|------------ -`project` | Project information and many of its associations, such as issues and merge requests. -`group` | Basic group information and epics. -`user` | Information about a particular user. -`namespace` | The namespace and the `projects` in it. -`currentUser` | Information about the authenticated user. -`users` | Information about a collection of users. -`metaData` | Metadata about GitLab and the GraphQL API. -`snippets` | Snippets visible to the authenticated user. - -New associations and root level objects are regularly added. -See the [GraphQL API Reference](reference/index.md) for up-to-date information. - -Root-level queries are defined in -[`app/graphql/types/query_type.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/graphql/types/query_type.rb). - -### Multiplex queries - -GitLab supports batching queries into a single request using -[`@apollo/client/link/batch-http`](https://www.apollographql.com/docs/react/api/link/apollo-link-batch-http/). More -information about multiplexed queries is also available for -[GraphQL Ruby](https://graphql-ruby.org/queries/multiplex.html), the -library GitLab uses on the backend. - ## Limits The following limits apply to the GitLab GraphQL API. -Limit | Default ----------------------|--------------------------------------------------------------------- -Max page size | 100 records (nodes) per page. Applies to most connections in the API. Particular connections may have different max page size limits that are higher or lower. -[Max query complexity](#max-query-complexity) | `200` for unauthenticated requests and `250` for authenticated requests. -Request timeout | 30 seconds. -Max query size | 10,000 characters per query or mutation. If this limit is reached, use [variables](https://graphql.org/learn/queries/#variables) and [fragments](https://graphql.org/learn/queries/#fragments) to reduce the query or mutation size. Remove white spaces as last resort. +| Limit | Default | +|:------------------------------------------------------|:--------| +| Maximum page size | 100 records (nodes) per page. Applies to most connections in the API. Particular connections may have different max page size limits that are higher or lower. | +| [Maximum query complexity](#maximum-query-complexity) | 200 for unauthenticated requests and 250 for authenticated requests. | +| Request timeout | 30 seconds. | +| Maximum query size | 10,000 characters per query or mutation. If this limit is reached, use [variables](https://graphql.org/learn/queries/#variables) and [fragments](https://graphql.org/learn/queries/#fragments) to reduce the query or mutation size. Remove white spaces as last resort. | -### Max query complexity +### Maximum query complexity The GitLab GraphQL API scores the _complexity_ of a query. Generally, larger -queries have a higher complexity score. This limit is designed to protect +queries have a higher complexity score. This limit is designed to protecting the API from performing queries that could negatively impact its overall performance. You can [query](getting_started.md#query-complexity) the complexity score of a query @@ -209,14 +171,8 @@ In general, each field in a query adds `1` to the complexity score, although this can be higher or lower for particular fields. Sometimes, adding certain arguments may also increase the complexity of a query. -NOTE: -The complexity limits may be revised in future, and additionally, the complexity -of a query may be altered. - ## Resolve mutations detected as spam -> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/327360) in GitLab 13.11. - GraphQL mutations can be detected as spam. If a mutation is detected as spam and: - A CAPTCHA service is not configured, a diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index f8157c132ee..e053f0f5a60 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -14,7 +14,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w This documentation is self-generated based on GitLab current GraphQL schema. -The API can be explored interactively using the [GraphiQL IDE](../index.md#graphiql). +The API can be explored using the [interactive GraphQL explorer](../index.md#interactive-graphql-explorer). Each table below documents a GraphQL type. Types match loosely to models, but not all fields and methods on a model are available via GraphQL. @@ -64,7 +64,7 @@ Returns [`LabelConnection`](#labelconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -101,7 +101,7 @@ Returns [`AiMessageConnection!`](#aimessageconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -118,7 +118,7 @@ Returns [`AuditEventDefinitionConnection!`](#auditeventdefinitionconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ### `Query.auditEventsInstanceAmazonS3Configurations` @@ -128,7 +128,7 @@ Returns [`InstanceAmazonS3ConfigurationTypeConnection`](#instanceamazons3configu This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ### `Query.boardList` @@ -178,7 +178,7 @@ Returns [`CiCatalogResourceConnection`](#cicatalogresourceconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -214,7 +214,7 @@ Returns [`CiMinutesNamespaceMonthlyUsageConnection`](#ciminutesnamespacemonthlyu This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -261,7 +261,7 @@ Returns [`CiInstanceVariableConnection`](#ciinstancevariableconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -307,7 +307,7 @@ Returns [`DevopsAdoptionEnabledNamespaceConnection`](#devopsadoptionenablednames This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -404,7 +404,7 @@ Returns [`GroupConnection`](#groupconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -420,7 +420,7 @@ Returns [`InstanceExternalAuditEventDestinationConnection`](#instanceexternalaud This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ### `Query.instanceGoogleCloudLoggingConfigurations` @@ -430,7 +430,7 @@ Returns [`InstanceGoogleCloudLoggingConfigurationTypeConnection`](#instancegoogl This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ### `Query.instanceSecurityDashboard` @@ -462,7 +462,7 @@ Returns [`IssueConnection`](#issueconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -527,7 +527,7 @@ Returns [`CiJobConnection`](#cijobconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -545,7 +545,7 @@ Returns [`LicenseHistoryEntryConnection`](#licensehistoryentryconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ### `Query.memberRole` @@ -575,7 +575,7 @@ Returns [`CustomizablePermissionConnection`](#customizablepermissionconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ### `Query.mergeRequest` @@ -699,7 +699,7 @@ Returns [`ProjectConnection`](#projectconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -745,7 +745,7 @@ Returns [`RunnerPlatformConnection`](#runnerplatformconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ### `Query.runnerSetup` @@ -774,7 +774,7 @@ Returns [`CiRunnerConnection`](#cirunnerconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -803,7 +803,7 @@ Returns [`AddOnUserConnection`](#addonuserconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -820,7 +820,7 @@ Returns [`SnippetConnection`](#snippetconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -841,7 +841,7 @@ Returns [`SubscriptionFutureEntryConnection`](#subscriptionfutureentryconnection This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ### `Query.syntheticNote` @@ -868,7 +868,7 @@ Returns [`TimelogConnection`](#timelogconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -903,7 +903,7 @@ Returns [`TopicConnection`](#topicconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -919,7 +919,7 @@ Returns [`UsageTrendsMeasurementConnection`](#usagetrendsmeasurementconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -950,7 +950,7 @@ Returns [`UserCoreConnection`](#usercoreconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -970,7 +970,7 @@ Returns [`VulnerabilityConnection`](#vulnerabilityconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -1000,7 +1000,7 @@ Returns [`VulnerabilitiesCountByDayConnection`](#vulnerabilitiescountbydayconnec This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -1049,7 +1049,7 @@ Returns [`WorkItemConnection`](#workitemconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -1086,7 +1086,7 @@ Returns [`WorkspaceConnection`](#workspaceconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. #### Arguments @@ -13913,7 +13913,7 @@ Returns [`NoteConnection!`](#noteconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14073,7 +14073,7 @@ Returns [`UserAddOnAssignmentConnection`](#useraddonassignmentconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14089,7 +14089,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14125,7 +14125,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14161,7 +14161,7 @@ Returns [`GroupConnection`](#groupconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14178,7 +14178,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14226,7 +14226,7 @@ Returns [`SnippetConnection`](#snippetconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14244,7 +14244,7 @@ Returns [`ProjectConnection`](#projectconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14260,7 +14260,7 @@ Returns [`TimelogConnection`](#timelogconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14283,7 +14283,7 @@ Returns [`TodoConnection`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14308,7 +14308,7 @@ Returns [`WorkspaceConnection`](#workspaceconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14417,7 +14417,7 @@ Returns [`NoteConnection!`](#noteconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14433,7 +14433,7 @@ Returns [`TodoConnection`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14757,7 +14757,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14793,7 +14793,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14829,7 +14829,7 @@ Returns [`GroupConnection`](#groupconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14858,7 +14858,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14906,7 +14906,7 @@ Returns [`SnippetConnection`](#snippetconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14924,7 +14924,7 @@ Returns [`ProjectConnection`](#projectconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14940,7 +14940,7 @@ Returns [`TimelogConnection`](#timelogconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14963,7 +14963,7 @@ Returns [`TodoConnection`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -14988,7 +14988,7 @@ Returns [`WorkspaceConnection`](#workspaceconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -15112,7 +15112,7 @@ Returns [`BoardEpicConnection`](#boardepicconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -15128,7 +15128,7 @@ Returns [`BoardListConnection`](#boardlistconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -15211,7 +15211,7 @@ Returns [`EpicConnection`](#epicconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -15248,7 +15248,7 @@ Returns [`EpicConnection`](#epicconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -15285,7 +15285,7 @@ Returns [`TodoConnection!`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -15301,7 +15301,7 @@ Returns [`NoteConnection!`](#noteconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -15365,7 +15365,7 @@ Returns [`IssueConnection`](#issueconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -15478,7 +15478,7 @@ Returns [`CiCatalogResourceVersionConnection`](#cicatalogresourceversionconnecti This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -15936,7 +15936,7 @@ Returns [`CiJobConnection`](#cijobconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -15952,7 +15952,7 @@ Returns [`ProjectConnection`](#projectconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -16269,7 +16269,7 @@ Returns [`PipelineConnection`](#pipelineconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -16605,7 +16605,7 @@ Returns [`ContainerRepositoryTagConnection`](#containerrepositorytagconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -16783,7 +16783,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -16819,7 +16819,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -16855,7 +16855,7 @@ Returns [`GroupConnection`](#groupconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -16872,7 +16872,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -16920,7 +16920,7 @@ Returns [`SnippetConnection`](#snippetconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -16938,7 +16938,7 @@ Returns [`ProjectConnection`](#projectconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -16954,7 +16954,7 @@ Returns [`TimelogConnection`](#timelogconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -16977,7 +16977,7 @@ Returns [`TodoConnection`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -17002,7 +17002,7 @@ Returns [`WorkspaceConnection`](#workspaceconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -17586,7 +17586,7 @@ Returns [`TodoConnection!`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -17602,7 +17602,7 @@ Returns [`NoteConnection!`](#noteconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -17618,7 +17618,7 @@ Returns [`DesignVersionConnection!`](#designversionconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -17695,7 +17695,7 @@ Returns [`DesignConnection!`](#designconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -17726,7 +17726,7 @@ Returns [`DesignVersionConnection!`](#designversionconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -17825,7 +17825,7 @@ Returns [`DesignAtVersionConnection!`](#designatversionconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -17891,7 +17891,7 @@ Returns [`DevopsAdoptionSnapshotConnection`](#devopsadoptionsnapshotconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18121,7 +18121,7 @@ Returns [`DeploymentConnection`](#deploymentconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18225,7 +18225,7 @@ Returns [`EpicConnection`](#epicconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18262,7 +18262,7 @@ Returns [`EpicConnection`](#epicconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18299,7 +18299,7 @@ Returns [`TodoConnection!`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18315,7 +18315,7 @@ Returns [`NoteConnection!`](#noteconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18362,7 +18362,7 @@ Returns [`EpicListConnection`](#epiclistconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18498,7 +18498,7 @@ Returns [`AlertManagementAlertConnection`](#alertmanagementalertconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18519,7 +18519,7 @@ Returns [`TodoConnection!`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18535,7 +18535,7 @@ Returns [`IssuableResourceLinkConnection`](#issuableresourcelinkconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18551,7 +18551,7 @@ Returns [`NoteConnection!`](#noteconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18598,7 +18598,7 @@ Returns [`EpicConnection`](#epicconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18828,7 +18828,7 @@ Returns [`CiSecureFileRegistryConnection`](#cisecurefileregistryconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18847,7 +18847,7 @@ Returns [`ContainerRepositoryRegistryConnection`](#containerrepositoryregistryco This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18870,7 +18870,7 @@ Returns [`DependencyProxyBlobRegistryConnection`](#dependencyproxyblobregistryco This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18889,7 +18889,7 @@ Returns [`DependencyProxyManifestRegistryConnection`](#dependencyproxymanifestre This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18912,7 +18912,7 @@ Returns [`DesignManagementRepositoryRegistryConnection`](#designmanagementreposi This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18931,7 +18931,7 @@ Returns [`GroupWikiRepositoryRegistryConnection`](#groupwikirepositoryregistryco This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18950,7 +18950,7 @@ Returns [`JobArtifactRegistryConnection`](#jobartifactregistryconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18969,7 +18969,7 @@ Returns [`LfsObjectRegistryConnection`](#lfsobjectregistryconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -18988,7 +18988,7 @@ Returns [`MergeRequestDiffRegistryConnection`](#mergerequestdiffregistryconnecti This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19007,7 +19007,7 @@ Returns [`PackageFileRegistryConnection`](#packagefileregistryconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19026,7 +19026,7 @@ Returns [`PagesDeploymentRegistryConnection`](#pagesdeploymentregistryconnection This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19045,7 +19045,7 @@ Returns [`PipelineArtifactRegistryConnection`](#pipelineartifactregistryconnecti This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19064,7 +19064,7 @@ Returns [`ProjectRepositoryRegistryConnection`](#projectrepositoryregistryconnec This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19083,7 +19083,7 @@ Returns [`ProjectWikiRepositoryRegistryConnection`](#projectwikirepositoryregist This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19102,7 +19102,7 @@ Returns [`SnippetRepositoryRegistryConnection`](#snippetrepositoryregistryconnec This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19121,7 +19121,7 @@ Returns [`TerraformStateVersionRegistryConnection`](#terraformstateversionregist This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19140,7 +19140,7 @@ Returns [`UploadRegistryConnection`](#uploadregistryconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19277,7 +19277,7 @@ Returns [`AchievementConnection`](#achievementconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19297,7 +19297,7 @@ Returns [`AddOnUserConnection`](#addonuserconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19362,7 +19362,7 @@ Returns [`BoardConnection`](#boardconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19378,7 +19378,7 @@ Returns [`CiGroupVariableConnection`](#cigroupvariableconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19394,7 +19394,7 @@ Returns [`ClusterAgentConnection`](#clusteragentconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19412,7 +19412,7 @@ Returns [`CodeCoverageActivityConnection`](#codecoverageactivityconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19428,7 +19428,7 @@ Returns [`ComplianceFrameworkConnection`](#complianceframeworkconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19457,7 +19457,7 @@ Returns [`CustomerRelationsContactConnection`](#customerrelationscontactconnecti This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19476,7 +19476,7 @@ Returns [`ContainerRepositoryConnection`](#containerrepositoryconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19493,7 +19493,7 @@ Returns [`ContributionAnalyticsContributionConnection`](#contributionanalyticsco This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19514,7 +19514,7 @@ Returns [`CustomEmojiConnection`](#customemojiconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19534,7 +19534,7 @@ Returns [`CustomizableDashboardVisualizationConnection`](#customizabledashboardv This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19554,7 +19554,7 @@ Returns [`CustomizableDashboardConnection`](#customizabledashboardconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19584,7 +19584,7 @@ Returns [`GroupConnection`](#groupconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19602,7 +19602,7 @@ Returns [`DoraPerformanceScoreCountConnection`](#doraperformancescorecountconnec This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19618,7 +19618,7 @@ Returns [`CiGroupEnvironmentScopeConnection`](#cigroupenvironmentscopeconnection This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19680,7 +19680,7 @@ Returns [`EpicConnection`](#epicconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19733,7 +19733,7 @@ Returns [`GroupMemberConnection`](#groupmemberconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19752,7 +19752,7 @@ Returns [`IssueConnection`](#issueconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19807,7 +19807,7 @@ Returns [`IterationCadenceConnection`](#iterationcadenceconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19828,7 +19828,7 @@ Returns [`IterationConnection`](#iterationconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19865,7 +19865,7 @@ Returns [`LabelConnection`](#labelconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19888,7 +19888,7 @@ Returns [`MemberRoleConnection`](#memberroleconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19904,7 +19904,7 @@ Returns [`ComplianceViolationConnection`](#complianceviolationconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19921,7 +19921,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19956,7 +19956,7 @@ Returns [`MilestoneConnection`](#milestoneconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -19993,7 +19993,7 @@ Returns [`CustomerRelationsOrganizationConnection`](#customerrelationsorganizati This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20012,7 +20012,7 @@ Returns [`PackageConnection`](#packageconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20033,7 +20033,7 @@ Returns [`ComplianceStandardsAdherenceConnection`](#compliancestandardsadherence This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20049,7 +20049,7 @@ Returns [`ProjectConnection!`](#projectconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20075,7 +20075,7 @@ Returns [`ReleaseConnection`](#releaseconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20091,7 +20091,7 @@ Returns [`CiRunnerConnection`](#cirunnerconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20117,7 +20117,7 @@ Returns [`ScanExecutionPolicyConnection`](#scanexecutionpolicyconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20134,7 +20134,7 @@ Returns [`ScanResultPolicyConnection`](#scanresultpolicyconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20150,7 +20150,7 @@ Returns [`TimelogConnection!`](#timelogconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20190,7 +20190,7 @@ Returns [`VulnerabilityConnection`](#vulnerabilityconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20220,7 +20220,7 @@ Returns [`VulnerabilitiesCountByDayConnection`](#vulnerabilitiescountbydayconnec This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20315,7 +20315,7 @@ Returns [`WorkItemTypeConnection`](#workitemtypeconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20335,7 +20335,7 @@ Returns [`WorkItemConnection`](#workitemconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20633,7 +20633,7 @@ Returns [`IncidentManagementOncallShiftConnection`](#incidentmanagementoncallshi This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20762,7 +20762,7 @@ Returns [`ClusterAgentConnection`](#clusteragentconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20780,7 +20780,7 @@ Returns [`ProjectConnection!`](#projectconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20923,7 +20923,7 @@ Returns [`AlertManagementAlertConnection`](#alertmanagementalertconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20944,7 +20944,7 @@ Returns [`TodoConnection!`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20960,7 +20960,7 @@ Returns [`IssuableResourceLinkConnection`](#issuableresourcelinkconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -20976,7 +20976,7 @@ Returns [`NoteConnection!`](#noteconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -21127,7 +21127,7 @@ Returns [`JiraProjectConnection`](#jiraprojectconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -21485,7 +21485,7 @@ Returns [`TodoConnection!`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -21529,7 +21529,7 @@ Returns [`NoteConnection!`](#noteconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -21545,7 +21545,7 @@ Returns [`PipelineConnection`](#pipelineconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -21642,7 +21642,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -21678,7 +21678,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -21714,7 +21714,7 @@ Returns [`GroupConnection`](#groupconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -21731,7 +21731,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -21779,7 +21779,7 @@ Returns [`SnippetConnection`](#snippetconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -21797,7 +21797,7 @@ Returns [`ProjectConnection`](#projectconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -21813,7 +21813,7 @@ Returns [`TimelogConnection`](#timelogconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -21836,7 +21836,7 @@ Returns [`TodoConnection`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -21861,7 +21861,7 @@ Returns [`WorkspaceConnection`](#workspaceconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -21930,7 +21930,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -21966,7 +21966,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22002,7 +22002,7 @@ Returns [`GroupConnection`](#groupconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22019,7 +22019,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22067,7 +22067,7 @@ Returns [`SnippetConnection`](#snippetconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22085,7 +22085,7 @@ Returns [`ProjectConnection`](#projectconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22101,7 +22101,7 @@ Returns [`TimelogConnection`](#timelogconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22124,7 +22124,7 @@ Returns [`TodoConnection`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22149,7 +22149,7 @@ Returns [`WorkspaceConnection`](#workspaceconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22281,7 +22281,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22317,7 +22317,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22353,7 +22353,7 @@ Returns [`GroupConnection`](#groupconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22370,7 +22370,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22418,7 +22418,7 @@ Returns [`SnippetConnection`](#snippetconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22436,7 +22436,7 @@ Returns [`ProjectConnection`](#projectconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22452,7 +22452,7 @@ Returns [`TimelogConnection`](#timelogconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22475,7 +22475,7 @@ Returns [`TodoConnection`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22500,7 +22500,7 @@ Returns [`WorkspaceConnection`](#workspaceconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22605,7 +22605,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22641,7 +22641,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22677,7 +22677,7 @@ Returns [`GroupConnection`](#groupconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22694,7 +22694,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22742,7 +22742,7 @@ Returns [`SnippetConnection`](#snippetconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22760,7 +22760,7 @@ Returns [`ProjectConnection`](#projectconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22776,7 +22776,7 @@ Returns [`TimelogConnection`](#timelogconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22799,7 +22799,7 @@ Returns [`TodoConnection`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -22824,7 +22824,7 @@ Returns [`WorkspaceConnection`](#workspaceconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -23020,7 +23020,7 @@ Returns [`AchievementConnection`](#achievementconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -23040,7 +23040,7 @@ Returns [`AddOnUserConnection`](#addonuserconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -23069,7 +23069,7 @@ Returns [`ComplianceFrameworkConnection`](#complianceframeworkconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -23085,7 +23085,7 @@ Returns [`ProjectConnection!`](#projectconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -23111,7 +23111,7 @@ Returns [`ScanExecutionPolicyConnection`](#scanexecutionpolicyconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -23128,7 +23128,7 @@ Returns [`ScanResultPolicyConnection`](#scanresultpolicyconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -23318,7 +23318,7 @@ Returns [`GroupConnection!`](#groupconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -23831,7 +23831,7 @@ Returns [`CiJobConnection`](#cijobconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -23863,7 +23863,7 @@ Returns [`PipelineSecurityReportFindingConnection`](#pipelinesecurityreportfindi This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24249,7 +24249,7 @@ Returns [`AlertManagementAlertConnection`](#alertmanagementalertconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24270,7 +24270,7 @@ Returns [`AlertManagementHttpIntegrationConnection`](#alertmanagementhttpintegra This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24286,7 +24286,7 @@ Returns [`AlertManagementIntegrationConnection`](#alertmanagementintegrationconn This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24338,7 +24338,7 @@ Returns [`BoardConnection`](#boardconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24382,7 +24382,7 @@ Returns [`CiProjectVariableConnection`](#ciprojectvariableconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24413,7 +24413,7 @@ Returns [`ClusterAgentConnection`](#clusteragentconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24447,7 +24447,7 @@ Returns [`ContainerRepositoryConnection`](#containerrepositoryconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24468,7 +24468,7 @@ Returns [`CustomizableDashboardVisualizationConnection`](#customizabledashboardv This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24488,7 +24488,7 @@ Returns [`CustomizableDashboardConnection`](#customizabledashboardconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24518,7 +24518,7 @@ Returns [`DastProfileConnection`](#dastprofileconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24546,7 +24546,7 @@ Returns [`DastSiteValidationConnection`](#dastsitevalidationconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24580,7 +24580,7 @@ Returns [`DependencyConnection`](#dependencyconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24625,7 +24625,7 @@ Returns [`EnvironmentConnection`](#environmentconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24660,7 +24660,7 @@ Returns [`NamespaceConnection`](#namespaceconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24692,7 +24692,7 @@ Returns [`EscalationPolicyTypeConnection`](#escalationpolicytypeconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24721,7 +24721,7 @@ Returns [`IncidentManagementOncallScheduleConnection`](#incidentmanagementoncall This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24750,7 +24750,7 @@ Returns [`TimelineEventTypeConnection`](#timelineeventtypeconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24766,7 +24766,7 @@ Returns [`InheritedCiVariableConnection`](#inheritedcivariableconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24881,7 +24881,7 @@ Returns [`IssueConnection`](#issueconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24936,7 +24936,7 @@ Returns [`IterationCadenceConnection`](#iterationcadenceconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24957,7 +24957,7 @@ Returns [`IterationConnection`](#iterationconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -24994,7 +24994,7 @@ Returns [`CiJobConnection`](#cijobconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25023,7 +25023,7 @@ Returns [`LabelConnection`](#labelconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25044,7 +25044,7 @@ Returns [`MemberRoleConnection`](#memberroleconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25072,7 +25072,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25106,7 +25106,7 @@ Returns [`MilestoneConnection`](#milestoneconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25129,7 +25129,7 @@ Returns [`NestedEnvironmentConnection`](#nestedenvironmentconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25152,7 +25152,7 @@ Returns [`NetworkPolicyConnection`](#networkpolicyconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25168,7 +25168,7 @@ Returns [`PackageConnection`](#packageconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25216,7 +25216,7 @@ Returns [`PipelineScheduleConnection`](#pipelinescheduleconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25233,7 +25233,7 @@ Returns [`PipelineConnection`](#pipelineconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25272,7 +25272,7 @@ Returns [`MemberInterfaceConnection`](#memberinterfaceconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25302,7 +25302,7 @@ Returns [`ReleaseConnection`](#releaseconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25338,7 +25338,7 @@ Returns [`RequirementConnection`](#requirementconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25362,7 +25362,7 @@ Returns [`CiRunnerConnection`](#cirunnerconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25387,7 +25387,7 @@ Returns [`ScanExecutionPolicyConnection`](#scanexecutionpolicyconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25404,7 +25404,7 @@ Returns [`ScanResultPolicyConnection`](#scanresultpolicyconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25461,7 +25461,7 @@ Returns [`ServiceConnection`](#serviceconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25478,7 +25478,7 @@ Returns [`SnippetConnection`](#snippetconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25507,7 +25507,7 @@ Returns [`TimelogConnection`](#timelogconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25534,7 +25534,7 @@ Returns [`ProjectConnection`](#projectconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25550,7 +25550,7 @@ Returns [`VulnerabilityConnection`](#vulnerabilityconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25580,7 +25580,7 @@ Returns [`VulnerabilitiesCountByDayConnection`](#vulnerabilitiescountbydayconnec This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25646,7 +25646,7 @@ Returns [`WorkItemTypeConnection`](#workitemtypeconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -25666,7 +25666,7 @@ Returns [`WorkItemConnection`](#workitemconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -26290,7 +26290,7 @@ Returns [`RepositoryBlobConnection`](#repositoryblobconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -26334,7 +26334,7 @@ Returns [`TreeConnection`](#treeconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -26501,7 +26501,7 @@ Returns [`TestReportConnection`](#testreportconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -26896,7 +26896,7 @@ Returns [`SentryErrorConnection`](#sentryerrorconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -26999,7 +26999,7 @@ Returns [`SnippetBlobConnection`](#snippetblobconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -27015,7 +27015,7 @@ Returns [`NoteConnection!`](#noteconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -27660,7 +27660,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -27696,7 +27696,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -27732,7 +27732,7 @@ Returns [`GroupConnection`](#groupconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -27749,7 +27749,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -27797,7 +27797,7 @@ Returns [`SnippetConnection`](#snippetconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -27815,7 +27815,7 @@ Returns [`ProjectConnection`](#projectconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -27831,7 +27831,7 @@ Returns [`TimelogConnection`](#timelogconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -27854,7 +27854,7 @@ Returns [`TodoConnection`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -27879,7 +27879,7 @@ Returns [`WorkspaceConnection`](#workspaceconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -28076,7 +28076,7 @@ Returns [`VulnerabilityIssueLinkConnection!`](#vulnerabilityissuelinkconnection) This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -28092,7 +28092,7 @@ Returns [`NoteConnection!`](#noteconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -28805,7 +28805,7 @@ Returns [`TodoConnection!`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -28947,7 +28947,7 @@ Returns [`LinkedWorkItemTypeConnection`](#linkedworkitemtypeconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -28986,7 +28986,7 @@ Returns [`DiscussionConnection`](#discussionconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ###### Arguments @@ -33029,7 +33029,7 @@ Returns [`TodoConnection!`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ####### Arguments @@ -33191,7 +33191,7 @@ Returns [`NoteConnection!`](#noteconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ####### Arguments @@ -33372,7 +33372,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ####### Arguments @@ -33408,7 +33408,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ####### Arguments @@ -33444,7 +33444,7 @@ Returns [`GroupConnection`](#groupconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ####### Arguments @@ -33461,7 +33461,7 @@ Returns [`MergeRequestConnection`](#mergerequestconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ####### Arguments @@ -33509,7 +33509,7 @@ Returns [`SnippetConnection`](#snippetconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ####### Arguments @@ -33527,7 +33527,7 @@ Returns [`ProjectConnection`](#projectconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ####### Arguments @@ -33543,7 +33543,7 @@ Returns [`TimelogConnection`](#timelogconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ####### Arguments @@ -33566,7 +33566,7 @@ Returns [`TodoConnection`](#todoconnection). This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): -`before: String`, `after: String`, `first: Int`, `last: Int`. +`before: String`, `after: String`, `first: Int`, and `last: Int`. ####### Arguments diff --git a/doc/ci/resource_groups/index.md b/doc/ci/resource_groups/index.md index 9c0f7f229cd..aca272dddee 100644 --- a/doc/ci/resource_groups/index.md +++ b/doc/ci/resource_groups/index.md @@ -277,7 +277,7 @@ To get job information from the GraphQL API: 1. Go to the pipeline details page. 1. Select the **Jobs** tab and find the ID of the stuck job. -1. Go to [GraphiQL explorer](../../api/graphql/index.md#graphiql). +1. Go to the [interactive GraphQL explorer](../../api/graphql/index.md#interactive-graphql-explorer). 1. Run the following query: ```graphql diff --git a/doc/ci/testing/code_quality.md b/doc/ci/testing/code_quality.md index 795431a61a2..4155666ca24 100644 --- a/doc/ci/testing/code_quality.md +++ b/doc/ci/testing/code_quality.md @@ -720,7 +720,7 @@ To gain insight into the errors, you can execute a GraphQL query using the follo 1. Go to the pipeline details page. 1. Append `.json` to the URL. 1. Copy the `iid` of the pipeline. -1. Go to [GraphiQL explorer](../../api/graphql/index.md#graphiql). +1. Go to the [interactive GraphQL explorer](../../api/graphql/index.md#interactive-graphql-explorer). 1. Run the following query: ```graphql diff --git a/doc/development/api_graphql_styleguide.md b/doc/development/api_graphql_styleguide.md index 4cee0ac57df..f6d39ff954b 100644 --- a/doc/development/api_graphql_styleguide.md +++ b/doc/development/api_graphql_styleguide.md @@ -8,6 +8,20 @@ info: Any user with at least the Maintainer role can merge updates to this conte This document outlines the style guide for the GitLab [GraphQL API](../api/graphql/index.md). +## Vision + +We want the GraphQL API to be the **primary** means of interacting +programmatically with GitLab. To achieve this, it needs full coverage - anything +possible in the REST API should also be possible in the GraphQL API. + +To help us meet this vision, the frontend should use GraphQL in preference to +the REST API for new features. +The GraphQL API is [versionless](https://graphql.org/learn/best-practices/#versioning). + +There are no plans to deprecate the REST API. To reduce the technical burden of +supporting two APIs in parallel, they should share implementations as much as +possible. + ## How GitLab implements GraphQL @@ -78,7 +92,7 @@ a connection. ### Max complexity -Complexity is explained [on our client-facing API page](../api/graphql/index.md#max-query-complexity). +Complexity is explained [on our client-facing API page](../api/graphql/index.md#maximum-query-complexity). Fields default to adding `1` to a query's complexity score, but developers can [specify a custom complexity](#field-complexity) when defining a field. @@ -477,7 +491,7 @@ field :tags, ### Field complexity The GitLab GraphQL API uses a _complexity_ score to limit performing overly complex queries. -Complexity is described in [our client documentation](../api/graphql/index.md#max-query-complexity) on the topic. +Complexity is described in [our client documentation](../api/graphql/index.md#maximum-query-complexity) on the topic. Complexity limits are defined in [`app/graphql/gitlab_schema.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/graphql/gitlab_schema.rb). @@ -864,8 +878,8 @@ mount_mutation Mutations::Ci::JobArtifact::BulkDestroy, alpha: { milestone: '15. Alpha GraphQL items is a custom GitLab feature that leverages GraphQL deprecations. An Alpha item appears as deprecated in the GraphQL schema. Like all deprecated schema items, you can test an -Alpha field in [GraphiQL](../api/graphql/index.md#graphiql). However, be aware that the GraphiQL -autocomplete editor doesn't suggest deprecated fields. +Alpha field in the [interactive GraphQL explorer](../api/graphql/index.md#interactive-graphql-explorer) (GraphiQL). +However, be aware that the GraphiQL autocomplete editor doesn't suggest deprecated fields. The item shows as Alpha in our generated GraphQL documentation and its GraphQL schema description. diff --git a/doc/development/fe_guide/index.md b/doc/development/fe_guide/index.md index fc42e02dfeb..3c7c000dbe6 100644 --- a/doc/development/fe_guide/index.md +++ b/doc/development/fe_guide/index.md @@ -24,7 +24,7 @@ When it comes to CSS, we use a utils-based CSS approach. GitLab has its own CSS We also use [SCSS](https://sass-lang.com) and plain JavaScript with modern ECMAScript standards supported through [Babel](https://babeljs.io/) and ES module support through [webpack](https://webpack.js.org/). -When making API calls, we use [GraphQL](graphql.md) as [the first choice](../../api/graphql/index.md#vision). There are still instances where GitLab REST API is used such as when creating new simple HAML pages or in legacy part of the codebase, but we should always default to GraphQL when possible. +When making API calls, we use [GraphQL](graphql.md) as [the first choice](../api_graphql_styleguide.md#vision). There are still instances where GitLab REST API is used such as when creating new simple HAML pages or in legacy part of the codebase, but we should always default to GraphQL when possible. We use [Apollo](https://www.apollographql.com/) as our global state manager and [GraphQL client](graphql.md). [VueX](vuex.md) is still in use across the codebase, but it is no longer the recommended global state manager. diff --git a/doc/development/fe_guide/migrating_from_vuex.md b/doc/development/fe_guide/migrating_from_vuex.md index 347902feafa..45a1ea0b7ee 100644 --- a/doc/development/fe_guide/migrating_from_vuex.md +++ b/doc/development/fe_guide/migrating_from_vuex.md @@ -8,7 +8,7 @@ info: Any user with at least the Maintainer role can merge updates to this conte ## Why? -We have defined [GraphQL as our primary API](../../api/graphql/index.md#vision) for all user-facing features, +We have defined the [GraphQL API](../../api/graphql/index.md) as [the primary API](../api_graphql_styleguide.md#vision) for all user-facing features, so we can safely assume that whenever GraphQL is present, so will the Apollo Client. We [do not want to use Vuex with Apollo](graphql.md#using-with-vuex), so the VueX stores count will naturally decline over time as we move from the REST API to GraphQL. diff --git a/doc/security/user_file_uploads.md b/doc/security/user_file_uploads.md index fe8fb11fe65..e73bdf4ced2 100644 --- a/doc/security/user_file_uploads.md +++ b/doc/security/user_file_uploads.md @@ -60,7 +60,7 @@ You cannot select this option for public projects. You should delete an uploaded file when that file contains sensitive or confidential information. When you have deleted that file, users cannot access the file and the direct URL returns a 404 error. -Project Owners and Maintainers can use the [interactive GraphiQL explorer](../api/graphql/index.md#graphiql) to access a [GraphQL endpoint](../api/graphql/reference/index.md#mutationuploaddelete) and delete an uploaded file. +Project Owners and Maintainers can use the [interactive GraphQL explorer](../api/graphql/index.md#interactive-graphql-explorer) to access a [GraphQL endpoint](../api/graphql/reference/index.md#mutationuploaddelete) and delete an uploaded file. For example: diff --git a/lib/gitlab/git/diff.rb b/lib/gitlab/git/diff.rb index 743bac62764..42f8488fec5 100644 --- a/lib/gitlab/git/diff.rb +++ b/lib/gitlab/git/diff.rb @@ -10,7 +10,7 @@ module Gitlab attr_accessor :old_path, :new_path, :a_mode, :b_mode, :diff # Stats properties - attr_accessor :new_file, :renamed_file, :deleted_file + attr_accessor :new_file, :renamed_file, :deleted_file, :generated alias_method :new_file?, :new_file alias_method :deleted_file?, :deleted_file @@ -20,6 +20,7 @@ module Gitlab attr_writer :too_large alias_method :expanded?, :expanded + alias_method :generated?, :generated # The default maximum content size to display a diff patch. # @@ -31,7 +32,18 @@ module Gitlab # persisting limits over that. MAX_PATCH_BYTES_UPPER_BOUND = 500.kilobytes - SERIALIZE_KEYS = %i[diff new_path old_path a_mode b_mode new_file renamed_file deleted_file too_large].freeze + SERIALIZE_KEYS = %i[ + diff + new_path + old_path + a_mode + b_mode + new_file + renamed_file + deleted_file + too_large + generated + ].freeze BINARY_NOTICE_PATTERN = %r{Binary files (.*) and (.*) differ} @@ -79,9 +91,12 @@ module Gitlab # If false, patch raw data will not be included in the diff after # `max_files`, `max_lines` or any of the limits in `limits` are # exceeded + # :generated_files :: + # If the list of generated files is given, those files will be marked + # as generated. def filter_diff_options(options, default_options = {}) allowed_options = [:ignore_whitespace_change, :max_files, :max_lines, - :limits, :expanded, :collect_all_paths] + :limits, :expanded, :collect_all_paths, :generated_files] if default_options actual_defaults = default_options.dup @@ -144,8 +159,9 @@ module Gitlab text.start_with?(BINARY_NOTICE_PATTERN) end end - def initialize(raw_diff, expanded: true, replace_invalid_utf8_chars: true) + def initialize(raw_diff, expanded: true, replace_invalid_utf8_chars: true, generated: nil) @expanded = expanded + @generated = generated case raw_diff when Hash diff --git a/lib/gitlab/git/diff_collection.rb b/lib/gitlab/git/diff_collection.rb index c021268a62a..ae2b9d5339c 100644 --- a/lib/gitlab/git/diff_collection.rb +++ b/lib/gitlab/git/diff_collection.rb @@ -35,6 +35,7 @@ module Gitlab def initialize(iterator, options = {}) @iterator = iterator + @generated_files = options.fetch(:generated_files, nil) @limits = self.class.limits(options) @enforce_limits = !!options.fetch(:limits, true) @expanded = !!options.fetch(:expanded, true) @@ -164,7 +165,10 @@ module Gitlab i = @array.length @iterator.each do |raw| - diff = Gitlab::Git::Diff.new(raw, expanded: expand_diff?) + options = { expanded: expand_diff? } + options[:generated] = @generated_files.include?(raw.from_path) if @generated_files + + diff = Gitlab::Git::Diff.new(raw, **options) if raw.overflow_marker @overflow = true diff --git a/qa/qa/page/project/monitor/alerts/show.rb b/qa/qa/page/project/monitor/alerts/show.rb index 1f3c52d8988..b1866c6d366 100644 --- a/qa/qa/page/project/monitor/alerts/show.rb +++ b/qa/qa/page/project/monitor/alerts/show.rb @@ -7,7 +7,7 @@ module QA module Alerts class Show < Page::Base view 'app/assets/javascripts/vue_shared/alert_details/components/system_notes/system_note.vue' do - element :alert_system_note_container + element 'alert-system-note-container' end def go_to_activity_feed_tab @@ -15,7 +15,7 @@ module QA end def has_system_note?(text) - has_element?(:alert_system_note_container, text: text) + has_element?('alert-system-note-container', text: text) end end end diff --git a/spec/lib/gitlab/database/sharding_key_spec.rb b/spec/lib/gitlab/database/sharding_key_spec.rb index ca01c7b8d36..c2e6f90f492 100644 --- a/spec/lib/gitlab/database/sharding_key_spec.rb +++ b/spec/lib/gitlab/database/sharding_key_spec.rb @@ -12,6 +12,15 @@ RSpec.describe 'new tables missing sharding_key', feature_category: :cell do ] end + # Specific tables can be temporarily exempt from this requirement. You must add an issue link in a comment next to + # the table name to remove this once a decision has been made. + let(:allowed_to_be_missing_not_null) do + [ + 'labels.project_id', # https://gitlab.com/gitlab-org/gitlab/-/issues/434356 + 'labels.group_id' # https://gitlab.com/gitlab-org/gitlab/-/issues/434356 + ] + end + let(:starting_from_milestone) { 16.6 } let(:allowed_sharding_key_referenced_tables) { %w[projects namespaces organizations] } @@ -33,6 +42,26 @@ RSpec.describe 'new tables missing sharding_key', feature_category: :cell do end end + it 'ensures all sharding_key columns are not nullable or have a not null check constraint', + :aggregate_failures do + all_tables_to_sharding_key.each do |table_name, sharding_key| + sharding_key.each do |column_name, _| + not_nullable = not_nullable?(table_name, column_name) + has_null_check_constraint = has_null_check_constraint?(table_name, column_name) + + if allowed_to_be_missing_not_null.include?("#{table_name}.#{column_name}") + expect(not_nullable || has_null_check_constraint).to eq(false), + "You must remove `#{table_name}.#{column_name}` from allowed_to_be_missing_not_null" \ + "since it now has a valid constraint." + else + expect(not_nullable || has_null_check_constraint).to eq(true), + "Missing a not null constraint for `#{table_name}.#{column_name}` . " \ + "All sharding keys must be not nullable or have a NOT NULL check constraint" + end + end + end + end + it 'only allows `allowed_to_be_missing_sharding_key` to include tables that are missing a sharding_key', :aggregate_failures do allowed_to_be_missing_sharding_key.each do |exempted_table| @@ -73,6 +102,42 @@ RSpec.describe 'new tables missing sharding_key', feature_category: :cell do end end + def not_nullable?(table_name, column_name) + sql = <<~SQL + SELECT 1 + FROM information_schema.columns + WHERE table_schema = 'public' AND + table_name = '#{table_name}' AND + column_name = '#{column_name}' AND + is_nullable = 'NO' + SQL + + result = ApplicationRecord.connection.execute(sql) + + result.count > 0 + end + + def has_null_check_constraint?(table_name, column_name) + # This is a heuristic query to look for all check constraints on the table and see if any of them contain a clause + # column IS NOT NULL. This is to match tables that will have multiple sharding keys where either of them can be not + # null. Such cases may look like: + # (project_id IS NOT NULL) OR (group_id IS NOT NULL) + # It's possible that this will sometimes incorrectly find a check constraint that isn't exactly as strict as we want + # but it should be pretty unlikely. + sql = <<~SQL + SELECT 1 + FROM pg_constraint + INNER JOIN pg_class ON pg_constraint.conrelid = pg_class.oid + WHERE pg_class.relname = '#{table_name}' + AND contype = 'c' + AND pg_get_constraintdef(pg_constraint.oid) ILIKE '%#{column_name} IS NOT NULL%' + SQL + + result = ApplicationRecord.connection.execute(sql) + + result.count > 0 + end + def column_exists?(table_name, column_name) sql = <<~SQL SELECT 1 diff --git a/spec/lib/gitlab/git/diff_collection_spec.rb b/spec/lib/gitlab/git/diff_collection_spec.rb index 72ddd0759ec..4ab4d047522 100644 --- a/spec/lib/gitlab/git/diff_collection_spec.rb +++ b/spec/lib/gitlab/git/diff_collection_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Gitlab::Git::DiffCollection do +RSpec.describe Gitlab::Git::DiffCollection, feature_category: :source_code_management do before do stub_const('MutatingConstantIterator', Class.new) @@ -531,6 +531,73 @@ RSpec.describe Gitlab::Git::DiffCollection do end describe '#each' do + context 'with Gitlab::GitalyClient::DiffStitcher' do + let(:collection) do + described_class.new( + iterator, + max_files: max_files, + max_lines: max_lines, + limits: limits, + expanded: expanded, + generated_files: generated_files + ) + end + + let(:iterator) { Gitlab::GitalyClient::DiffStitcher.new(diff_params) } + let(:diff_params) { [diff_1, diff_2] } + let(:diff_1) do + OpenStruct.new( + to_path: ".gitmodules", + from_path: ".gitmodules", + old_mode: 0100644, + new_mode: 0100644, + from_id: '357406f3075a57708d0163752905cc1576fceacc', + to_id: '8e5177d718c561d36efde08bad36b43687ee6bf0', + patch: 'a' * 10, + raw_patch_data: 'a' * 10, + end_of_patch: true + ) + end + + let(:diff_2) do + OpenStruct.new( + to_path: ".gitignore", + from_path: ".gitignore", + old_mode: 0100644, + new_mode: 0100644, + from_id: '357406f3075a57708d0163752905cc1576fceacc', + to_id: '8e5177d718c561d36efde08bad36b43687ee6bf0', + patch: 'a' * 20, + raw_patch_data: 'a' * 20, + end_of_patch: true + ) + end + + context 'with generated_files' do + let(:generated_files) { [diff_1.from_path] } + + it 'sets generated files as generated' do + collection.each do |d| + if d.old_path == diff_1.from_path + expect(d.generated).to be true + else + expect(d.generated).to be false + end + end + end + end + + context 'without generated_files' do + let(:generated_files) { nil } + + it 'set generated as nil' do + collection.each do |d| + expect(d.generated).to be_nil + end + end + end + end + context 'when diff are too large' do let(:collection) do described_class.new([{ diff: 'a' * 204800 }]) diff --git a/spec/lib/gitlab/git/diff_spec.rb b/spec/lib/gitlab/git/diff_spec.rb index 6b3630d7a1f..2fca81299e0 100644 --- a/spec/lib/gitlab/git/diff_spec.rb +++ b/spec/lib/gitlab/git/diff_spec.rb @@ -50,7 +50,7 @@ EOT let(:diff) { described_class.new(@raw_diff_hash) } it 'initializes the diff' do - expect(diff.to_hash).to eq(@raw_diff_hash) + expect(diff.to_hash).to eq(@raw_diff_hash.merge(generated: nil)) end it 'does not prune the diff' do @@ -87,7 +87,7 @@ EOT let(:raw_patch) { @raw_diff_hash[:diff] } it 'initializes the diff' do - expect(diff.to_hash).to eq(@raw_diff_hash) + expect(diff.to_hash).to eq(@raw_diff_hash.merge(generated: nil)) end it 'does not prune the diff' do @@ -173,7 +173,7 @@ EOT let(:diff) { described_class.new(commit_delta) } it 'initializes the diff' do - expect(diff.to_hash).to eq(@raw_diff_hash.merge(diff: '')) + expect(diff.to_hash).to eq(@raw_diff_hash.merge(diff: '', generated: nil)) end it 'is not too large' do diff --git a/spec/models/merge_request_diff_spec.rb b/spec/models/merge_request_diff_spec.rb index 89e9ea0003a..2e68cd9e74a 100644 --- a/spec/models/merge_request_diff_spec.rb +++ b/spec/models/merge_request_diff_spec.rb @@ -390,9 +390,10 @@ RSpec.describe MergeRequestDiff, feature_category: :code_review_workflow do shared_examples_for 'merge request diffs' do let(:merge_request) { create(:merge_request) } - let!(:diff) { merge_request.merge_request_diff.reload } context 'when it was not cleaned by the system' do + let!(:diff) { merge_request.merge_request_diff.reload } + it 'returns persisted diffs' do expect(diff).to receive(:load_diffs).and_call_original @@ -401,6 +402,8 @@ RSpec.describe MergeRequestDiff, feature_category: :code_review_workflow do end context 'when diff was cleaned by the system' do + let!(:diff) { merge_request.merge_request_diff.reload } + before do diff.clean! end @@ -906,6 +909,57 @@ RSpec.describe MergeRequestDiff, feature_category: :code_review_workflow do expect(diff_file.diff).to include(content) end end + + context 'handling generated files' do + let(:project) { create(:project, :repository) } + let(:target_branch) { project.default_branch } + let(:source_branch) { 'test-generated-diff-file' } + let(:generated_file_name) { 'generated.txt' } + let(:regular_file_name) { 'regular.rb' } + let(:merge_request) do + create( + :merge_request, + target_project: project, + source_project: project, + source_branch: source_branch, + target_branch: target_branch + ) + end + + let(:diff_files) do + merge_request.merge_request_diff.merge_request_diff_files + end + + before do + project.repository.update_file( + project.creator, + '.gitattributes', + '*.txt gitlab-generated', + message: 'Update', + branch_name: target_branch) + + create_file_in_repo(project, target_branch, source_branch, generated_file_name, "generated text\n") + create_file_in_repo(project, source_branch, source_branch, regular_file_name, "something else\n") + end + + context 'with collapse_generated_diff_files feature flag' do + it 'sets generated field correctly' do + expect(diff_files.find_by(new_path: generated_file_name)).to be_generated + expect(diff_files.find_by(new_path: regular_file_name)).not_to be_generated + end + end + + context 'without collapse_generated_diff_files feature flag' do + before do + stub_feature_flags(collapse_generated_diff_files: false) + end + + it 'sets generated field correctly' do + expect(diff_files.find_by(new_path: generated_file_name)).not_to be_generated + expect(diff_files.find_by(new_path: regular_file_name)).not_to be_generated + end + end + end end end @@ -986,6 +1040,7 @@ RSpec.describe MergeRequestDiff, feature_category: :code_review_workflow do include_examples 'merge request diffs' it 'stores up-to-date diffs in the database' do + diff = merge_request.merge_request_diff.reload expect(diff).not_to be_stored_externally end @@ -1002,7 +1057,8 @@ RSpec.describe MergeRequestDiff, feature_category: :code_review_workflow do end it 'stores diffs for old MR versions in external storage' do - old_diff = diff + old_diff = merge_request.merge_request_diff.reload + merge_request.create_merge_request_diff old_diff.migrate_files_to_external_storage! diff --git a/spec/support/rspec_order_todo.yml b/spec/support/rspec_order_todo.yml index 569dac7ff5b..ce602782037 100644 --- a/spec/support/rspec_order_todo.yml +++ b/spec/support/rspec_order_todo.yml @@ -1338,7 +1338,6 @@ - './ee/spec/lib/gitlab/geo/oauth/logout_token_spec.rb' - './ee/spec/lib/gitlab/geo/oauth/session_spec.rb' - './ee/spec/lib/gitlab/geo/registry_batcher_spec.rb' -- './ee/spec/lib/gitlab/geo/replication/blob_downloader_spec.rb' - './ee/spec/lib/gitlab/geo/replication/blob_retriever_spec.rb' - './ee/spec/lib/gitlab/geo/replicator_spec.rb' - './ee/spec/lib/gitlab/geo/signed_data_spec.rb' diff --git a/tooling/graphql/docs/helper.rb b/tooling/graphql/docs/helper.rb index d90082952fa..d027c5b35db 100644 --- a/tooling/graphql/docs/helper.rb +++ b/tooling/graphql/docs/helper.rb @@ -42,7 +42,7 @@ module Tooling CONNECTION_NOTE = <<~MD This field returns a [connection](#connections). It accepts the four standard [pagination arguments](#connection-pagination-arguments): - `before: String`, `after: String`, `first: Int`, `last: Int`. + `before: String`, `after: String`, `first: Int`, and `last: Int`. MD # Helper with functions to be used by HAML templates diff --git a/tooling/graphql/docs/templates/default.md.haml b/tooling/graphql/docs/templates/default.md.haml index 57c3ca7a476..1502afde181 100644 --- a/tooling/graphql/docs/templates/default.md.haml +++ b/tooling/graphql/docs/templates/default.md.haml @@ -7,7 +7,7 @@ This documentation is self-generated based on GitLab current GraphQL schema. - The API can be explored interactively using the [GraphiQL IDE](../index.md#graphiql). + The API can be explored using the [interactive GraphQL explorer](../index.md#interactive-graphql-explorer). Each table below documents a GraphQL type. Types match loosely to models, but not all fields and methods on a model are available via GraphQL. -- cgit v1.2.3