From 02215aa602be369cdd5e3cf384671e3972ce919c Mon Sep 17 00:00:00 2001 From: Marc LeBlanc <7050295+marcleblanc2@users.noreply.github.com> Date: Mon, 7 Sep 2026 17:21:49 -0600 Subject: [PATCH 1/2] Fix heading links to reworded headings (admin docs) --- docs/admin/auth/index.mdx | 4 ++-- docs/admin/auth/saml/microsoft-adfs.mdx | 2 +- docs/admin/code-hosts/bitbucket-server.mdx | 6 +++--- docs/admin/code-hosts/gerrit.mdx | 2 +- docs/admin/code-hosts/github.mdx | 10 +++++----- docs/admin/code-hosts/rate-limits.mdx | 2 +- docs/admin/config/batch-changes.mdx | 2 +- docs/admin/how-to/index.mdx | 2 +- docs/admin/permissions/index.mdx | 2 +- docs/admin/permissions/webhooks.mdx | 2 +- docs/admin/repo/perforce.mdx | 10 +++++----- docs/admin/scim.mdx | 2 +- docs/admin/security-event-logs.mdx | 2 +- docs/admin/webhooks/incoming.mdx | 4 ++-- 14 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/admin/auth/index.mdx b/docs/admin/auth/index.mdx index a60f00e10..e7167b546 100644 --- a/docs/admin/auth/index.mdx +++ b/docs/admin/auth/index.mdx @@ -116,7 +116,7 @@ configuration. Leave the `url` field empty for GitHub.com. -Once you've configured GitHub as a sign-on provider, you may also want to [add GitHub repositories to Sourcegraph](/admin/code-hosts/github#repository-syncing). +Once you've configured GitHub as a sign-on provider, you may also want to [add GitHub repositories to Sourcegraph](/admin/code-hosts/github#selecting-repositories-to-sync). ### How to control user sign-up and sign-in with GitHub auth provider @@ -556,7 +556,7 @@ Usernames in Sourcegraph are mutable, so a malicious user could change a usernam Sourcegraph will automatically link accounts from multiple external auth providers, resulting in a single user account on Sourcegraph. That way a user can login with multiple auth methods and end up being logged in with the same Sourcegraph account. In general, to link accounts, the following condition needs to be met: -At the time of signing in with the new account, any of the email addresses configured on the user account on the auth provider must match any of the **verified** email addresses on the user account on the Sourcegraph side. If there is a match, the accounts are linked, [otherwise a new user account is created if auth provider is configured to support user sign ups](#how-to-control-user-sign-up). +At the time of signing in with the new account, any of the email addresses configured on the user account on the auth provider must match any of the **verified** email addresses on the user account on the Sourcegraph side. If there is a match, the accounts are linked, [otherwise a new user account is created if auth provider is configured to support user sign ups](#how-to-control-user-sign-up-and-sign-in-with-github-auth-provider). ## Username normalization diff --git a/docs/admin/auth/saml/microsoft-adfs.mdx b/docs/admin/auth/saml/microsoft-adfs.mdx index 9797efa52..67abce853 100644 --- a/docs/admin/auth/saml/microsoft-adfs.mdx +++ b/docs/admin/auth/saml/microsoft-adfs.mdx @@ -191,4 +191,4 @@ error, double-check the relying party identifiers of the Relying Party Trust ent ### Other troubleshooting -See [SAML troubleshooting](/admin/auth/saml/#saml-troubleshooting) for more tips. +See [SAML troubleshooting](/admin/auth/saml#troubleshooting) for more tips. diff --git a/docs/admin/code-hosts/bitbucket-server.mdx b/docs/admin/code-hosts/bitbucket-server.mdx index f6d34d502..bb6aa6f91 100644 --- a/docs/admin/code-hosts/bitbucket-server.mdx +++ b/docs/admin/code-hosts/bitbucket-server.mdx @@ -14,7 +14,7 @@ To connect Bitbucket Server / Bitbucket Data Center to Sourcegraph: 1. Configure the connection to Bitbucket Server / Bitbucket Data Center using the action buttons above the text field, and additional fields can be added using Cmd/Ctrl+Space for auto-completion. See the [configuration documentation below](#configuration). 1. Press **Add repositories**. -Also consider installing the [Sourcegraph Bitbucket Server plugin](/integration/bitbucket-server#sourcegraph-bitbucket-server-plugin) which enables native code navigation for every Bitbucket user when browsing code and reviewing pull requests, allows for faster permission syncing between Sourcegraph and Bitbucket Server / Bitbucket Data Center and adds support for webhooks to Bitbucket Server / Bitbucket Data Center. +Also consider installing the [Sourcegraph Bitbucket Server plugin](/integration/bitbucket-server#sourcegraph-bitbucket-plugin) which enables native code navigation for every Bitbucket user when browsing code and reviewing pull requests, allows for faster permission syncing between Sourcegraph and Bitbucket Server / Bitbucket Data Center and adds support for webhooks to Bitbucket Server / Bitbucket Data Center. ## Access token permissions @@ -163,11 +163,11 @@ By installing the [Bitbucket Server plugin](/integration/bitbucket-server), you ### Fast permission syncing -With the [Sourcegraph Bitbucket Server plugin](/integration/bitbucket-server#sourcegraph-bitbucket-server-plugin) you can enable fast permission syncing: +With the [Sourcegraph Bitbucket Server plugin](/integration/bitbucket-server#sourcegraph-bitbucket-plugin) you can enable fast permission syncing: 1. Connect Bitbucket Server / Bitbucket Data Center to Sourcegraph (_see instructions above_). 1. Follow the [instructions to set up repository permissions](#repository-permissions) with Bitbucket Server / Bitbucket Data Center. -1. Install the [Sourcegraph Bitbucket Server plugin](/integration/bitbucket-server#sourcegraph-bitbucket-server-plugin) on your Bitbucket Server / Bitbucket Data Center instance. +1. Install the [Sourcegraph Bitbucket Server plugin](/integration/bitbucket-server#sourcegraph-bitbucket-plugin) on your Bitbucket Server / Bitbucket Data Center instance. 1. In Sourcegraph, go to **Site admin > Manage code hosts** and edit the Bitbucket Server / Bitbucket Data Center configuration. 1. Add the `"plugin.permissions"` property: diff --git a/docs/admin/code-hosts/gerrit.mdx b/docs/admin/code-hosts/gerrit.mdx index ce41110ec..a0c6f7007 100644 --- a/docs/admin/code-hosts/gerrit.mdx +++ b/docs/admin/code-hosts/gerrit.mdx @@ -92,7 +92,7 @@ Users should now be able to authenticate their Sourcegraph accounts using their ## Have users authenticate their Sourcegraph accounts using their Gerrit HTTP credentials -After [configuring Gerrit as a code host connection](#configure-gerrit-as-code-host-connection) and [adding Gerrit as an authentication provider](#add-gerrit-as-an-authnetication-provider), users will be able to authenticate their Sourcegraph accounts using their Gerrit HTTP credentials: +After [configuring Gerrit as a code host connection](#configure-gerrit-as-a-code-host-connection) and [adding Gerrit as an authentication provider](#add-gerrit-as-an-authentication-provider), users will be able to authenticate their Sourcegraph accounts using their Gerrit HTTP credentials: As a user: diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index a63419b0c..010c0a2c9 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -88,7 +88,7 @@ When creating a code host connection for a GitHub App with multiple installation > NOTE: When you create a GitHub App, Sourcegraph automatically sets up an [incoming webhook](/admin/webhooks/incoming) for the app. This webhook subscribes to events for any repository or organization the app has access to, allowing Sourcegraph to keep repository and permission data in sync with GitHub. -> NOTE: If you are using [Batch Changes](/batch-changes/), you can create a GitHub App to perform [commit signing](/admin/config/batch-changes#commit-signing-for-github) (Beta). +> NOTE: If you are using [Batch Changes](/batch-changes/), you can create a GitHub App to perform [commit signing](/admin/config/batch-changes#commit-signing-with-github-apps) (Beta). #### Multiple installations @@ -321,7 +321,7 @@ See [Internal rate limits](/admin/code-hosts/rate-limits#internal-rate-limits). Prerequisite for configuring repository permission syncing: [Add GitHub as an authentication provider](/admin/auth/#github). -> NOTE: If your GitHub organization enforces SAML SSO, consider configuring [`requiredSsoOrgs`](/admin/auth/#requiredssoOrgs) in your GitHub auth provider to ensure users properly authorize the OAuth application during sign-in. This helps prevent permissions syncing issues caused by tokens that lack SSO authorization. +> NOTE: If your GitHub organization enforces SAML SSO, consider configuring [`requiredSsoOrgs`](/admin/auth#github) in your GitHub auth provider to ensure users properly authorize the OAuth application during sign-in. This helps prevent permissions syncing issues caused by tokens that lack SSO authorization. Then, add or edit the GitHub connection as described above and include the `authorization` field: @@ -338,7 +338,7 @@ Repo-centric permission syncing is done by calling the [list repository collabor > IMPORTANT: We strongly recommend configuring both read and write access to associated repositories for permission syncing due to GitHub's token scope requirements. Without write access, there will be a conflict between [user-centric sync](/admin/permissions/syncing#troubleshooting) and repo-centric sync. In that case, [disable repo-centric permission sync](/admin/permissions/syncing#disable-repo-centric-permission-sync) (supported in Sourcegraph 5.0.4+). -> IMPORTANT: Optional, but strongly recommended - [continue with configuring webhooks for permissions](/admin/webhooks/incoming#user-permissions). +> IMPORTANT: Optional, but strongly recommended - [continue with configuring webhooks for permissions](/admin/webhooks/incoming#github). @@ -372,13 +372,13 @@ If you would like internal repositories to remain private, but you're experienci ### Trigger permissions sync from GitHub webhooks -Follow the link to [configure webhooks for permissions for Github](/admin/webhooks/incoming#user-permissions) +Follow the link to [configure webhooks for permissions for Github](/admin/webhooks/incoming#github) ### Teams and organizations permissions caching > NOTE: This is an experimental feature. -> WARNING: The following section is experimental and might not work properly anymore on new Sourcegraph versions (post 4.0+). Please prefer [configuring webhooks for permissions instead](/admin/webhooks/incoming#user-permissions) +> WARNING: The following section is experimental and might not work properly anymore on new Sourcegraph versions (post 4.0+). Please prefer [configuring webhooks for permissions instead](/admin/webhooks/incoming#github) Github code host can leverage caching mechanisms to reduce the number of API calls used when syncing permissions. This can significantly reduce the amount of time it takes to perform a full cycle of permissions sync due to reduced instances of being rate limited by the code host, and is useful for code hosts with very large numbers of users and repositories. diff --git a/docs/admin/code-hosts/rate-limits.mdx b/docs/admin/code-hosts/rate-limits.mdx index 269e8765c..0c013c1f7 100644 --- a/docs/admin/code-hosts/rate-limits.mdx +++ b/docs/admin/code-hosts/rate-limits.mdx @@ -75,4 +75,4 @@ Sourcegraph supports internal rate limit configuration for the following connect - [GitLab](/admin/code-hosts/gitlab#rateLimit) - [Bitbucket Cloud](/admin/code-hosts/bitbucket-cloud#rateLimit) - [Bitbucket Server](/admin/code-hosts/bitbucket-server#rateLimit) -- [Perforce](/admin/repo/perforce#rateLimit) +- [Perforce](/admin/repo/perforce#configuration) diff --git a/docs/admin/config/batch-changes.mdx b/docs/admin/config/batch-changes.mdx index f87655a59..876ae4398 100644 --- a/docs/admin/config/batch-changes.mdx +++ b/docs/admin/config/batch-changes.mdx @@ -332,7 +332,7 @@ However, if the user deletion is permanent, deleting both account and data, then The Batch Spec Library offers curated examples and guided templates that make large-scale code modifications accessible to developers at every skill level. As a site admin you can manage the library. -The library distinguishes between [templates](#templates) and [examples](#library-examples). Examples are batch specs that are meant to be modified by power users who are comfortable with the batch spec syntax. Templates, on the other hand, are batch specs that contain variables that the user can provide data for through form fields without having to modify the batch spec code. +The library distinguishes between [templates](#templates) and [examples](#examples-2). Examples are batch specs that are meant to be modified by power users who are comfortable with the batch spec syntax. Templates, on the other hand, are batch specs that contain variables that the user can provide data for through form fields without having to modify the batch spec code. Sourcegraph instances come with a couple of examples out of the box. You can use the GraphQL APIs to [manage the Batch Spec Library](#managing-the-batch-spec-library). diff --git a/docs/admin/how-to/index.mdx b/docs/admin/how-to/index.mdx index b7cc5d376..16d6aef7a 100644 --- a/docs/admin/how-to/index.mdx +++ b/docs/admin/how-to/index.mdx @@ -8,7 +8,7 @@ - [How to remove users or edit users with the GraphQL API](/admin/how-to/mutate-user-api) - [How to manage feature flags with the GraphQL API](/admin/how-to/manage-feature-flags-with-graphql) - [How to troubleshoot a failure to update repositories when new repositories are added](/admin/how-to/update-repo-failure) -- [How to purge deleted repository data from Sourcegraph](/admin/how-to/remove-repo#manually-purge-deleted-repository-data-from-disk) +- [How to purge deleted repository data from Sourcegraph](/admin/how-to/remove-repo#remove-corrupted-repository-data-from-sourcegraph) - [How to address common monorepo problems](/admin/how-to/monorepo-issues) - [How to import a set of internal repositories to Sourcegraph](/admin/how-to/internal-github-repos) - [Migrating code intelligence data from LSIF to SCIP (Sourcegraph 4.5 -> 4.6)](/admin/how-to/lsif-scip-migration) diff --git a/docs/admin/permissions/index.mdx b/docs/admin/permissions/index.mdx index 5bd8b24a7..ee4da4d93 100644 --- a/docs/admin/permissions/index.mdx +++ b/docs/admin/permissions/index.mdx @@ -49,7 +49,7 @@ To set up permissions by [syncing them from a code host](/admin/permissions/sync - [Bitbucket Cloud](/admin/code-hosts/bitbucket-cloud#repository-permissions) - [Bitbucket Server](/admin/code-hosts/bitbucket-server#repository-permissions) - [Gerrit](/admin/code-hosts/gerrit#add-gerrit-as-an-authentication-provider) - - [Perforce](/admin/repo/perforce#repository-permissions) + - [Perforce](/admin/repo/perforce#repository-permissions-beta) - [Azure DevOps](/admin/code-hosts/azuredevops#permissions-syncing) It's also possible to use other methods to get permission data from a code host into the Sourcegraph instance. diff --git a/docs/admin/permissions/webhooks.mdx b/docs/admin/permissions/webhooks.mdx index ff5c7c719..b03d2f117 100644 --- a/docs/admin/permissions/webhooks.mdx +++ b/docs/admin/permissions/webhooks.mdx @@ -35,4 +35,4 @@ not be sent to Sourcegraph. ## Configuring webhooks -Please follow the link for [configuring permission syncing webhooks for GitHub](/admin/webhooks/incoming#user-permissions). +Please follow the link for [configuring permission syncing webhooks for GitHub](/admin/webhooks/incoming#github). diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index f3cdda69e..cf0e4180a 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -16,11 +16,11 @@ To enable Perforce code host connections, a site admin must: 1. Configure which depots are mirrored/synchronized as Git repositories to Sourcegraph: - - [`depots`](/admin/repo/perforce#depots) + - [`depots`](/admin/repo/perforce#configuration) A list of depot paths that can be either a depot root or an arbitrary subdirectory. **Note**: Only `"local"` type depots are supported. - - [`p4.user`](/admin/repo/perforce#p4-user) + - [`p4.user`](/admin/repo/perforce#configuration) The user to be authenticated for `p4` CLI, and should be capable of performing: @@ -35,7 +35,7 @@ To enable Perforce code host connections, a site admin must: - `p4 group` - `p4 users` - - [`p4.passwd`](/admin/repo/perforce#p4-passwd) + - [`p4.passwd`](/admin/repo/perforce#configuration) The ticket to be used for authenticating the `p4.user`. It is recommended to create tickets of users in a group that never expire. Use the command `p4 -u login -p -a` to obtain a ticket value. @@ -62,7 +62,7 @@ It's worthwhile to note some limitations of this process: - When syncing depots [p4-fusion](https://github.com/salesforce/p4-fusion) is used to convert Perforce depots into git repositories so that Sourcegraph can index them. - Rename of a Perforce depot, including changing the depot on the Perforce server or the `repositoryPathPattern` config option, will cause a re-import of the depot. -- Unless [permissions syncing](#repository-permissions) is enabled, Sourcegraph is not aware of the depot permissions, so it can't enforce access restrictions. +- Unless [permissions syncing](#repository-permissions-beta) is enabled, Sourcegraph is not aware of the depot permissions, so it can't enforce access restrictions. ## Perforce labels @@ -77,7 +77,7 @@ This behaviour can be disabled by setting `noConvertLabels` to `true` in the fus ## Repository permissions (Beta) -To enforce file-level permissions for Perforce depots using the [Perforce protects file](https://www.perforce.com/manuals/cmdref/Content/CmdRef/p4_protect.html), include the `authorization` field in the configuration of the Perforce code host connection you created [above](#add-a-perforce-code-host): +To enforce file-level permissions for Perforce depots using the [Perforce protects file](https://www.perforce.com/manuals/cmdref/Content/CmdRef/p4_protect.html), include the `authorization` field in the configuration of the Perforce code host connection you created [above](#add-a-perforce-code-host-connection): ```json { diff --git a/docs/admin/scim.mdx b/docs/admin/scim.mdx index de73c43b8..e3a2f330e 100644 --- a/docs/admin/scim.mdx +++ b/docs/admin/scim.mdx @@ -37,7 +37,7 @@ Sourcegraph supports SCIM 2.0 for provisioning and de-provisioning _users_. ## How to use -To use SCIM, you must have an existing IdP configured as an auth provider on your Sourcegraph instance. For authenticating SCIM requests, we currently support Bearer token authentication. We have a guide for Okta setup [below](#setting-up-okta-as-the-idp). +To use SCIM, you must have an existing IdP configured as an auth provider on your Sourcegraph instance. For authenticating SCIM requests, we currently support Bearer token authentication. We have a guide for Okta setup [below](#configuring-scim-for-okta). To configure: diff --git a/docs/admin/security-event-logs.mdx b/docs/admin/security-event-logs.mdx index 7db2cb09d..54a1a4c6c 100644 --- a/docs/admin/security-event-logs.mdx +++ b/docs/admin/security-event-logs.mdx @@ -112,7 +112,7 @@ This guide goes into the details of Security Event Logging in Sourcegraph ### What if I don't want these events to be logged? -- To turn off all security event logs, you can [set the variable](/admin/audit-log#excessive-audit-logging) in the site config +- To turn off all security event logs, you can [set the variable](/admin/audit-log#configuring) in the site config ### How can I correlate the actorID or userID to a user in the application? diff --git a/docs/admin/webhooks/incoming.mdx b/docs/admin/webhooks/incoming.mdx index da5d3e194..f5e4325f1 100644 --- a/docs/admin/webhooks/incoming.mdx +++ b/docs/admin/webhooks/incoming.mdx @@ -133,11 +133,11 @@ Done! Sourcegraph will now receive webhook events to sync data with lower latenc ### Bitbucket server -The [Sourcegraph Bitbucket Server plugin](/integration/bitbucket-server#sourcegraph-bitbucket-server-plugin) enables the Bitbucket Server / Bitbucket Data Center instance to send webhooks to Sourcegraph. +The [Sourcegraph Bitbucket Server plugin](/integration/bitbucket-server#sourcegraph-bitbucket-plugin) enables the Bitbucket Server / Bitbucket Data Center instance to send webhooks to Sourcegraph. Webhooks with the plugin can be installed globally, which is recommended to cover for all repositories. -1. Install the latest version of the [Sourcegraph Bitbucket Server plugin](/integration/bitbucket-server#sourcegraph-bitbucket-server-plugin) on your Bitbucket Server / Bitbucket Data Center instance. +1. Install the latest version of the [Sourcegraph Bitbucket Server plugin](/integration/bitbucket-server#sourcegraph-bitbucket-plugin) on your Bitbucket Server / Bitbucket Data Center instance. 1. On your Bitbucket Server / Bitbucket Data Center instance, go to **Administration > Add-ons > Sourcegraph** 1. Fill in the **Add a webhook** form - **Name**: A unique name representing your Sourcegraph instance. From a1b792a00e22615d8a6e2b97b89ada07f5df67c4 Mon Sep 17 00:00:00 2001 From: Marc LeBlanc <7050295+marcleblanc2@users.noreply.github.com> Date: Mon, 7 Sep 2026 17:23:46 -0600 Subject: [PATCH 2/2] Leave Perforce schema-key anchors for the schema renderer fix Amp-Thread-ID: https://ampcode.com/threads/T-01a07623-9d65-7356-96b8-2bebb31ffa5a Co-authored-by: Amp --- docs/admin/code-hosts/rate-limits.mdx | 2 +- docs/admin/repo/perforce.mdx | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/admin/code-hosts/rate-limits.mdx b/docs/admin/code-hosts/rate-limits.mdx index 0c013c1f7..269e8765c 100644 --- a/docs/admin/code-hosts/rate-limits.mdx +++ b/docs/admin/code-hosts/rate-limits.mdx @@ -75,4 +75,4 @@ Sourcegraph supports internal rate limit configuration for the following connect - [GitLab](/admin/code-hosts/gitlab#rateLimit) - [Bitbucket Cloud](/admin/code-hosts/bitbucket-cloud#rateLimit) - [Bitbucket Server](/admin/code-hosts/bitbucket-server#rateLimit) -- [Perforce](/admin/repo/perforce#configuration) +- [Perforce](/admin/repo/perforce#rateLimit) diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index cf0e4180a..f3cdda69e 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -16,11 +16,11 @@ To enable Perforce code host connections, a site admin must: 1. Configure which depots are mirrored/synchronized as Git repositories to Sourcegraph: - - [`depots`](/admin/repo/perforce#configuration) + - [`depots`](/admin/repo/perforce#depots) A list of depot paths that can be either a depot root or an arbitrary subdirectory. **Note**: Only `"local"` type depots are supported. - - [`p4.user`](/admin/repo/perforce#configuration) + - [`p4.user`](/admin/repo/perforce#p4-user) The user to be authenticated for `p4` CLI, and should be capable of performing: @@ -35,7 +35,7 @@ To enable Perforce code host connections, a site admin must: - `p4 group` - `p4 users` - - [`p4.passwd`](/admin/repo/perforce#configuration) + - [`p4.passwd`](/admin/repo/perforce#p4-passwd) The ticket to be used for authenticating the `p4.user`. It is recommended to create tickets of users in a group that never expire. Use the command `p4 -u login -p -a` to obtain a ticket value. @@ -62,7 +62,7 @@ It's worthwhile to note some limitations of this process: - When syncing depots [p4-fusion](https://github.com/salesforce/p4-fusion) is used to convert Perforce depots into git repositories so that Sourcegraph can index them. - Rename of a Perforce depot, including changing the depot on the Perforce server or the `repositoryPathPattern` config option, will cause a re-import of the depot. -- Unless [permissions syncing](#repository-permissions-beta) is enabled, Sourcegraph is not aware of the depot permissions, so it can't enforce access restrictions. +- Unless [permissions syncing](#repository-permissions) is enabled, Sourcegraph is not aware of the depot permissions, so it can't enforce access restrictions. ## Perforce labels @@ -77,7 +77,7 @@ This behaviour can be disabled by setting `noConvertLabels` to `true` in the fus ## Repository permissions (Beta) -To enforce file-level permissions for Perforce depots using the [Perforce protects file](https://www.perforce.com/manuals/cmdref/Content/CmdRef/p4_protect.html), include the `authorization` field in the configuration of the Perforce code host connection you created [above](#add-a-perforce-code-host-connection): +To enforce file-level permissions for Perforce depots using the [Perforce protects file](https://www.perforce.com/manuals/cmdref/Content/CmdRef/p4_protect.html), include the `authorization` field in the configuration of the Perforce code host connection you created [above](#add-a-perforce-code-host): ```json {